1/数据库原理与应用滁州学院计算机与信息工程学院2/第20讲数据库应用开发•学习目标–能够使用某种数据库访问技术进行简单的数据库应用开发3/目录数据库应用开发实践34/ADO编程对象模型•ADO提供类和对象以完成以下活动:–连接到数据源(Connection),并可选择开始一个事务;–可选择创建对象来表示SQL命令(Command);–可选择在SQL命令中指定列、表和值作为变量参数(Parameter);–执行命令(Command、Connection或Recordset);–如果命令按行返回,则将行存储在缓存中(Recordset);–可选择创建缓存视图,以便能对数据进行排序、筛选和定位(Recordset);–通过添加、删除或更改行和列编辑数据(Recordset);–在适当情况下,使用缓存中的更改内容来更新数据源(Recordset);–如果使用了事务,则可以接受或拒绝在完成事务期间所作的更改并结束事务(Connection)5/ADO对象模型中的对象及其说明对象说明Connection代表打开的、与数据源的连接CommandCommand对象定义了将对数据源执行的指定命令Parameter代表与基于参数化查询或存储过程的Command对象相关联的参数或自变量Recordset代表来自基本表或命令执行结果的记录的集合。任何时候,Recordset对象所指的当前记录均为集合内的单个记录Field代表使用普通数据类型的数据的列Error包含与单个操作(涉及提供者)有关的数据访问错误的详细信息Property代表由提供者定义的ADO对象的动态特性6/ADO数据集合及其说明集合说明Errors包含为响应涉及提供者的单个错误而创建的所有Error对象。Fields包含Recordset对象的所有Field对象。Parameters包含Command对象的所有Parameter对象。Properties包含指定对象实例的所有Property对象。7/ADO对象和数据集合之间的关系8/基于VC的数据库应用开发•在VisualC++中使用ADO有3种不同的方法:–直接使用ADOData控件;–使用智能指针操作;–使用VisualC++ExtensionsforADO(简称为ADOExtensions)。由于ADO基于COM技术,因此可以使用调用COM接口的方式使用ADO9/使用ADOData控件访问数据库10/11/12/13/14/使用ADO智能指针来操纵数据库的方法•引入ADO库文件:#importC:\ProgramFiles\commonfiles\system\ado\msado15.dllno_namespacerename(EOF,adoEOF)•初始化OLE/COM库环境BOOLCMyAdoApp::InitInstance(){if(!AfxOleInit())//这就是初始化COM库{AfxMessageBox(OLE初始化出错!);returnFALSE;}……}15/•创建Connection对象并连接数据库•首先需要声明一个指向Connection对象的指针,然后创建Connection连接对象,并打开与数据源的连接_ConnectionPtrm_pConn;m_pConn.CreateInstance(ADODB.Connection);//创建Connection对象m_pConn-Open(Provider=SQLOLEDB.1;PersistSecurityInfo=False;UserID=sa;InitialCatalog=ScoreDB;DataSource=dbserver,,,adModeUnknown);//连接数据库16/•执行SQL命令并取得结果记录集_RecordsetPtrm_pRecordset;m_pRecordset.CreateInstance(ADODB.Recordset);•执行SQL语句的方法:–利用Connection对象的Execute方法执行SQL命令–利用Command对象来执行SQL命令–直接用Recordset对象进行查询取得记录集17/•添加记录:–使用Connection对象的Execute方法–使用Command对象的Execute方法。–使用Recordset对象的方法实现记录的添加操作•使用AddNew方法•使用PutCollect方法•使用Update方法•修改记录:–既可以使用Connection对象或者Command对象的Execute方法,也可以使用Recordset对象的方法来实现记录的修改操作18/•删除记录:除了使用Connection对象或者Command对象的Execute方法外,也可以使用Recordset对象的Delete方法来实现记录的删除操作•关闭记录集和连接:记录集和连接都可以用Close方法来关闭•使用事务:ADO库支持事务操作–BeginTrans:开始新事务–CommitTrans:保存任何更改并结束当前事务,它也可能启动新事务–RollbackTrans:取消当前事务中所作的任何更改并结束事务,它也可能启动新事务19/作业