进行连接,默认为同步。
具体的,有以下两种实现连接的方式:
(1)LPCSTR strConnect = 〃Provider=Microsoft。Jet。OLEDB。4。0;Data Source=test。mdb〃;
conn…》Open(strConnect; 〃〃; 〃〃; adConnectUnspecified);
(2 )conn…》Open(〃DSN=DataSourceName〃; 〃〃; 〃〃; adConnectUnspecified);
对于本章的例子,要连接的数据库就是在第 2 节创建的数据库 Info。mdb (数据源也在第
2 节已经设置好),则连接语句如下:
_ConnectionPtr m_connection;
//创建实例
m_connection。CreateInstance(__uuidof(Connection) );
·351 ·
…………………………………………………………Page 363……………………………………………………………
Visual C++ 6。0 程序设计从入门到精通
//根据连接字符串开启数据连接
m_connection…》Open( 〃DSN=Information〃; 〃〃; 〃〃; …1);
12。6。3 获得和遍历记录集
建立连接后,便可以创建一个 ADO 记录集。在得到记录集之前,需要先声明一个
_RecordsetPtr 型变量,然后创建记录集的实例:
_Recordset m_Recordset;
//创建实例
m_Recordset。CreateInstance(__uuidof(Recordset));
这里_RecordsetPtr 的来历类似于_ConnectionPtr ,也是由类模板__ptr_t 而得到的一个
具体的实例类。
一般说来,打开记录集有 3 种方式。
1.利用 Connection 对象的 Execute()方法执行 SQL 命令
Execute()方法的原型如下:
Execute (_bstr_t mandText; VARIANT* RecordsAffected; long Options)
各参数意义如下:
o mandText :命令字串,通常是 SQL 语句。
o RecordsAffected :操作完成后影响的行数。
o Options :mandText 中内容的类型。取值为 adCmdText 表明是文本命令;取值为
adCmdTable 表明是一个表名;取值为 adCmdProc 表明是一个存储过程。
假设 m_Connection 和 m_Recordset 分别是创建好的连接对象和记录集对象,则利用
Connection 对象的 Execute()方法打开记录集代码如下:
_variant RecordsAffected;
m_Connection…》Execute(“select * from Contact”; &RecordsAffected; adCmdText);
2 .利用 mand 对象执行 SQL 命令
当要执行复杂的命令以及执行带参数的命令时,要使用命令对象对数据源进行操作。一
般的,利用 mand 对象打开记录集代码如下:
_mandPtr m_mand;
//创建实例
m_mand。CreateInstance(〃ADODB。mand〃);
//指向当前连接
m_mand…》ActiveConnection = m_Connection;
//设置命令字串
m_mand…》mandText = 〃select *from Contact〃;
//执行命令,打开记录集
m_Recordset = m_mand…》Execute(&vNULL; &vNULL; adCmdText);
·352 ·
…………………………………………………………Page 364……………………………………………………………
第 12 章 数据库开发
3 .直接利用 Recordset 对象打开记录集
利用 Recordset 的 Open()方法,可以方便的打开一个记录集。Open()方法的原型如下:
Open(VARIANT Source; VARIANT ActiveConnection ; CursorTypeEnum CursorType;LockTypeEnum
LockType ; LONG Options)。
各参数意义如下:
o Source:通常是对数据库进行操作的 SQL 语句,但具体还要看第 5 个参数的取值;
o ActiveConnection :表示当前的数据连接。
o CursorType :记录集光标类型,它的取值如表 12…21 所示。
o LockType :用于指示在什么时候锁定记录,取值如表 12…22 所示。
o Options :操作类型,取值如表 12…23 所示。
表 12…21 光标类型 CursorType
取值 意义
adOpenForwardOnly 指向前游标,默认值。除了只能在记录中向前滚动外,与静态游标相同
键集游标。用户自己的记录集不能访问其他用户删除的记录,无法查看其他
。adOpenKeyset
用户添加的记录,但仍然可以看见其他用户更改的数据
动态游标。可以看见其他用户所作的添加、更改和删除。允许在记录集中进
adOpenDynamic
行所有类型的移动,但不包括提供者不支持的书签操作
静态游标。可以用来查找数据或生成报告的记录集合的静态副本。另外,对
adOpenStatic
其他用户所作的添加、更改或删除不可见
表 12…22 锁定类型 LockType
取值 意义
AdLockReadOnly (默认值)只读,不能改变数据
保守式锁定(逐个),提供者完成确保成功编辑记录所需的工作,通常通过在
AdLockPessimistic
编辑时立即锁定数据源的记录
开放式锁定(逐个),提供者使用开放式锁定,只在调用 Update()方法时才锁
AdLockOptimistic
定记录
AdLockBatchOptimistic 开放式批更新。用于批更新模式(与立即更新模式相对)
表 12…23 操作类型 Options
取值 意义
adCmdText 指示 strSQL 为命令文本,即普通的 SQL 语句
adCmdTable 指示 ADO 生成 SQL 查询以便在 strSQL 命名的表中返回所有行
adCmdTableDirect 指示所作的更改在 strSQL 中命名的表中返回所有行
adCmdStoredProc 指示 strSQL 为存储过程
adCmdUnknown 指示 strSQL 参数中的命令类型为未知
adCmdFile 指示应在 strSQL 命名的文件中恢复保留(保存的)Recordset
adAsyncExecute 指示应异步执行 strSQL
指示在提取 Initial Fetch Size 属性中指定的初始数量后,应该异步提取所有
adAsyncFetch
剩余的行。如果所需的行尚未提取,主要的线程将被堵塞直到行重新可用
指示主要线程在提取期间从未堵塞。如果所请求的行尚未提取,当前行自动
adAsyncFetchNonBlocking
移到文件末尾
下面是一段利用 Recordset 的 Open()方法打开记录集的代码:
_Recordset m_recordSet;
//创建实例
m_recordSet。CreateInstance(__uuidof(Recordset));
·353 ·
…………………………………………………………Page 365……………………………………………………………
小说推荐
- C语言游戏编程从入门到精通(PDF格式)
- -Page 1-Page 2-Page 3-Page 4-Page 5-Page 6-Page 7-Page 8-Page 9-Page 10-Page 11-Page 12-Page 13-Page 14
- 其他
- 最新章:第4章
- oracle从入门到精通(PDF格式)
- -Page 1-Oracle 从入门到精通-Page 2-资源来自网络,仅供学习 Oracle 从入门到精通一、SQL 8
- 其他
- 最新章:第37章
- php程序设计简明教程(DOC格式)
- -Page 1-PHP 程序设计简明教程PHP 讲义 第 1 页 共 90 页-Page 2-目录序 4第一章 PHP 简介 6
- 其他
- 最新章:第31章
- VB2008从入门到精通(PDF格式英文版)
- -Page 1(R)The eXperT’s Voice inBeginningVB 2008From Novice to ProfessionalChristian Gross-Page 2-Page 3-Beginning VB 2008From Novice to Professional■C
- 其他
- 最新章:第214章
- C语言设计
- 作者:谭浩强1 C 语言概述1.1 C语言的发展过程1.2 当代最优秀的程序设计语言1.3 C语言版本1.4 C语言的特点1.5 面向对象的程序设计语言1.6 C和C+1.7 简单的C程序介绍1.8 输入和输出函数1.9 C源程序的结构特点1.10书写程序时应遵循的规则1.11C语言的字符集1.12
- 文学名著
- 最新章:第45章
- 设计成婚:不入豪门
- 作者:海未央《设计成婚2:名门新娘》作品介绍《名门新娘》介绍:她是骆家收养的孤女,性格因为受他的影响,变得有些古灵精怪,也懂得是非之分!他说他的一切只为他而努力,可是为什么要拒绝自己呢?什么?没有满十八岁?那今天生日,够十八岁了吧?什么,还太小?太过分了,这不是耍着自己玩吗?嘿嘿,有个邪恶的老师,那
- 魔法玄幻
- 最新章:第196章
- 玄学,从入门到放弃
- 《玄学,从入门到放弃》作者:李传言文案:周诣一手拿着卜卦,一手拿着《演员的自我修养,叹息良久。他本是百年前观天占星的玄术师,谁知却一朝重生现代。他只想平淡地生活下去,可天不遂人愿,他注定将在这末法时代掀起波澜!成就一代影帝!谢千仇沉默地看着他…大师,你卦和书都拿倒了#玄学,从入门到放弃,入土,删库跑
- 魔法玄幻
- 最新章:第86章
- C语言实例教程(PDF格式)
- -Page 1-前 言Visual C+是开发运行于Windows 95和Windows NT环境下的Win32应用程序的可视化编程工具中最重要的成员之一,它为软件开发人员提供了完整的编辑、编译和调试工具和建立于Win32 API(ApplicationProgramming Interface)基
- 其他
- 最新章:第143章
- 要你言听计从
- 作者:决明第一章哈士奇,没有护卫看家的本领,对主人、客人甚至是闯空门的恶人都一样友善,咬着皮球跟小偷一块玩你丢我捡也不用太惊讶,时常被人认为忠诚度不足。贺世祺背靠在冰冷玻璃落地窗前,一整间屋子都是伸手不见五指的黑暗,也好,反正他现在什么也不需要看到,只要耳朵还有听觉就好,顺便听听贴在耳边的手机里还要
- 都市言情
- 最新章:第28章