在運行期進行數(shù)據(jù)庫的連接是一個問題,自己寫一個窗體配置吧,數(shù)據(jù)庫不一樣,所用的參數(shù)也不一樣,還有那討厭的連接字符串,有時真不知該寫什么好。那天無意中發(fā)現(xiàn)一個UDL文件,打開時自動彈出標準的數(shù)據(jù)庫鏈接屬性配置窗體,用過ADOConnection的一定知道。可惜的是UDL文件是明碼,而且要放在一個目錄下,要是能放在注冊表中多好,還可以加密存放,我們?nèi)绾握{(diào)用這個窗體呢?通過查找注冊表,發(fā)現(xiàn)打開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; //創(chuàng)建接口指針
ADOConn := DataSourceLocator.PromptNew; // 打開配置窗體
self.ADOConnection1.ConnectionObject := IDispatch(ADOConn) as _Connection;//賦值給ADOConnection
showmessage(self.ADOConnection1.ConnectionString); //打出來看看對不對
DataSourceLocator := nil; //記著釋放啊
end;
取到字符串啦,你可以自己加密,你可以存到你能讀到的任何地方。
打開MSDASC_TLB.pas,你可以看到IdataSourceLocator接口還有PromptEdit方法,看名字就知道是干什么的啦,參數(shù)類似,就不多說啦。
本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請
點擊舉報。