VC++程序设计第15讲(数据库编程1)_第1页
VC++程序设计第15讲(数据库编程1)_第2页
VC++程序设计第15讲(数据库编程1)_第3页
VC++程序设计第15讲(数据库编程1)_第4页
VC++程序设计第15讲(数据库编程1)_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VC 程序设计第15讲 数据库编程1 2004 12 07 8 1数据库基本概念 8 1 1数据库可以做什么信息检索从互联网获取的信息很多是从数据库中得到数据共享公司的各个分部之间的数据共享决策支持为个人或者公司决策提供信息支持 8 1数据库基本概念 8 1 2数据 数据库 DBMS和SQL数据对客观事物特征的一种抽象的 符号化的表示数据具有以下特征数据有 类型 和 值 数据受到数据类型和取值范围的约束 8 1数据库基本概念 8 1 2数据 数据库 DBMS和SQL数据库存放数据的仓库 由若干数据库对象组成数据库对象数据表 存放数据的文件 以表格的形式出现视图 虚拟数据表 由查询数据库表产生存储过程 完成特定的功能而汇集在一起的一组SQL程序语句 经编译后存储在数据库中的SQL程序 8 1数据库基本概念 8 1 2数据 数据库 DBMS和SQLDBMS 数据库管理系统用于管理数据库的计算机软件数据管理用户管理安全控制并发控制每一种数据库都有自己的DBMSAccessSQLServerOracle 8 1数据库基本概念 8 1 2数据 数据库 DBMS和SQLDBMS 数据库管理系统 8 1数据库基本概念 8 1 2数据 数据库 DBMS和SQLSQL 结构化查询语言用于查询和操作数据库的语言SQL需要DBMS支持简单的SQL语法select 从指定表中取出指定的列的数据SELECTselect list INTOnew table FROMtable source WHEREsearch condition GROUPBYgroup by expression HAVINGsearch condition ORDERBYorder expression ASC DESC 8 1数据库基本概念 8 1 2数据 数据库 DBMS和SQLSQL 结构化查询语言简单的SQL语法select示例Select fromcontactSelectname emailfromcontactSelect fromcontactwheregroup str friend Select fromcontactorderbyname 8 1数据库基本概念 8 1 2数据 数据库 DBMS和SQLSQL 结构化查询语言简单的SQL语法Insertinto 在表中插入新行 记录 INSERTINTOtable nameVALUES value1 value2 指定所有字段的值INSERTINTOtable name column1 column2 VALUES value1 value2 指定部分字段的值 8 1数据库基本概念 8 1 2数据 数据库 DBMS和SQLSQL 结构化查询语言简单的SQL语法Insertinto示例InsertintocontactValues jack 2234567 jack friend Insertintocontact name email Values jack jack 8 1数据库基本概念 8 1 2数据 数据库 DBMS和SQLSQL 结构化查询语言简单的SQL语法Update 更新表中原有数据UPDATEtable nameSETcolumn name new valueWHEREcolumn name some valueUpdate示例Updatecontactsetemail tom wherename tom 8 1数据库基本概念 8 1 2数据 数据库 DBMS和SQLSQL 结构化查询语言简单的SQL语法Delete 删除表中的数据DELETEFROMtable nameWHEREcolumn name some valueDelete示例Deletefromcontactwherename tom 更详细的资料可以查看以下链接 8 1数据库基本概念 8 1 3ODBC OpenDatabaseConnectivity 基本概念开放式数据库互连数据库组成部分提供对数据库访问的标准API支持SQL语句工作原理不依赖于任何DBMS 由ODBC驱动完成操作不同的数据库厂商的ODBC驱动是不一样的以统一的ODBCAPI处理异构数据库 8 1数据库基本概念 8 1 3ODBC组成部件应用程序ODBC管理器驱动程序管理器数据源ODBCAPIODBC驱动程序 8 1数据库基本概念 8 1 3ODBC组成部件之间的关系 数据源名 应用程序 ODBC管理器 ODBCAPI SQL 驱动程序管理器 ODBC驱动程序 数据源 应用层 ODBC层 数据层 8 1数据库基本概念 8 1 3ODBC使用ODBC访问数据库的基本流程注册数据源在程序中使用数据源使用ODBCAPI或者SQL访问数据库由驱动程序管理器将API传递给对应的驱动程序驱动程序执行相应操作返回数据 8 1数据库基本概念 8 1 3ODBC注册数据源示例 step1 8 1数据库基本概念 8 1 3ODBC注册数据源示例 step2 8 1数据库基本概念 8 1 3ODBC注册数据源示例 step3 8 1数据库基本概念 8 1 3ODBC注册数据源示例 step4 8 1数据库基本概念 8 1 3ODBC注册数据源示例 step5 8 1数据库基本概念 8 1 3ODBC注册数据源示例 查看已创建的数据源 8 1数据库基本概念 8 1 4VC的多种数据库访问机制ODBCDAO COM技术OLEDB OLE技术ADORDO 8 2基于ODBC的MFC类 8 2 1用于ODBC方式的MFC类概述CDatabase建立与数据源的连接CRecordset操作完成后返回的数据集合CRecordView和记录集关联的表单视图 用于和用户交互CFieldExchange支持记录字段数据交互 8 2基于ODBC的MFC类 8 2 2CDatabase建立连接virtualBOOLOpen LPCTSTRlpszDSN BOOLbExclusive FALSE BOOLbReadOnly FALSE LPCTSTRlpszConnect ODBC BOOLbUseCursorLib TRUE throw CDBException CMemoryException lpszDSN 数据源名称bExclusive 是否独占数据源bReadOnly 是否只读lpszConnect 连接字符串 包含连接信息 8 2基于ODBC的MFC类 8 2 2CDatabase建立连接建立连接示例断开连接virtualvoidClose CDatabasem dbContact m dbContact Open T mydb FALSE FALSE T ODBC m dbContact Close 8 2基于ODBC的MFC类 8 2 2CDatabase测试连接BOOLIsOpen const 获得连接字符串constCString BOOLbOpened m dbContact IsOpen CstringstrConn m dbContact GetConnect CstringstrDBName m dbContact GetDatabaseName 8 2基于ODBC的MFC类 8 2 3CRecordset记录集的相关概念记录集的类型动态集 dynasets 和快照 snapshots 共同点 在建立记录集后就有确定的数据对数据更新的反映能力 下表 E 修改记录 A 增加记录 D 删除记录 S 自己 O 其他用户 8 2基于ODBC的MFC类 8 2 3CRecordset记录集的相关概念字段数据成员和数据交换从CRecordset派生一个子类得到需要的记录集记录中的每一个字段对应子类中的一个数据成员RFX机制用于在程序和记录之间交换数据记录集的功能滚动记录更新记录 修改 删除和添加记录排序和记录过滤 8 2基于ODBC的MFC类 8 2 3CRecordset记录集建立和关闭记录集是某一个查询的结果记录集的建立构造记录集对象CRecordset CDatabase pDatabase NULL pDatabase指向CDatabase对象 用来获取数据源pDatabase为空则自动创建一个CDatabase对象如果CDatabase对象没有和数据源连接 CRecordset对象的Open函数中会建立连接 连接数据源所用的字符串 由GetDefaultConnect提供 8 2基于ODBC的MFC类 8 2 3CRecordset记录集建立和关闭记录集的建立调用Open函数查询数据源中的记录并建立记录集virtualBOOLOpen UINTnOpenType AFX DB USE DEFAULT TYPE LPCTSTRlpszSQL NULL DWORDdwOptions none throw CDBException CMemoryException 8 2基于ODBC的MFC类 8 2 3CRecordset记录集建立和关闭记录集的建立Open函数的参数说明nOpenType 记录集的类型lpszSQL SQL语句或者表名 为空时使用GetDeafultSQL函数的返回值dwOption 选项需要重载的几个成员函数virtualCStringGetDefaultConnect return T ODBC DSN mydb 8 2基于ODBC的MFC类 8 2 3CRecordset记录集建立和关闭记录集的建立需要重载的几个成员函数virtualCStringGetDefaultSQL 用于更新数据的函数virtualBOOLRequery CStringCDBTestSet GetDefaultSQL return T contact 8 2基于ODBC的MFC类 8 2 3CRecordset记录集建立和关闭记录集的建立过滤记录和记录排序CRecordset m strFilter用于过滤记录 ExampleforCRecordset m strFilterCContactSetrsContactSet NULL 设置过滤字符串rsContactSet m strFilter group str friend 执行过滤操作rsContactSet Open CRecordset snapshot Contact 8 2基于ODBC的MFC类 8 2 3CRecordset记录集建立和关闭记录集的建立过滤记录和记录排序CRecordset m strSort用于记录排序 ExampleforCRecordset m strSortCContactSetrsContactSet NULL 设置排序字符串rsContactSet m strSort name 执行排序操作rsContactSet Open CRecordset snapshot Contact 8 2基于ODBC的MFC类 8 2 3CRecordset记录集建立和关闭关闭记录集virtualvoidClose 关闭记录集后可以再次调用Open建立新的记录集 CContactSetrsContactSet NULL if rsContactSet Open returnFALSE 使用记录集 关闭记录集rsContactSet Close 8 2基于ODBC的MFC类 8 2 3CRecordset滚动记录记录集滚动函数CRecordset MoveNext滚动到下一条记录CRecordset MovePrev滚动到上一条记录CRecordset MoveFirst滚动到第一条记录CRecordset MoveLast滚动到最后一条记录 8 2基于ODBC的MFC类 8 2 3CRecordset滚动记录记录集滚动函数CRecodeset Move longnRows WORDwFetchType SQL FETCH RELATIVE nRows 滚动的记录数 正值向记录集末尾滚动 负值向记录集起点滚动nRows为0 刷新当前记录 结束编辑模式或添加模式并恢复原来的值CRecordset SetAbsolutePosition longnRows nRows 定位记录的序号 从1开始 8 2基于ODBC的MFC类 8 2 3CRecordset滚动记录记录集边界判断函数CRecordset IsBOF是否在第一条记录之前CRecordset IsEOF是否在最后一条记录之后 8 2基于ODBC的MFC类 打开记录集 第一条记录是当前记录CContactSetrsContactSet NULL rsContactSet Open if rsContactSet IsBOF return 空记录集 滚动到记录集末尾 未选中任何记录while rsContactSet IsEOF rsContactSet MoveNext 滚动到最后一条记录rsContactSet MoveLast 滚到到记录集开始 未选中任何记录while rsContactSet IsBOF rsContactSet MovePrev 滚动到第一条记录rsContactSet MoveFirst 8 2基于ODBC的MFC类 8 2 3CRecordset修改 添加和删除记录修改记录调用CRecordset Edit进入编辑模式将当前字段数据成员值保存到缓冲区若再次调用Edit则恢复保存的数据 且仍处于编辑模式若调用Move 0 可退出编辑模式 并恢复字段数据成员的值设置字段数据成员的新值调用CRecordset Update完成编辑操作Update将变化后的记录写入数据源并退出编辑模式 8 2基于ODBC的MFC类 8 2 3CRecordset修改 添加和删除记录修改记录修改记录示例 进入编辑模式rsContactSet Edit 修改字段数据成员rsContactSet m name tom rsContactSet m email tom 完成编辑操作if rsContactSet Update 更新失败时的处理 8 2基于ODBC的MFC类 8 2 3CRecordset修改 添加和删除记录添加记录调用CRecordset AddNew进入添加模式将当前字段数据成员值保存到缓冲区若再次调用AddNew则恢复保存的数据 且仍处于添加模式若调用Move 0 可退出添加模式 并恢复字段数据成员的值设置字段数据成员的值调用CRecordset Update完成添加操作Update将新的记录写入数据源并退出添加模式 8 2基于ODBC的MFC类 8 2 3CRecordset修改 添加和删除记录添加记录添加记录示例 进入添加模式rsContactSet AddNew 设置字段数据成员rsContactSet m name Jack rsContactSet m email jack 完成添加操作if rsContactSet Update 添加失败时的处理 8 2基于ODBC的MFC类 8 2 3CRecordset修改 添加和删除记录删除记录调用CRecordset D

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论