簡體   English   中英

無法通過OLE DB連接到Oracle 11g

[英]Unable to connect to Oracle 11g via OLE DB

已解決:我的VC ++應用程序使用32位,而我的Oracle DB使用64位。 最初,我雖然說客戶端可以同時使用兩個版本的Oracle,但事實並非如此。 因此,我通過重新安裝32位Oracle 11g2解決了該問題。

我正在嘗試通過C ++中的Visual Studio 2008連接到測試Oracle 11g2數據庫。 我的數據庫實例名稱為ORCL.TEST.DB,出於測試目的,我嘗試使用user:SYSTEM和password: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;
}

hr包含的錯誤代碼是80004005,它是E_FAIL(未指定故障)。

起初,我認為這是32 vs 64的問題(64位OS和64位Oracle,但在Visual Studio 2008中為32位C ++編譯器)。 因此,我安裝了Oracle Instant Client 32bit,但沒有解決我的問題。

有任何想法嗎?

Oracle的Microsoft ODBC驅動程序非常老,不支持。Oracle數據庫和驅動程序的支持在Oracle網站上。 建議您訪問Oracle Site Oracle Network並注冊一個免費帳戶。然后,在加入Oracle Network之后,請檢查Visual Studio Tools for Oracle的下載部分,並查找X64或X86的ODAC112021xcopy.zip軟件包,其中包含Windows的更新的運行時驅動程序。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM