已解决:我的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