请问高手有没有遇到过这样的问题,我的程序是在vc.net 2005下编译运行的,通过ado来访问远程oracle服务器数据库,当安装了oracle 9i 客户端的管理员方式时,连接成功,但是当客户端安装“运行时”方式时,就不能连接了,运行错误是“unspecified error",我查了相关的帖子,有说是因为“运行时”方式是没有oledb组件的,需要安装oracle 9i 补丁程序ODAC92070.exe,但是我这个程序是很多人都要用的,我不能要求客户都安装这个补丁,所以能否找到什么替代方法呢?比如说把相关dll 或者lib文件一起链接编译进我的程序?能否详细说明步骤呢?我是新手,多谢了! str_con=_T("Provider=OraOLEDB.Oracle.1;User ID=system;Password=sys;Data Source=(DESCRIPTION=(ADDRESS= (PROTOCOL=TCP) (HOST=192.168.10.188)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=locl)));Persist Security Info=False")
_ConnectionPtr m_pConnection;
AfxOleInit();
try
{
HRESULT hr = m_pConnection.CreateInstance("ADODB.Connection");
if(SUCCEEDED(hr))
{
if (FAILED(m_pConnection->Open(str_con.GetString(),L"",L"",adOpenUnspecified)))
{
SendMessage(theApp.m_pMainWnd->m_hWnd, ID_TH_NETWORKERR, TRUE, FALSE);
}
else
{
SendMessage(theApp.m_pMainWnd->m_hWnd, ID_TH_NETWORKERR, TRUE, TRUE);
}
}
}
catch(_com_error e)
{
CString errormessage;
errormessage.Format(_T("Error:%s"),e.ErrorMessage());
AfxMessageBox(errormessage);
SendMessage(theApp.m_pMainWnd->m_hWnd, ID_TH_NETWORKERR, TRUE, FALSE); }
_ConnectionPtr m_pConnection;
AfxOleInit();
try
{
HRESULT hr = m_pConnection.CreateInstance("ADODB.Connection");
if(SUCCEEDED(hr))
{
if (FAILED(m_pConnection->Open(str_con.GetString(),L"",L"",adOpenUnspecified)))
{
SendMessage(theApp.m_pMainWnd->m_hWnd, ID_TH_NETWORKERR, TRUE, FALSE);
}
else
{
SendMessage(theApp.m_pMainWnd->m_hWnd, ID_TH_NETWORKERR, TRUE, TRUE);
}
}
}
catch(_com_error e)
{
CString errormessage;
errormessage.Format(_T("Error:%s"),e.ErrorMessage());
AfxMessageBox(errormessage);
SendMessage(theApp.m_pMainWnd->m_hWnd, ID_TH_NETWORKERR, TRUE, FALSE); }
你这里用的是oracle提供的驱动。。换成微软的就应该不用安装
改成:
str_con=_T("Provider=MSDAORA.1;User ID=system;Password=sys;Data Source=(DESCRIPTION=(ADDRESS= (PROTOCOL=TCP) (HOST=192.168.10.188)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=locl)));Persist Security Info=False")
试试..
这我以前就用过了,这次又试了一下,连“管理员”版本都报错:"Error:Unspecified error"