分享
 
 
 

在编程中调用OLEDB的数据连接属性对话框

王朝vc·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

原文作者:Tony Johnson and Chris Wilcock

译者的话:本文主要谈论了如何使用OLEDB的数据连接属性对话框(Data Link Properties),根据用户的选择,使用动态得到的连接字符串,配置ADO的数据源。

OLEDB的数据连接配置对话框如下图所示:

程序编译环境:VC6, MDAC 2.1 ( ADO 2.1 ), Win9x / NT

介绍 Introduction

我最近在我的使用ADO应用程序中需要容许用户能够根据自己的需要配置一个连接串。搜索了最近的文档之后,发现没有任何关于怎样实现这个的信息。除了当从MDAC2.0到2.1过渡时,知识库中文章(Q225132)描述了一个使用#import声明的问题。这个刺激了我来写一篇文章来演示如何使你在你的应用程序中使用OLE DB的数据连接属性对话框。

这个数据连接对话框包含在OLEDB32.DLL(在MDAC2.1,MDAC2.1中在MSDASC.DLL)。他已经非常容易使用了。通过创建一个IdataSourceLocator接口实例,你就可以弹出这个对话框,并且快速的配置ADO数据源。

好了,让我们来看一看怎样实现他呢?我已经创建了一个简单的控制台程序工程,来演示如何做到这一点,在文章末,可以通过连接下载这个工程文件。

输入类型库 Importing the type libraries

首先,装入工程并打开一个源文件(datalink.cpp)。在这个源文件中,我已经很好的注释了其中的语句,因此你可以很容易的读懂它。但是那儿仍有些关键的点。

#import "c:\program files\common files\system\ado"

"\msado20.tlb" no_namespace rename("EOF", "IsEOF")

rename("BOF", "IsBOF")

#import "c:\program files\common files\system\ole "

db\oledb32.dll" rename_namespace("oledb")

头文件顶端的#import声明语句将告诉编译器生成一些文件,以使得我们使用数据连接和ADO对象的智能指针。这些输入声明语句也容许我们使用ADO对象,最重要的是对于本文所说的数据连接属性对话框。

显示数据连接属性对话框 Displaying the Data Link Properties Dialog

main()函数包含了一些代码,这些代码的作用是让我们装入或者保存一个预定义的连接字符串。我假定你已经对于IO类很熟悉了,因此我将略过这个部分,这部分只是演示给你在显示这个数据连接属性对话框时使用预定义的连接字符串。

例如,如下的代码段告诉你怎样显示这个对话框,来创建一个新的连接字符串(错误检查已经被移除)

oledb::IDataSourceLocatorPtr p_IDSL = NULL;

_ConnectionPtr p_conn = NULL;

p_IDSL.CreateInstance( __uuidof( oledb::DataLinks ));

p_conn = p_IDSL->PromptNew();

PromptNew函数的功能就是显示一个新的要求用户健入所有参数的对话框,在返回时,p_conn即可以是NULL,这是当用户点击了取消按钮,也可以是包含一个创建好的连接(Connection)对象,根据用户的选择,这个对象的数据成员ConnectionString被设定为ADO的连接字符串。

要显示一个基于已经存在的连接串,这个有点令人费解。下面是一个例子。

oledb::IDataSourceLocatorPtr p_IDSL = NULL;

_ConnectionPtr p_conn = NULL;

p_IDSL.CreateInstance( __uuidof( oledb::DataLinks ));

p_conn.CreateInstance( "ADODB.Connection" );

p_conn->ConnectionString = _bstr_t("your connection string");

IDispatch * p_Dispatch = NULL;

p_conn.QueryInterface( IID_IDispatch, (LPVOID*) & p_Dispatch );

p_IDSL->PromptEdit( &p_Dispatch );

p_Dispatch->Release();

可以编辑的版本需要另外的一些步骤。第一,你需要创建一个连接对象(Connection Object)并设定它的连接串,然后使用QueryInterface转化成一个IDispatch指针,最后传递到PromptEdit函数。

PromptEdit返回一个BOOL值,如果用户点击OK,那么返回TRUE,否则返回FALSE。如果是TRUE的话,p_conn对象的ConnectionString属性将被设定为新的用户定义的连接参数。

警告

我使用这些函数包括使用注册表来存贮和重新得到连接串。将这些函数增加到你的应用程序中,你就可以让用户能够容易的配置他们ADO的数据源。我希望他对你会有所帮助…他确实对我有帮助。

Downloads

Download source - 43 Kb

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有