2012-01-09 101 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