ADO訪問Oracle數據庫,連接異常(Unknown error 0x800a0e7a)
代碼如下:執行Open過程中出現異常,信息為Unknown error 0x800a0e7a
C++ Code
|
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
try
{ strConnect = L "Provider=ORAOLEDB.ORACLE.1;Password=" + user_password + L ";User ID=" + user_name + L ";Data Source=" + server_ip + L "/" + oracle_dbname + L ";Unicode=True;Persist Security Info=True" ; m_pConn->ConnectionTimeout = connect_timeout; HRESULT Ret = m_pConn->Open((_bstr_t)strConnect.c_str(), user_name.c_str(), user_password.c_str(), adModeUnknown); if (Ret != S_OK) { DEBUG_TRACE_ERROR(WSTR( "CKmObjectDataSourceORCL_KmServerConnect_1,EER:ORACLE(%s)連接失敗.,%s:%d" ), connectstr_temp.c_str(), __WFUNCTION__, __LINE__); return - 1 ; } } catch (_com_error e) { std::wstring result_unicode = ( wchar_t *)e.ErrorMessage(); DEBUG_TRACE_ERROR(WSTR( "CKmObjectDataSourceORCL_KmServerConnect_0,EER:ORACLE(%s)連接異常(%s).,%s:%d" ), connectstr_temp.c_str(), result_unicode.c_str(), __WFUNCTION__, __LINE__); return - 1 ; } |
解決方法:
OLEDB連接Oracle分為兩種方式,即分別微軟和Oracle寫的不同的驅動。
provider=MSDAORA.1是微軟寫的驅動
provider=OraOLEDB.Oracle是Oracle自帶的驅動(可能缺失!)
安裝ODTwithODAC(下載),即Oracle Data Access Components,用於訪問Oracle的組件。

參考:http://www.cnblogs.com/SharkBin/archive/2013/08/29/3289554.html
