我这写了个连接数据库查询的,是每隔一分钟进行一次多表的连接查询:
全局的声明:
_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()//一分钟一次
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
报的什么错?socket错误都有一个错误码的。贴出来看看。
另:一分钟查询一次数据库,这个频度有点高,建议你改用缓存机制,不然数据库受不了。
谢谢您的回答,我现在已经把Tcp/ip的那个错误解决了,我程序写错了,造成了个死循环,数据库直接拒绝连接了。我现在是把我的获得的结果先放到个CStringArray中了,pPtr->close(),然后再处理了。不知道这样会不会好点,因为我这本身每次的数据也不是非常多,再次谢谢了