运行环境VS08 SQL SERVER08.
数据库连接并已经打开.
出错代码段:
try
{
CString strSQL = _T("select * from student");
pConn->Execute(_bstr_t(strSQL),NULL,adCmdText);
pConn.Release();
AfxMessageBox(_T("SQL语句执行成功!"));
}
catch(_com_error e)
{
pConn.Release();
AfxMessageBox(_T("SQL语句执行失败!"));
}
上面的SQL语句在SQL SERVER中运行没问题.
(求大侠相助)mfc中ado连接SQL SERVER数据库,执行Execute时出错!
答案:2 悬赏:0 手机版
解决时间 2021-02-20 15:25
- 提问者网友:嗝是迷路的屁
- 2021-02-20 04:54
最佳答案
- 五星知识达人网友:归鹤鸣
- 2021-02-20 05:28
这么简单的sql语句当然没问题。
_ConnectionPtr是智能指针,在析构时会自动释放。
你这里pConn.Release(); 释放了,导致后面会重复释放出错。而且你还没关闭连接。
try
{
CString strSQL = _T("select * from student");
pConn->Execute(_bstr_t(strSQL),NULL,adCmdText);
pConn->Close();
AfxMessageBox(_T("SQL语句执行成功!"));
}
catch(_com_error e)
{
pConn->Close();
AfxMessageBox(_T("SQL语句执行失败!"));
}
_ConnectionPtr是智能指针,在析构时会自动释放。
你这里pConn.Release(); 释放了,导致后面会重复释放出错。而且你还没关闭连接。
try
{
CString strSQL = _T("select * from student");
pConn->Execute(_bstr_t(strSQL),NULL,adCmdText);
pConn->Close();
AfxMessageBox(_T("SQL语句执行成功!"));
}
catch(_com_error e)
{
pConn->Close();
AfxMessageBox(_T("SQL语句执行失败!"));
}
全部回答
- 1楼网友:猎心人
- 2021-02-20 06:33
if(sql_login_type == "windows")
{ // windows集成认证登录sql服务器
sprintf_s(ssqldriver, "provider=sqloledb;server=%s;trusted_connection=yes;connect timeout=%s", sql_ip, sql_timeout);
}
else
{ // sql服务器独立认证
sprintf_s(ssqldriver, "provider=sqloledb;server=%s;uid=%s;pwd=%s;connect timeout=%s", sql_ip, sql_usr, sql_pwd, sql_timeout);
}
if((failed(tmp_pconnection.createinstance("adodb.connection"))
|| (failed(tmp_precordset.createinstance("adodb.recordset")))))
{
return false;
}
try
{
// 连接数据库
tmp_pconnection->open(ssqldriver, "", "", adons::adconnectunspecified);
}
catch(_com_error &e)
{
}
//---------- 以上测试数据库服务器连接,vc2010,xp或win7没问题
//--连接成功之后,执行 “use master”转换数据库
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯