在Delphi中利用MSDASC来配置数据库链接

本文介绍如何在 Delphi 中利用 OLEDB32.DLL 的 IDataSourceLocator 接口实现在运行时配置 ADO 数据库连接。通过创建接口指针并调用 PromptNew 方法弹出标准数据库连接配置窗口,获取连接字符串。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载自:

http://www.cnblogs.com/angelbd/p/3373065.html

在学习vc的时候,看到Ado连接数据库的例子,在程序运行时可以调出一个配置数据库连接的例子,一直想移植到Delphi中,通过百度搜索,找到了以下代码,经测试可以使用。

在运行期进行数据库的连接是一个问题,自己写一个窗体配置吧,数据库不一样,所用的参数也不一样,还有那讨厌的连接字符串,有时真不知该写什么好。那天无意中发现一个UDL文件,打开时自动弹出标准的数据库链接属性配置窗体,用过ADOConnection的一定知道。可惜的是UDL文件是明码,而且要放在一个目录下,要是能放在注册表中多好,还可以加密存放,我们如何调用这个窗体呢?通过查找注册表,发现打开UDL文件的是MSDASC,再查MSDASC,OK,在OLEDB32.dll中。好啦,我们开始编程吧。 
为了找到OLEDB32.DLL中的接口描述,以便知道有什么接口和方法,我们先来生成一个接口类型库文件。 
新建一个ActiveX Library,再新建一个COM Object,随便起个名字吧。保存。 
然后选菜单View->Type Library,在右边Uses页中点右键,选择查看所有类型库,找到Microsoft OLE DB Serivce Component 1.0 Type Library,保存。OK,在你的保存目录下有了一个MSDASC_TLB.pas,拷出来,其它的可以删除啦:) 
再新建一个Delphi工程,保存。 
添加我们刚才的文件MSDASC_TLB.pas到工程,在主窗体中uses MSDASC_TLB,我们要用的是其中的IDataSourceLocator接口。 
添加一个按钮,一个ADOConnection。代码如下 
procedure TForm1.Button1Click(Sender: TObject); 
var 
DataSourceLocator:IDataSourceLocator; 
ADOConn:IDispatch; 
begin 
DataSourceLocator := CoDataLinks.Create; //创建接口指针 
ADOConn := DataSourceLocator.PromptNew; // 打开配置窗体 
self.ADOConnection1.ConnectionObject := IDispatch(ADOConn) as _Connection;//赋值给ADOConnection 
showmessage(self.ADOConnection1.ConnectionString); //打出来看看对不对 
DataSourceLocator := nil; //记着释放啊 
end; 
取到字符串啦,你可以自己加密,你可以存到你能读到的任何地方。 
打开MSDASC_TLB.pas,你可以看到IdataSourceLocator接口还有PromptEdit方法,看名字就知道是干什么的啦,参数类似,就不多说啦。



m_Conn:= IDispatch(DataSourceLocator.PromptNew)as _Connection;
   showmessage(m_Conn.ConnectionString);
   con1.ConnectionString:=m_Conn.ConnectionString;
   con1.Open;


   //m_Conn.
   DataSourceLocator := nil; //记着释放啊
   m_Conn:= nil; //记着释放啊

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值