![](/img/trans.png)
[英]Best way to store an unsigned 64 bit integer in Oracle Database 11g using OCCI
[英]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.