VC++OLEDB实战编程教程

上传人:飞*** 文档编号:36680401 上传时间:2018-04-01 格式:DOC 页数:84 大小:574KB
返回 下载 相关 举报
VC++OLEDB实战编程教程_第1页
第1页 / 共84页
VC++OLEDB实战编程教程_第2页
第2页 / 共84页
VC++OLEDB实战编程教程_第3页
第3页 / 共84页
VC++OLEDB实战编程教程_第4页
第4页 / 共84页
VC++OLEDB实战编程教程_第5页
第5页 / 共84页
点击查看更多>>
资源描述

《VC++OLEDB实战编程教程》由会员分享,可在线阅读,更多相关《VC++OLEDB实战编程教程(84页珍藏版)》请在金锄头文库上搜索。

1、VC+ 实战 OLEDB 编程(一).1 VC+ 实战 OLEDB 编程(二).8 VC+ 实战 OLEDB 编程(三).16 VC+ 实战 OLEDB 编程(四).23 VC+ 实战 OLEDB 编程(五).37 VC+ 实战 OLEDB 编程(六).48 VC+ 实战 OLEDB 编程(七)一个完整的例子.58 VC+实战 OLEDB 编程(八)行状态与延迟更新.66 VC+实战 OLEDB 编程(九).73 VC+实战 OLEDB 编程(十).79 关于延迟提交新增行问题的澄清.79 VC+实战 OLEDB 编程(十一).81 参数化查询和存储过程调用.81VC+ 实战实战 OLEDB

2、编程(一)编程(一)很久没有写点新的东西了,最近实在是非常的忙,也没有时间去料理自己的博客,今 天总算是休息一下,写点东西,算是给自己交个差吧。 这次我准备系统的介绍下 OLEDB 编程的一些内容。OLEDB 作为目前最全面,最强大 的 Windows 平台下的数据库编程接口,其资料在网上却少之又少,这着实有些让人纳罕。 现在很多的应用软件系统都要和数据库打交道,没有一个好的强大的数据库编程接口 作为支撑,这些系统的功能,性能,安全性等等都将是不可想象的事情。当然我们还可以 选择 OLEDB 之上的 ADO 接口来作为我们的编程接口,由于 ADO 是基于 OLEDB 的上层 封装,ADO 比之

3、 OLEDB 最大的优势就在于方便。使用 ADO 只需要 3-5 行代码的事情, 用 OLEDB 却需要将近 200-300 行代码才能完成,这也是很多系统目前使用 ADO 作为数据 库编程接口的主要原因。当然这并不表示 OLEDB 在功能上比 ADO 有什么逊色之处,相反, OLEDB 接口不但功能强大,而且由于处于底层的原因,它在灵活性上有更明显的优势。 甚至我鼓励 VC+程序员在大型项目中使用 OLEDB 而不是 ADO 来作为数据库编程的接口, 因为 OLEDB 的很多东西都是由你完全控制的,比如数据存放的位置,存放的方式等等。另外 OLEDB 还可以作为数据提供者编程接口,比如你可以

4、自己实现一个 ORACLE 或 MySQL 的 OLEDB 提供程序。好了,废话就不多说了,下面就开始我们正式的 OLEDB 之旅,注意本文以及以后一 系列文章中所有的关于 OLEDB 的介绍都以 OLEDB2.6 以上版本为准,你可以在微软的网 站上免费下载到完整的 OLEDB2.6SDK 包,其中有关于 OLEDB,ADO 等的详细帮助以及 例子代码。首先让我们来看看 OLEDB 中两个最基本的概念:数据提供者和数据消费者。在 OLEDB 中,不但要考虑使用数据的一方,还要考虑提供数据的一方,比如各种数据库系 统几乎都提供了自己的 OLEDB 接口。从本质上说,OLEDB 其实就是一个标准

5、的数据库与 应用系统间的数据标准交换接口,它的好处就是高效,通用和灵活。如果是数据提供的一方,在 OLEDB 中就称之为数据提供者,如果是使用数据的一方, 那么就称之为数据消费者。在此系列文章中将主要的介绍一下数据消费者接口。OLEDB 顾名思义,它肯定是一组 COM 接口,因此要用好 OLEDB,一个必不可少的 先决条件就是必须熟悉 COM 原理,当然这对现在的 VC+程序员来说是必须掌握的技能之 一,本文中不对 COM 的基本内容做任何介绍,需要的请自己查阅相关资料。要完成一个数据库访问任务,第一件要做的事情就是打开一个连接,在 OLEDB2.0 以 前的版本中,要做到这点只需要像下面这样

6、调用一段代码就可以创建一个数据库连接:#define COM_NO_WINDOWS_H /如果已经包含了 Windows.h 或不使用其他 Windows/库函数时#define DBINITCONSTANTS#define INITGUID#define OLEDBVER 0x0250 #include #include IDBInitialize *pIDBInitialize = NULL;CoCreateInstance(CLSID_MSDASQL, NULL, CLSCTX_INPROC_SERVER,IID_IDBInitialize,(void*)当然如果你使用的 SQL Ser

7、ver 2005 以上的数据库,那么还可以像下面这样来创建一个连接 对象:#include CoCreateInstance( CLSID_SQLNCLI10,NULL,CLSCTX_INPROC_SERVER,IID_IDBInitialize,(void *) 这样调用的前提是你已经安装了 SQL Server Native Client 支持组件,当然这还需要你包含 SQLNCLI.h 这个头文件,这个在 Windows SDK 组件中找到它。当然这只是创建了一个数据库连接的 COM 接口,而且要特别注意的是这是 OLEDB2.0 以前推荐的方法,现在不应该再这样使用了,介绍它的目的就是

8、方便你看懂一些例子代码。同时这个地方要特别注意的是,这种方法初始化出来的 IDBInitialize 接口,在后续的调用 中是无法使用一些高级接口的,比如 IRowsetFind、IRowsetIdentity 等等,同时这将导致你 后续创建的 IRowset 接口无法直接和 ADO 混用(ADO 和 OLEDB 混用这个话题将在后续 的文章中讨论) ,在 2.0 以后的 OLEDB 接口中,替代的是两个接口:IDataInitialize 和 IDBPromptInitialize。其中 IDBPromptInitialize 将打开那个 Windows 系统标准的数据库连接 创建对话框,像

9、下图这样:而 IDataInitialize 则纯粹的是以代码的方式创建一个数据库连接对象。它们分别用于不同 的编程目的。调用这两个接口例子如下: 1、使用 IDataInitialize 接口:IDataInitialize* pIDataInitialize = NULL;CoCreateInstance(CLSID_MSDAINITIALIZE, NULL, CLSCTX_INPROC_SERVER,IID_IDataInitialize,(void*)IDBInitialize *pIDBInitialize = NULL;pIDataInitialize-CreateDBInstan

10、ce(CLSID_MSDASQL, NULL,CLSCTX_INPROC_SERVER, NULL, IID_IDBInitialize,(IUnknown*)2、使用 IDBPromptInitialize 接口:IDBPromptInitialize* pIDBPromptInitialize = NULL;CoCreateInstance(CLSID_DataLinks, NULL, CLSCTX_INPROC_SERVER,IID_IDBPromptInitialize, (void *)IDBInitialize *pIDBInitialize = NULL;/下面这句将弹出前面所说

11、的对话框pIDBPromptInitialize-PromptDataSource(NULL, hWndParent,DBPROMPTOPTIONS_PROPERTYSHEET, 0, NULL, NULL, IID_IDBInitialize,(IUnknown *)pIDBInitialize-Initialize();/根据对话框采集的参数连接到指定的数据库上面两种方法中实际最后还是创建了 IDBInitialize 接口,表面上看这没什么区别,其实不 然,在这个地方要特别注意的是,一定要使用后面这两种方法创建的 IDBInitialize 的接口, 虽然很多例子中都像文中前面提到的那样

12、直接创建了 IDBInitialize 接口,但是在正式的项 目代码中一定要使用后面这两种方法之一来创建 IDBInitialize 接口,否则你就会遇到很多 奇怪的问题,最重要的就是后面这两种方法打开了所有的数据源 OLEDB 功能支持,而直 接创建的 IDBInitialize 只打开了基本 OLEDB 功能支持,这在项目中会导致很多问题,因 为很多的接口以及属性都将无法使用。而后两种方法保证你后续所有的 OLEDB 接口和功 能都能使用。在创建了 IDBInitialize 接口之后(pIDBPromptInitialize-PromptDataSource 这种方式创建的 除外) ,我们就需要详细的指定连接数据库的各种参数,在 OLEDB 中这些参数都叫做属性, 并且被加以分组,每个分组都叫做一个属性集合。典型的我们需要指定数据库实例名,数 据库名,连接数据库的用户名以及密码等等属性。在 SQL Server 中有一种特殊的方式就是 集成安全模式,它的属性相对简单些,下面的例子演示了如何使用集成安全性连接到 SQL Server 数据库:DBPROP InitProperties4;DBPROPSET rgInitPropSet1;/初始化属性值变量for ( i

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 教育/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号