1.如何動態(tài)設(shè)置BDE別名
這個問題其實是考察程序員對BDE的TSession組件的熟悉程度,一個數(shù)據(jù)庫程序的建立,即使你沒有顯式的添加TSession組件,系統(tǒng)中依然存在一個名字為Session的TSession對象,你可以在任何位置調(diào)用該對象的方法和屬性。TSession類的很多方法可以幫助我們的應(yīng)用程序獲取系統(tǒng)BDE環(huán)境,下面介紹一個代碼片斷用以添加一個BDE別名:
示例:新建應(yīng)用程序,添加bde/Tsession組件和按鈕button1
procedure TForm1.Button1Click(Sender: TObject);
var
BDEList:TStringList ;
begin
BDEList := TStringList.Create () ;
try
Session.GetAliasNames(BDElist) ; // 獲取系統(tǒng)所有BDE別名列表
if BDEList.IndexOf('DragonPC')= -1 then
begin // 如果沒有我們的BDE別名"DragonPC"
BDEList.Clear ;
BDEList.Add('SERVER NAME=' + 'SQLServerName'); // 數(shù)據(jù)庫服務(wù)器名稱
BDEList.Add('DATABASE NAME=master') ; // 默認(rèn)數(shù)據(jù)庫
BDEList.Add('USER NAME=sa'); // 用戶名
Session.AddAlias('DragonPC', 'MSSQL', BDEList) ; // 添加一個MSSQL類型的BDE別名
ShowMessage('系統(tǒng)即將建立BDE別名!') ;
Session.SaveConfigFile() ; // 存儲BDE配置
end;
finally
BDEList.Free ;
end;
end;
2.如何動態(tài)設(shè)置ODBC源
很多時候程序員需要自動生成ODBC數(shù)據(jù)源,而不是指導(dǎo)客戶"打開控制面板… … ",到底如何去做呢?
SQLConfigDataSource這個函數(shù)MSDN有詳細(xì)的說明,我不想整段翻譯下來讓你扁我,我只是結(jié)合流行的SQL Server談?wù)勅绾斡屑记傻恼{(diào)用該函數(shù)。其它的數(shù)據(jù)庫大同小異。
SQLConfigDataSource(0, ODBC_ADD_SYS_DSN,''SQL Server'',
''DSN=Record_ODBC''+ chr(0) +
''Server=(local)''+ chr(0) +
''Database=master''+ chr(0) +
''Description=DragonPC SQLServer ODBC Source''+ chr(0));
這是我的Delphi程序中調(diào)用該函數(shù)的一個實例,第一個參數(shù)是父窗口句柄,設(shè)置為0則該函數(shù)不顯示任何對話框。第二個參數(shù)是操作類型,你需要定義如下的操作類型常量:
Const
ODBC_ADD_DSN = 1; // Add a new user data source.
ODBC_CONFIG_DSN = 2; // Configure (modify) an existing user data source.
ODBC_REMOVE_DSN = 3; // Remove an existing user data source.
ODBC_ADD_SYS_DSN = 4; // Add a new system data source.
ODBC_CONFIG_SYS_DSN = 5; // Modify an existing system data source.
ODBC_REMOVE_SYS_DSN = 6; // Remove an existing system data source.
程序示例:新建一個delphi 應(yīng)用程序,添加一個按鈕button2,代碼如下:
//定義常量
Const
ODBC_ADD_DSN = 1; // Add a new user data source.
ODBC_CONFIG_DSN = 2; // Configure (modify) an existing user data source.
ODBC_REMOVE_DSN = 3; // Remove an existing user data source.
ODBC_ADD_SYS_DSN = 4; // Add a new system data source.
ODBC_CONFIG_SYS_DSN = 5; // Modify an existing system data source.
ODBC_REMOVE_SYS_DSN = 6; // Remove an existing system data source.
//自定義函數(shù)
function SQLConfigDataSource(hwndParent: Integer; fRequest: Integer;lpszDriverString: String; lpszAttributes: String): Integer;stdcall;external 'ODBCCP32.DLL';
//調(diào)用函數(shù)
procedure TForm1.Button2Click(Sender: TObject);
begin
SQLConfigDataSource(0, ODBC_ADD_SYS_DSN,'SQL Server','DSN=Record_ODBC'+ chr(0) +'Server=(local)'+ chr(0) +'Database=pubs'+ chr(0) +'Description=DragonPC SQLServer ODBC Source'+ chr(0));
end;