知识大全 ADO第一次亲密接触 -- ADO开发实践
Posted 命令
篇首语:四方食事,不过一碗人间烟火。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 ADO第一次亲密接触 -- ADO开发实践相关的知识,希望对你有一定的参考价值。
ADO第一次亲密接触 -- ADO开发实践 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
一 ADO简介 ADO(ActiveX Data Object)是Microsoft数据库应用程序开发的新接口 是建立在OLE DB之上的高层数据库访问技术 请不必为此担心 即使你对OLE DB 不了解也能轻松对付ADO 因为它非常简单易用 甚至比你以往所接触的ODBC API DAO RDO都要容易使用 并不失灵活性 本文将详细地介绍在VC下如何使用ADO来进行数据库应用程序开发 并给出示例代码 本文示例代码 二 基本流程 万事开头难 任何一种新技术对于初学者来说最重要的还是 入门 掌握其要点 让我们来看看ADO数据库开发的基本流程吧! ( )初始化库 引入ADO库定义文件 ( )用Connection对象连接数据库 ( )利用建立好的连接 通过Connection Command对象执行SQL命令 或利用Recordset对象取得结果记录集进行查询 处理 ( )使用完毕后关闭连接释放对象 准备工作: 为了大家都能测试本文提供的例子 我们采用Access数据库 您也可以直接在我们提供的示例代码中找到这个test mdb 下面我们将详细介绍上述步骤并给出相关代码 【 】库的初始化 我们可以使用AfxOleInit()来初始化库 这项工作通常在CWinApp::InitInstance()的重载函数中完成 请看如下代码: BOOL CADOTest App::InitInstance() AfxOleInit(); 【 】用#import指令引入ADO类型库 我们在stdafx h中加入如下语句 (stdafx h这个文件哪里可以找到?你可以在FileView中的Header Files里找到) #import c:\\program files\\mon files\\system\\ado\\msado dll no_namespace rename( EOF adoEOF ) 这一语句有何作用呢?其最终作用同我们熟悉的#include类似 编译的时候系统会为我们生成msado tlh ado tli两个C++头文件来定义ADO库 几点说明: ( ) 您的环境中msado dll不一定在这个目录下 请按实际情况修改 ( ) 在编译的时候肯能会出现如下警告 对此微软在MSDN中作了说明 并建议我们不要理会这个警告 msado tlh( ) : warning C : unary minus operator applied to unsigned type result still unsigned 【 】创建Connection对象并连接数据库 首先我们需要添加一个指向Connection对象的指针: _ConnectionPtr m_pConnection; 下面的代码演示了如何创建Connection对象实例及如何连接数据库并进行异常捕捉 BOOL CADOTest Dlg::OnInitDialog() CDialog::OnInitDialog(); HRESULT hr; try hr = m_pConnection CreateInstance( ADODB Connection );///创建Connection对象 if(SUCCEEDED(hr)) hr = m_pConnection >Open( Provider=Microsoft Jet OLEDB ;Data Source=test mdb adModeUnknown);///连接数据库 ///上面一句中连接字串中的Provider是针对ACCESS 环境的 对于ACCESS 需要改为:Provider=Microsoft Jet OLEDB ; catch(__error e)///捕捉异常 CString errormessage; errormessage Format( 连接数据库失败!\\r\\n错误信息:%s e ErrorMessage()); AfxMessageBox(errormessage);///显示错误信息 在这段代码中我们是通过Connection对象的Open方法来进行连接数据库的 下面是该方法的原型 HRESULT Connection ::Open ( _bstr_t ConnectionString _bstr_t UserID _bstr_t Password long Options ) ConnectionString为连接字串 UserID是用户名 Password是登陆密码 Options是连接选项 用于指定Connection对象对数据的更新许可权 Options可以是如下几个常量: adModeUnknown:缺省 当前的许可权未设置 adModeRead:只读 adModeWrite:只写 adModeReadWrite:可以读写 adModeShareDenyRead:阻止其它Connection对象以读权限打开连接 adModeShareDenyWrite:阻止其它Connection对象以写权限打开连接 adModeShareExclusive:阻止其它Connection对象打开连接 adModeShareDenyNone:允许其它程序或对象以任何权限建立连接 我们给出一些常用的连接方式供大家参考: ( )通过JET数据库引擎对ACCESS 数据库的连接 m_pConnection >Open( Provider=Microsoft Jet OLEDB ;Data Source=C:\\\\test mdb adModeUnknown); ( )通过DSN数据源对任何支持ODBC的数据库进行连接: m_pConnection >Open( Data Source=adotest;UID=sa;PWD=; adModeUnknown); ( )不通过DSN对SQL SERVER数据库进行连接 m_pConnection >Open( driver=SQL Server;Server= ;DATABASE=vckbase;UID=sa;PWD= adModeUnknown); 其中Server是SQL服务器的名称 DATABASE是库的名称 Connection对象除Open方法外还有许多方法 我们先介绍Connection对象中两个有用的属性ConnectionTimeOut与State ConnectionTimeOut用来设置连接的超时时间 需要在Open之前调用 例如: m_pConnection >ConnectionTimeout = ;///设置超时时间为 秒 m_pConnection >Open( Data Source=adotest; adModeUnknown); State属性指明当前Connection对象的状态 表示关闭 表示已经打开 我们可以通过读取这个属性来作相应的处理 例如: if(m_pConnection >State) m_pConnection >Close(); ///如果已经打开了连接则关闭它 【 】执行SQL命令并取得结果记录集 为了取得结果记录集 我们定义一个指向Recordset对象的指针:_RecordsetPtr m_pRecordset; 并为其创建Recordset对象的实例: m_pRecordset CreateInstance( ADODB Recordset ); SQL命令的执行可以采用多种形式 下面我们一进行阐述 ( )利用Connection对象的Execute方法执行SQL命令 Execute方法的原型如下所示: _RecordsetPtr Connection ::Execute ( _bstr_t CommandText VARIANT * RecordsAffected long Options ) 其中CommandText是命令字串 通常是SQL命令 参数RecordsAffected是操作完成后所影响的行数 参数Options表示CommandText中内容的类型 Options可以取如下值之一 adCmdText:表明CommandText是文本命令 adCmdTable:表明CommandText是一个表名 adCmdProc:表明CommandText是一个存储过程 adCmdUnknown:未知 Execute执行完后返回一个指向记录集的指针 下面我们给出具体代码并作说明 _variant_t RecordsAffected; ///执行SQL命令 CREATE TABLE创建表格users users包含四个字段:整形ID 字符串username 整形old 日期型birthday m_pConnection >Execute( CREATE TABLE users(ID INTEGER username TEXT old INTEGER birthday DATETIME) &RecordsAffected adCmdText); ///往表格里面添加记录 m_pConnection >Execute( INSERT INTO users(ID username old birthday) VALUES ( Washington / / ) &RecordsAffected adCmdText); ///将所有记录old字段的值加一 m_pConnection >Execute( UPDATE users SET old = old+ &RecordsAffected adCmdText); ///执行SQL统计命令得到包含记录条数的记录集 m_pRecordset = m_pConnection >Execute( SELECT COUNT(*) FROM users &RecordsAffected adCmdText); _variant_t vIndex = (long) ; _variant_t vCount = m_pRecordset >GetCollect(vIndex);///取得第一个字段的值放入vCount变量 m_pRecordset >Close();///关闭记录集 CString message; message Format( 共有%d条记录 vCount lVal); AfxMessageBox(message);///显示当前记录条数 ( )利用Command对象来执行SQL命令 _CommandPtr m_pCommand; m_pCommand CreateInstance( ADODB Command ); _variant_t vNULL; vNULL vt = VT_ERROR; vNULL scode = DISP_E_PARAMNOTFOUND;///定义为无参数 m_pCommand >ActiveConnection = m_pConnection;///非常关键的一句 将建立的连接赋值给它 m_pCommand >CommandText = SELECT * FROM users ;///命令字串 m_pRecordset = m_pCommand >Execute(&vNULL &vNULL adCmdText);///执行命令 取得记录集 在这段代码中我们只是用Command对象来执行了SELECT查询语句 Command对象在进行存储过程的调用中能真正体现它的作用 下次我们将详细介绍 ( )直接用Recordset对象进行查询取得记录集 例如 m_pRecordset >Open( SELECT * FROM users _variant_t((IDispatch *)m_pConnection true) adOpenStatic adLockOptimistic adCmdText); Open方法的原型是这样的: HRESULT Recordset ::Open ( const _variant_t & Source const _variant_t & ActiveConnection enum CursorTypeEnum CursorType enum LockTypeEnum LockType long Options ) 其中 ①Source是数据查询字符串 ②ActiveConnection是已经建立好的 cha138/Article/program/net/201311/13775相关参考
最佳实践ADO.NET实用经验无保留曝光 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
这两天重温经典对的东西稍微深入的了解了一下顺便写点代码练练手全当是复习笔记吧 一简单说说的大常用对象 既然说
五dal层数据访问实现 在这里我们使用前一篇文章里实现的数据持久化层和伪SqlMapper对象实现数据操作下面我们来看看Dal下核心的Dao如何实现 &nb
ASP.NET项目开发指南:ADO.NET概述 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &
ASP.NET项目开发指南:ADO.NET结构 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &
VisualC++开发数据库基础之ADO篇 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一AD
知识大全 ASP.NET项目开发指南:ADO.NET连接方式
ASP.NET项目开发指南:ADO.NET连接方式 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
总结:ADO.NET在开发中的部分使用方法和技巧[4] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧
总结:ADO.NET在开发中的部分使用方法和技巧[5] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧
总结:ADO.NET在开发中的部分使用方法和技巧[7] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧