C使用ADO及访问数据库.ppt

上传人:max****ui 文档编号:12558610 上传时间:2020-05-11 格式:PPT 页数:19 大小:624.31KB
返回 下载 相关 举报
C使用ADO及访问数据库.ppt_第1页
第1页 / 共19页
C使用ADO及访问数据库.ppt_第2页
第2页 / 共19页
C使用ADO及访问数据库.ppt_第3页
第3页 / 共19页
点击查看更多>>
资源描述
ADO数据库编程,第七章,2,回顾,设计应用程序菜单为应用程序添加快捷键弹出式菜单的设计工具栏编程状态栏编程树控件及列表控件的使用,3,本章目标,了解MFC下各种访问数据库的方式主要掌握ADO主要导出接口掌握使用ADO进行数据库操作,4,ODBC、DAO和OLEDB,ODBC(开放数据库接口)是一种标准的基于SQL的接口,它提供了应用程序与数据库之间的接口,使得任何一个数据库都可以通过ODBC驱动程序与指定的DBMS相连DAO使用Jet数据库引擎形成一系列的数据访问对象:数据库对象、表和查询对象、记录集对象等。可以打开一个Access数据库文件(MDB文件),也可直接打开一个ODBC数据源以及使用Jet引擎打开一个ISAM(被索引的顺序访问方法)类型的数据源(dBASE、FoxPro、Paradox、Excel或文本文件)。OLEDB试图提供一种统一的数据访问接口,并能处理除了标准的关系型数据库中的数据之外,还能处理包括邮件数据、Web上的文本或图形、目录服务(DirectoryServices)以及主机系统中的IMS和VSAM数据。OLEDB提供一个数据库编程COM(组件对象模型)接口,使得数据的使用者(应用程序)可以使用同样的方法访问各种数据,而不用考虑数据的具体存储地点、格式或类型。这个COM接口与ODBC相比,其健壮性和灵活性要高得多。,5,MFCODBC技术,MFC的ODBC类对较复杂的ODBCAPI进行了封装,提供了简化的调用接口CDatabase类:主要功能是建立与数据源的连接,可以在整个应用程序中共享这些信息。CRecordset类:代表从数据源选择的一组记录。CRecordset类允许指定要运行的SQL查询,它将运行查询并维护自数据库返回的记录集。可以修改和更新记录,还可增加、删除记录,并将所做的变动反馈到该数据库中。CRecordView类:提供了一个表单视图与某个记录集直接相连,利用对话框数据交换(DDX)机制在记录集与表单视图的控件之间传输数据。CFieldExchange类:支持记录字段数据交换(DFX),即记录集字段数据成员与相应的数据库的标的字段之间的数据交换。CDBException类:代表ODBC类产生的异常。,6,ADO,ADO是目前在Windows环境中比较流行的客户端数据库编程技术。它是Microsoft为最新和最强大的数据访问范例OLEDB而设计的,是一个便于使用的应用程序层接口。ADO使用户应用程序能够通过“OLEDB提供者”访问和操作数据库服务器中的数据。由于它兼具有强大的数据处理功能(处理各种不同类型的数据源、分布式的数据处理等等)和极其简单、易用的编程接口,因而得到了广泛的应用。ADO技术基于COM(ComponentObjectModel,组件对象模型),具有COM组件的许多优点,可以用来构造可复用应用框架,被多种语言支持,能够访问包括关系数据库、非关系数据库及所有的文件系统。另外,ADO还支持各种B/S与基于Web的应用程序,具有远程数据服务RDS(RemoteDataService)的特性,是远程数据存取的发展方向。,7,ADO对象模型,连接对象Connection通过连接可以从应用程序中访问数据源。连接时必须指定要连接的数据源以及连接所使用的用户名和用户口令。命令对象Command可以通过已建立的连接发出命令,从而对数据源进行指定操作。一般情况下,命令可以在数据源中添加、修改或删除数据,也可以检索数据。参数对象Parameter在执行命令时可以指定参数,参数可以在命令发布之前进行更改。例如,可以重复发出相同的数据检索命令,但是每一次指定的检索条件不同。记录集对象Recordset查询命令可以将查询结果储存在本地,这些数据以行为单位,返回数据的集合被称为记录集字段对象Field一个记录集包含一个或多个字段。每一字段(列)都包含名称、数据类型和值属性。错误对象Error错误可随时在程序中发生,通常是由于无法建立连接、执行命令或对某些状态的对象进行操作。属性对象Property,8,ADO的4种类型的集合,Connection对象具有Errors集合,包含为响应与数据源有关的单一错误而创建的所有Error对象。Command对象具有Parameters集合,包含应用于Command对象的所有Parameter对象。Recordset对象具有Fields集合,包含Recordset对象中所有列的Field对象。Connection对象、Command对象、Recordset对象和Field对象都具有Properties集合,它包含各个对象的Property对象。,9,使用ADO创建数据库应用程序,在MFC应用程序中使用ADO数据库的一般过程是:添加对ADO的支持;创建一个数据源连接;对数据源中的数据库进行操作;关闭数据源。,10,引入ADO库,在VisualC+中,使用ADO开发数据库之前需要引入ADO库。可以在StdAfx.h文件末尾处引入ADO库文件#endif/_AFX_NO_AFXCMN_SUPPORT#include/MFCsupportforWindowsCommonControls#importC:ProgramFilesCommonFilesSystemADOmsado15.dllno_namespacerename(EOF,adoEOF)#include/AFX_INSERT_LOCATION预编译命令#import是编译器将此命令中所指定的动态链接库文件引入到程序中,并从动态链接库文件中抽取出其中的对象和类的信息。icrsint.h文件包含了VisualC+扩展的一些预处理指令、宏等的定义,用于与数据库数据绑定。,11,连接到数据库2-1,在能够使用ADO对象之前,必须为应用程序初始化COM环境BOOLCADOApp:InitInstance():CoInitialize(NULL);AfxEnableControlContainer();建立数据库的连接需要使用连接对象Connection。首先定义一个_ConnectionPtr类型指针,然后调用CreateInstance方法实例化,例如:_ConnectionPtrm_pConnection;m_pConnection.CreateInstance(_uuidof(Connection);,12,连接到数据库2-2,ADO使用Connection对象来建立与数据库服务器的连接,它相当于MFC中的CDatabase类。和CDatabase类一样,调用Connection对象的Open即可建立与服务器的连接函数原型:HRESULTConnection:Open(_bstr_tConnectionString,_bstr_tUserID,_bstr_tPassword,longOptions)参数:ConnectionString为连接字串,UserID是用户名,Password是登录密码,Options是选项,通常用于设置同步和异步等方式。_bstr_t是一个COM类,用于字符串BSTR(用于Automation的宽字符)操作。不同的数据,其连接字串有所不同:,13,Connection对象,Connection对象除了建立与数据库服务器的连接外,还可以通过OpenSchema来获取数据源的自有信息,如:数据表信息、表字段信息以及所支持的数据类型等。OpenSchema方法中的adSchemaColumns是一个预定义的枚举常量,用来获取与“列”(字段)相关的信息记录集。该信息记录集的主要字段名有“TABLE_NAME”、“COLUMN_NAME”;类似的,若在OpenSchema方法中指定adSchemaTables枚举常量,则返回的记录集的字段名主要有“TABLE_NAME”、“TABLE_TYPE”。,14,Recordset对象,上述的OpenSchema函数返回的是记录集指针_RecordsetPtr,对应类型Recordset对象_RecordsetPtr指针与数据库是的游标类似,可以遍历一到多个记录集,常用指针指向操作有指向下一条记录MoveNext()、指向上一条记录MovePrevious()、指向第一条记录MoveFirst()、指向最后一条记录MoveLast()、指向下一个记录集NextRecordset()访问对应字段记录值用GetCollect(字段名)或Fields-GetItem(字段名)-GetValue(),15,例子3-1,(1)用MFCAppWizard创建一个默认的单文档应用程序Ex_ADO,但在向导的第6步将CEx_ADOView的基类由默认的CView选择为CListView类,以便更好地显示和操作数据表中的记录。(2)在CEx_ADOView:PreCreateWindow函数添加下列代码,用来设置列表视图内嵌列表控件的风格:BOOLCEx_ADOView:PreCreateWindow(CREATESTRUCT/_ConnectionPtr、_RecordsetPtr和_CommandPtr分别是ADO对象Connection、Recordset和Command的智能指针类型。,16,3-2,voidCEx_ADOView:OnInitialUpdate()CListView:OnInitialUpdate();m_pConnection.CreateInstance(_uuidof(Connection);/初始化Connection指针m_pRecordset.CreateInstance(_uuidof(Recordset);/初始化Recordset指针m_pCommand.CreateInstance(_uuidof(Command);/初始化Recordset指针/连接数据源为DatabaseExampleForVC+m_pConnection-ConnectionString=DSN=DatabaseExampleForVC+;m_pConnection-ConnectionTimeout=30;/允许连接超时时间,单位为秒HRESULThr=m_pConnection-Open(,0);if(hr!=S_OK)MessageBox(无法连接指定的数据库!);/获取数据表名和字段名_RecordsetPtrpRstSchema=NULL;/定义一个记录集指针pRstSchema=m_pConnection-OpenSchema(adSchemaColumns);/获取表信息/将表信息显示在列表视图控件中CListCtrl,17,3-3,for(inti=0;iadoEOF)str.Format(%d,nItem+1);m_ListCtrl.InsertItem(nItem,str);for(inti=1;iFields-GetItem(_bstr_t)(LPCSTR)strHeaderi)-Value;m_ListCtrl.SetItemText(nItem,i,value);pRstSchema-MoveNext();nItem+;pRstSchema-Close();,18,数据其它操作,Command对象专门用来操作数据库命令,如添加记录,删除记录,修改记录。当然也可以用它来返回数据集,比如调用数据库中的存储过程,就可以返回一到多个记录集,在该过程中可能会用到Parameter参数对象此外,为了确保数据的一致性等要求,可能还会用到数据库事务处理,即连接对象的操作开始事务提交事务,回滚事务等操作,19,总结,本课讲述了以下内容:了解MFC下各种访问数据库的方式主要掌握ADO主要导出接口掌握使用ADO进行数据库操作,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!