诡异的VC7 ADO连Oracle错误,请各位大侠帮帮忙

gefugeng 2009-06-26 04:25:31
本人去年用VC7写了一个程序,其中包含了使用ADO连接ORACLE数据库的方法,程序正常,交付客户使用。
今年客户对这个程序提出新的要求,我要对程序做修订。昨天我执行了以前的程序,竟然发现不能连接oracle了,同样的机子,同样的代码,同样的数据库,在Connection15::Open处失败,抛出的异常是些乱码,无法提供任何帮助。
今天又仔细看了下程序,对照oledb连接oracle的3个步骤(引入msado15.dll,初始化CoInitialize,定义ConnectionPtr)反复检查多次,都没有发现有任务。网上找了N多资料,复制下来改了连接串直接调用,依然在Open处抛出异常。彻底抓狂了,恳请各位大侠看看,这到底是啥子原因。

pCn.CreateInstance(__uuidof(Connection));
pCn->CursorLocation=adUseClient;
pPcr.CreateInstance(__uuidof(Recordset));
pPrjf.CreateInstance(__uuidof(Recordset));


sqlStr="Provider=OraOLEDB.Oracle.1;Persist Security Info=True;PLSQLRSet=1;User ID=zx;Password=zx;Data Source=oradb";
try
{
pCn->Open(sqlStr,"","",adModeUnknown); //每次执行到这里都会抛出异常
}
catch(_com_error e)
{
CString aaa;
aaa.Format(_T("%s"),e.ErrorMessage);
// ::MessageBox(this->m_hWnd,"数据库无连接或者无法打开,请检查网络配置","操作提示",MB_ICONSTOP);
::MessageBox(this->m_hWnd,aaa,"初始化操作提示",MB_ICONSTOP);
return FALSE;
}
...全文
29 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangyucsdn 2009-06-29
  • 打赏
  • 举报
回复
我建议你还是采用DSN连接吧,我感觉DSN比较稳定些,在ODBC设置系统数据源(不用详细说吧)
把下面代码sqlStr="Provider=OraOLEDB.Oracle.1;Persist Security Info=True;PLSQLRSet=1;User ID=zx;Password=zx;Data Source=oradb";改成
CString ScadaDBAddr,ScadaDBUserName,ScadaDBPwd;
sqlStr=CString("DSN=") + ScadaDBAddr + CString(";uid=") + ScadaDBUserName + CString(";pwd=") + ScadaDBPwd + CString(";");
(ScadaDBAddr为你建的数据源名变量,ScadaDBUserName为用户名变量,ScadaDBPwd为密码变量)
oyljerry 2009-06-26
  • 打赏
  • 举报
回复
首先分析环境是否跟之前好的有任何区别,仔细对比一下、
其次分析一下连接字符串等,是否正确,到数据库中执行以下

7,540

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧