2011-09-14 26 views
0

我使用的是delphi 7和oracle。我想通過delphi使用TADOConnection動態連接oracle。我創建了一個包含3個編輯框的服務器名稱,用戶名,密碼和一個按鈕「連接」的表單。我試圖通過構建ConnectionString靜態連接。現在我正嘗試連接'連接'按鈕,具體取決於用戶在服務器,用戶名和密碼中輸入值。 我該如何做到這一點。有什麼建議麼。謝謝您的幫助。oracle數據庫連接動態使用delphi中的ADOConnection

+0

恕我直言,是應更好地忘記關於使用與Oracle的ADO/OleDB連接。來自Microsoft或Oracle的提供商存在嚴重的問題,關於BLOB和性能。改用直接的OCI通信來實現更輕鬆,更快速的訪問。查看商業版本,如ODAC或我們的[開源課程](http://blog.synopse.info/post/2011/07/09/SynDBOracle%3A-Open-Source-native-Oracle-access)。 –

回答

0

你必須改變TAdoConnection組件的ConnectionString屬性,你可以從ConnectionStrings網站

在這裏,正確的是一個與微軟提供的ADO連接:

Provider =msdaora; Data Source =MyOracleDB; User Id =myUsername; Password =myPassword; 

的用戶ID &密碼,你必須用你的Editbox來代替它們。

更新:

代碼你寫的是這樣的:

AdoConnection.Close; 
AdoConnection.ConnectionString := format('Provider=msdaora; Data Source =MyOracleDB; User Id = %s; Password = %s',edtUserName.Text,edtPassword.Text]); 
'; 
AdoConnection.Open; 
+0

連接字符串後打開Connection,我們必須做成ADOConnection.Connected:= true;對?? – naren

+0

不要使用MS Oracle提供程序,因爲它只支持OCI7,因爲這在很多方面都受到限制。使用Oracle Oracle提供程序。 – oodesigner

+0

更好地與Oracle一起使用3D聚合類庫,如AnyDAC。因爲ADO限制了Oracle的功能。 – oodesigner

2

假定您已經安裝Oracle客戶端(甲骨文提供OLEDB),有一個工作TNSNAMES等,所以中,例如,與密碼的「密碼」連接到實例「ORCL」登錄爲用戶「HR」,則連接字符串應該是這樣的:

提供商= OraOLED B.Oracle.1;數據源= ORCL;用戶 ID = HR;密碼=密碼

而且從組件服用字符串,它會看起來像:

Procedure TForm1.Button1Click(Sender: TObject); 
begin 
    ADOConnection1.ConnectionString:= 'Provider=OraOLEDB.Oracle.1;' + 
    'Data Source=' + Edit1.Text + ';' + 
    'Data Source=' + Edit2.Text + ';' + 
    'Password=' + Edit3.Text; 
    ADOConnection1.LoginPrompt:= False; 
    ADOConnection1.Connected:= True; 
end;