已解決:我的VC++應用程序位於32位,我的Oracle數據庫位於64位。我最初雖然認爲客戶端可以使用兩種版本的Oracle,但是,它並不是。我通過重新安裝Oracle 11g2 32bit解決了這個問題。無法通過OLE DB連接到Oracle 11g
我試圖通過C++中的Visual Studio 2008連接到測試Oracle 11g2數據庫。 我的數據庫實例名稱是ORCL.TEST.DB,並且出於測試目的,我嘗試與用戶連接:SYSTEM和密碼:admin。 我也在使用Oracle OLE DB連接器。如你所見,我沒有嘗試任何幻想,我只是試圖成功連接。
CDataSource ds;
CSession session;
int _tmain(int argc, _TCHAR* argv[])
{
try{
// fire up COM
HRESULT hr = CoInitialize(0);
if(FAILED(hr))
{
cout << "Can't start COM!? " << endl;
return -1;
}
/// connect to the database
//hr = ds.Open(L"OraOLEDB.Oracle", _T("ORCL"), _T("SYSTEM"), _T("admin"));
hr = ds.OpenFromInitializationString(L"Provider=OraOLEDB.Oracle;Data Source=ORCL.TEST.DB;User Id=SYSTEM;Password=admin");
if(FAILED(hr))
{
////////////////THIS IS WHERE IT ENDS UP
cout << "Can't open db" << endl << hr << endl;
return -1;
}
}
catch(...){
cout << "Unknown failure" << endl;
return -1;
}
return 0;
}
包含的錯誤代碼是80004005,即E_FAIL(未指定的故障)。
起初我以爲這是一個32 vs 64的問題(64位操作系統和64位Oracle,但在Visual Studio 2008中是32位C++編譯器)。所以我安裝了Oracle的即時客戶端32位,但它沒有解決我的問題。
任何想法?
這是您知道的可信連接..? – MethodMan 2012-01-09 21:47:09
是的,Oracle實例安裝在我的機器上;我試圖在本地連接。 – Paradoxyde 2012-01-09 21:50:36
我在我的答案中添加了以下評論,我剛剛修改了..你是否嘗試過使用集成安全性「數據源= Oracle11g;集成安全性=是」連接以及 – MethodMan 2012-01-09 21:58:17