开发者社区> 问答> 正文

MFC ado连接sqlserver2005 报错 [TCP/IP Socket?报错

我这写了个连接数据库查询的,是每隔一分钟进行一次多表的连接查询:

全局的声明:

_ConnectionPtr   m_pConnection;
_RecordsetPtr pPtr;
连接的初始化代码:
InitDBConnect()
{
    try
	{
		//创建连接对象实例
              m_pConnection.CreateInstance("ADODB.Connection");
		_bstr_t strConnect = strSRC;
		LOG::Out0("INFO", "数据库连接初始化:%s", strSRC);
		//使用Open方法打开数据库
		m_pConnection->Open(strConnect,"","",adModeUnknown);

		pPtr.CreateInstance("ADODB.Recordset");
		LOG::Out0("INFO", "数据库初始化完毕!");
	}
	catch(_com_error e)
	{	
		LOG::Out0("ERROR", "初始化错误: %s", e.ErrorMessage());
		LOG::Out0("ERROR", "DESCRIPTION:%s", (char *)e.Description());
	}
}

查询的代码:
void CDataAnalyzingDlg::DBQuery(CString sql)
{
    LOG::Out0("INFO", "查询:%s", sql);
    _variant_t varSQL(sql);
    if(FAILED(pPtr->Open(varSQL, m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText)))
    {
        //AfxMessageBox("数据查询失败!");
        LOG::Out0("ERROR", "查询失败");
        pPtr->Release();
        return;
    }
}
我的程序执行流程:
InitDBConnect()
//一分钟一次
while(true){
    //多表的连接查询
DBQuery(sql);
//本地处理。。。。
PpPtr->Close();


就报了如题的错误,请问具体导致的原因是什么,我怀疑是不是我的连接没有关闭导致的。
最好能提供个修改思路,
另外,我上面写的两个函数能应该怎样写才能更好!
谢谢了!!!

展开
收起
爱吃鱼的程序员 2020-06-14 20:25:29 514 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    报的什么错?socket错误都有一个错误码的。贴出来看看。

    另:一分钟查询一次数据库,这个频度有点高,建议你改用缓存机制,不然数据库受不了。

    谢谢您的回答,我现在已经把Tcp/ip的那个错误解决了,我程序写错了,造成了个死循环,数据库直接拒绝连接了。我现在是把我的获得的结果先放到个CStringArray中了,pPtr->close(),然后再处理了。不知道这样会不会好点,因为我这本身每次的数据也不是非常多,再次谢谢了
    2020-06-14 20:25:45
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
TCP Cluster for mqtt技术实施方案 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载

相关实验场景

更多