VS2005 写的测试程序 ADO 连接oracle 10 执行SQL语句卡住 #import "C:/Program Files/Common Files/System/ado/msado15.dll" no_namespace rename("EOF","adoEOF"), rename("BOF","adoBOF")这个是我引用的库请大家帮忙看下,到底怎么回事,我本地用PL/SQL develope 都是好的 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以用ADO助手试试你的数据库连接字符串和SQL语句。 用ADO助手后,执行插入SQL 文还是卡主,程序无响应。执行删除SQL文 可以执行成功,但影响行数是0,应该删除掉表全部的行的。以上同样的sQL文在PL/SQL developer 中都可以正确执行。 试一下吧:void COracleTestDlg::OnBnClickedButton3(){ // TODO: 在此添加控件通知处理程序代码 if ( CoInitialize( NULL ) != S_OK ) { AfxMessageBox( _T( "初始化Com库失败!" ) ); return; } _ConnectionPtr a_pConnection; _RecordsetPtr a_pRecordset; _variant_t vNull; try { // 初始化Connection 指针 a_pConnection.CreateInstance(__uuidof(Connection)); // 初始化Recordset 指针 a_pRecordset.CreateInstance(__uuidof(Recordset)); // 连接数据库 CString strCon = "Provider=OraOLEDB.Oracle.1; Password=admin; User ID=system; Data Source=10.10.0.172/test111; Persist Security Info=True"; a_pConnection->Open(strCon.AllocSysString(), "", "", adModeUnknown); } catch(_com_error e) { CString errormessage; errormessage.Format(_T("数据库连接失败!\r\n错误信息:%s"), e.ErrorMessage()); AfxMessageBox(errormessage); //CoUninitialize(); return ; } /////////////////////////////////////////////// try { CString strSql = _T("delete from mac_info_01"); _bstr_t strCmd = strSql; a_pRecordset = a_pConnection->Execute(strCmd,&vNull,adCmdText); //a_pCommand->Execute(&vNULL, &vNULL, adCmdText); // 执行到这块就无响应 return; } catch(_com_error e) { e.Description(); AfxMessageBox(e.ErrorMessage()); return; }} Oracle 10 我调试的时候,第一次可以插入进去数据,第二次,就卡死在那里了,会不会因为没有关闭连接造成的。 同样的程序,我在Oracle中新建了一个用户,这个问题就好了,但不知道为什么用system 这个用户就会出现这种卡主的情况。 if ( CoInitialize( NULL ) != S_OK )这个移到外面去,不要每次按键都进行初始化 我的问题解决了,原因不清楚,可能是system 用户的原因吧 创建了一个线程用于接收网络数据,为什么总是无法接受呢?高手! 视频监控 实时处理 FTP LIST返回列表问题,该如何解决? 怎么使用Serialize()处理函数指针 如何得到本机上ORACLE的服务名? 使用CArchive网络传输CArray数据不能析构?急了数天!拜托 如何控制光驱的弹出和弹入? 求pop3客户端代码或文档或提示!(我想写一个简单的有收邮件功能的类或函数) SQL Sever数据库 菜鸟发问:8皇后多解之递归程序,栈溢出乎?内存泄露乎? 如何使得ATL生成的COM组件与MFC多文档进行双向通信? 从IHTMLDocument2获得IHTMLDocument3的问题
执行删除SQL文 可以执行成功,但影响行数是0,应该删除掉表全部的行的。以上同样的sQL文在PL/SQL developer 中都可以正确执行。
void COracleTestDlg::OnBnClickedButton3()
{
// TODO: 在此添加控件通知处理程序代码 if ( CoInitialize( NULL ) != S_OK )
{
AfxMessageBox( _T( "初始化Com库失败!" ) );
return;
} _ConnectionPtr a_pConnection;
_RecordsetPtr a_pRecordset;
_variant_t vNull;
try
{
// 初始化Connection 指针
a_pConnection.CreateInstance(__uuidof(Connection));
// 初始化Recordset 指针
a_pRecordset.CreateInstance(__uuidof(Recordset));
// 连接数据库
CString strCon = "Provider=OraOLEDB.Oracle.1; Password=admin; User ID=system; Data Source=10.10.0.172/test111; Persist Security Info=True";
a_pConnection->Open(strCon.AllocSysString(), "", "", adModeUnknown);
}
catch(_com_error e)
{
CString errormessage;
errormessage.Format(_T("数据库连接失败!\r\n错误信息:%s"), e.ErrorMessage());
AfxMessageBox(errormessage);
//CoUninitialize();
return ;
}
///////////////////////////////////////////////
try
{
CString strSql = _T("delete from mac_info_01");
_bstr_t strCmd = strSql;
a_pRecordset = a_pConnection->Execute(strCmd,&vNull,adCmdText);
//a_pCommand->Execute(&vNULL, &vNULL, adCmdText); // 执行到这块就无响应
return;
}
catch(_com_error e)
{
e.Description();
AfxMessageBox(e.ErrorMessage());
return;
}
}
第二次,就卡死在那里了,会不会因为没有关闭连接造成的。
这个移到外面去,不要每次按键都进行初始化