方法一:通過System.Data.OracleClient(需要安裝Oracle用戶端並配置tnsnames.ora) 這個大家都知道,就不細說了
oracleConnectionString : data source = orcl;user id= scott; password=tiger;persist security info=false;
方法二,是利用OldeDb 來串連
oracleConnectionString :
Provider=OraOLEDB.Oracle.1;User ID=scott;Password=tiger;Data Source=(DESCRIPTION = (ADDRESS_LIST= (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.125.250)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = orcl)))
貌似MSDN上OledbCommandType 沒有可以對應Oracle 的 ref Cursor ,所以就拋棄了他,
方法三:需要oracle用戶端,但是不需要配置tnsnames.ora
連接字串 oracleConnectionString
User ID=scott;Password=tiger;Data Source=(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST=10.10.125.250)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=orcl)))
但是按照網上的Demo來做,經常提示:
未處理的“System.ArgumentException”類型的異常出現在 system.data.oracleclient.dll 中。
其他資訊: Invalid length for connection option 'data source', maximum length is 128.
難道是代碼給錯了?
經過計算oracleConnectionString 他的長度是在180以上 ?
我就把其中一些的空格給去了,一個一個試,想法果然夠BT
竟然沒有Exception,不會是長度的限制吧,我就再一個一個把空格加上,結果貌似長度不超過 177 ,就可以串連上去? 難道真的這麼BT
string strconn ="User ID=scott;Password=tiger;Data Source=(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST=10.10.125.250)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=orcl)))";
MessageBox.Show(strconn.Length.ToString());
System.Data.OracleClient.OracleConnection oraConn =new System.Data.OracleClient.OracleConnection(strconn);
try
{
oraConn.Open();
MessageBox.Show(oraConn.State.ToString()); //177
}
catch (Exception ex)
{
MessageBox.Show(ex.Message );
}
finally
{
oraConn.Close();
}