《实验课ADO编程》PPT课件.ppt_第1页
《实验课ADO编程》PPT课件.ppt_第2页
《实验课ADO编程》PPT课件.ppt_第3页
《实验课ADO编程》PPT课件.ppt_第4页
《实验课ADO编程》PPT课件.ppt_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

实验:ADO接口编程,于东 2012上,第十四周,目标: 实现W14_1_ADO程序,使用ADO接口对Access数据库编程。完成后,尝试使用ODBC连接SQL数据库。,2,实验课:使用ADO接口编程,选择formview为基类 核心控件为ListCtrl 设置各种控件、变量、消息响应,3,Step1:建立SDI程序,4,Step2:ADO接口初始化,在stdafx.h中,添加代码: 在工程的InitInstanse函数中,添加代码:,4,4,在View类中添加ADO的3个核心类对象 添加其他变量m_DBFileName; /数据库文件名 long m_nColNum; /字段数量 添加函数: Connect2DB、 GetFiledInfo、 UpdateView、 DeleteItem 添加消息:WM_DESTROY,处理关闭消息 添加函数: PreTranslateMessage,处理del按钮事件,5,Step3:View类设置,重载打开文件按钮 调用打开文件通用对话框,获取数据库名称 依次调用: Connect2DB(m_DBFileName); /连接到数据库 GetFiledInfo(); /获取表信息并显示 UpdateView(); /遍历表中所有记录并显示,6,Step4:Open按钮,根据数据库名称,连接数据库。 创建记录集,写一个SQL语句,通过open方法,获取数据库中所有记录。,7,Step5: Connect2DB,判断数据库打开状态 定义字段对象数组, 获取字段数量,以及字段名称 清空当前ListCtrl所有内容和所有列 将字段信息填入到ListCtrl,8,Step6: GetFiledInfo,检查数据库状态 清空当前listctrl内容 判断当前记录集是否为空,如果不为空,则移动指针到第一条 遍历记录集,读取每条数据,显示在list中,9,Step7: UpdateView,检查数据库状态 检查控件输入是否完整,用“NULL”将不完整部分补足 向当前记录集中添加一条记录。 调用update方法,将记录集更新到数据库,10,Step8:Add按钮,在PreTranslateMessage中,响应按纽事件,判断:如果按钮为del键,并且当前listctrl控件为“焦点控件”,则调用deleteitem 在DeleteItem中,获取当前list中选中的条目,在全局记录集中删除对应的条目,更新记录集 这里有一个bug:当list显示的是查找结果时,会错删。解决方法:在view类中定义一个“查找结果”记录集对象。并判断当前显示的是查找结果记录集还是全局记录集。,11,Step9:删除记录,定义查询的SQL语句 定义查询记录集对象 调用connection对象的execute方法,查询结果,返回给记录集 遍历记录集,将记录读取显示在list中,12,Step10:Find,刷新函数中,直接调用updateview Destroy函数中,判断数据库状态,关闭数据库连接。,13,Step11:flush 、 destroy,要学习的内容: 导入Ado动态链接库 连接数据库 执行数据库命令 用记录集操作数据,14,ADO接口基本使用方法,使用ADO接口,比使用DAO要复杂一些,要首先导入动态链接库。 Step1:在stdafx.h中,添加代码: 这里,通过#import命令将dll导入,根据机器不同,dll文件存放的位置和名称也有可能不同,但肯定都是msdaoXX.dll,15,ADO接口使用导入DLL(1),Step2:在工程的InitInstanse函数中,添加代码: Step3:在View类中,添加三个ADO对象指针:,16,ADO接口使用导入DLL(2),ADO的DLL中给出的Connction对象为指针类型,因此在使用该对象前,类似c+中的 new操作,需要首先为该指针创建一个实例: HRESULT hr; hr = m_pConnection.CreateInstance(“ADODB.Connection“); 其中, ADODB.Connection指定了要连接数据库的类型,17,ADO接口使用连接数据库(1),使用Connction对象的Open方法连接数据库,原型: _bstr_t 是一个COM组件集中处理字符串的类, 连接字符串指定了要连接的数据库的类型、名称等信息,是正确连接的关键,18,ADO接口使用连接数据库(2),ADO通过ConnectionString实现对不同类型数据库的支持 掌握两种连接字符串,Access、SQL: 连接Access数据库: m_pConnection-ConnectionString = “Provider=Microsoft.Jet.OLEDB.4.0; Data Source=student.mdb;“ ; m_pConnection-Open(“,“,“,0); 连接SQL数据库: m_pConnection-ConnectionString = “Provider=SQLOLEDB; Data Source= servername; Initial Catalog= databasename; User ID=userid;Password=password;”; m_pConnection-Open(“”,“”,“”,0);,19,ADO接口使用连接数据库(3),关闭连接 在view类中添加WM_DESTROY消息响应,在其中添加判断代码:,20,ADO接口使用连接数据库(4),这也是在程序中判断连接是否有效的方法,ADO的Connection对象可以直接通过Execute函数执行数据库命令,函数原型: _RecordsetPtr Execute ( _bstr_t CommandText, /SQL语句命令行 VARIANT * RecordsAffected, /符合命令的记录数 long Options ) /指明执行命令的类型,21,ADO接口使用执行命令(1),当需要执行复杂命令,或者执行带参数命令的时候,需要使用Command对象对数据库进行操作。步骤: Step1: 创建Command对象实例 HRESULT hrcommand; hrcommand = m_pCommand.CreateInstance( _uuidof(Command) ); Step2: 将Command对象与Connection对象绑定 m_pCommand-ActiveConnection = m_pConnection;,22,ADO接口使用执行命令(2),Step3: 指定操作命令SQL语句 m_pCommand-CommandText = “Select * From StudentInfo“; Step4: 执行命令,结果返回到记录集对象 ptmpRecordSet = m_pCommand-Execute();,23,ADO接口使用执行命令(3),带有参数的SQL命令的执行,比如一个选择语句: SELECT * FROM studentinfo WHERE number=1001 在DAO编程中,如果number要改变,就要重新拼这个语句,当参数繁多时,非常麻烦。 ADO的Command对象支持在SQL中自定义参数,解决该问题。 这部分,不深入介绍,通过一个典型例子来学习,24,ADO接口使用执行命令(4),25,ADO接口使用执行命令(5),数据库中的数据,通过记录集对象Recordset来访问和修改。 ADO创建记录集的方法与其他对象一致: _RecordsetPtr pRecordset; pRecordset.CreateInstance( _uuidof(Recordset) ) ; 记录集对象通常作为Execute语句或者Command执行语句的返回值使用。 也可以直接通过Open方法,直接填入一个SQL语句,返回查询结果。与DAO方法类似。,26,ADO接口使用记录集对象(1),记录集对象的Open方法,函数原型: HRESULT Open ( const _variant_t & Source, /SQL语句 const _variant_t & ActiveConnection, /连接对象指针 enum CursorTypeEnum CursorType, enum LockTypeEnum LockType, long Options) /注意:后4三个参数,按照实例设定即可 如下实例:,27,ADO接口使用记录集对象(2),遍历记录集:记录集可以看作一个数组,ADO提供了几种方法在记录集中移动指针,实现遍历。 MoveFirst:指向第一条记录 MoveLast:指向最后一条记录 MoveNext:向下移动一条 MovePrev:向上移动一条 Move:根据绝对索引号移动指针 稍后实例中即见使用方法,28,ADO接口使用记录集对象(3),获取字段信息,看代码:,29,ADO接口使用记录集对象(4),获取记录集中的数据 记录集对象保存着“当前记录”的指针,因此使用记录集对象,要首先对要操作的记录定位。 定位后,访问一个记录中的对象有下面两种方式: 第一种:如果知道表中的具体字段名,访问方法: m_pRecordset-GetCollect(字段名); 第二种:如果不知道具体字段名,访问方法: m_pRecordset-Fields-Itemi-Value;,30,ADO接口使用记录集

温馨提示

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

评论

0/150

提交评论