2012-01-09 149 views
0

已解決:我的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位,但它沒有解決我的問題。

任何想法?

+0

這是您知道的可信連接..? – MethodMan 2012-01-09 21:47:09

+0

是的,Oracle實例安裝在我的機器上;我試圖在本地連接。 – Paradoxyde 2012-01-09 21:50:36

+0

我在我的答案中添加了以下評論,我剛剛修改了..你是否嘗試過使用集成安全性「數據源= Oracle11g;集成安全性=是」連接以及 – MethodMan 2012-01-09 21:58:17

回答

1

用於Oracle的Microsoft ODBC驅動程序非常舊,不支持。Oracle數據庫和驅動程序的支持位於Oracles網站。 我建議您訪問Oracle Site Oracle網絡並註冊一個沒有成本的帳戶。然後,您加入Oracle網絡後,請檢查Visual Studio Tools for Oracle的下載sectio,並查找包含X64或X86的ODAC112021xcopy.zip軟件包,其中包含Windows更新的運行時驅動程序。

在您下載了運行時驅動程序後,請閱讀oracle的指南以進行安裝。Oracle的新驅動程序將出現在ODBC管理器中,然後您可以更新「您的連接字符串」以使用新的驅動程序。如果無法連接到Oracle數據庫,問題通常是tns.listener連接設置。 典型設置使用XE.NAME作爲服務器實例。您將需要打開端口1521的防火牆以允許連接。 如果您查看oraXXXX消息和搜索(Goolge或Bing)的ora錯誤,Web上會顯示如何更改Oracle數據庫引擎的tns偵聽器。 如果您對連接字符串有問題,您可以(Google或Bing)連接字符串。 如果您有IIS服務器錯誤,請閱讀IIS網絡庫指南以啓用和打開「失敗請求跟蹤」

+0

謝謝,我試過但獲得了相同的結果。 – Paradoxyde 2012-01-09 22:03:49

+0

我是,實際上使用Visual Studio 2008(如我的文章中所述)。然而,我在文章中沒有提到的是,我確實從Oracle網站安裝了最新的ODBC軟件包。 – Paradoxyde 2012-01-09 22:09:51