各位大侠:
我写了一段连接MSSQL数据库的代码,具体如下:
bool CSQL::ConnectDB()
{
try
{
m_pConnection =_ConnectionPtr(__uuidof(Connection));
m_pCommand = _CommandPtr(__uuidof(Command));
CString conStr="Provider=SQLOLEDB.1;Server="+m_sIp;
conStr = conStr + ";DATABASE="+m_sDatabaseName+";Persist Security Info=False;User ID="+m_sUserName;
conStr = conStr +";PWD="+m_sPassWord+";Initial Catalog="+m_sDatabaseName;
m_pConnection->ConnectionString=(_bstr_t)conStr;
m_pConnection->Open("","","",adConnectUnspecified);
m_pCommand->put_ActiveConnection(_variant_t((IDispatch*)m_pConnection));
} catch(_com_error e)
{
AfxMessageBox(e.ErrorMessage());
return FALSE;
}
return TRUE;
}
对于数据库的管理,我采用的是连接一次,在程序正常退出时关闭连接的方法。在测试中发生了一些异常情况造成程序异常退出,下次连接数据库就连接失败了。我不知道这是什么原因,希望各位指点一下,提供一些解决方法。
我想问问一般的数据库管理策略应该是在采取每次操作(比如:添加、删除、查询等)之前打开,操作完毕后就关闭连接的方法还是我上面所说的办法更合理些,为什么?
另外,我想在程序异常退出时通过捕获异常的方法来解决我前面所述的问题,不知道是否可行,如果可行那么我应该怎么确定发生了什么异常,还有就是在异常处理中我应该怎么做(普遍的对于上面问题的处理方法)?谢谢大家!
我写了一段连接MSSQL数据库的代码,具体如下:
bool CSQL::ConnectDB()
{
try
{
m_pConnection =_ConnectionPtr(__uuidof(Connection));
m_pCommand = _CommandPtr(__uuidof(Command));
CString conStr="Provider=SQLOLEDB.1;Server="+m_sIp;
conStr = conStr + ";DATABASE="+m_sDatabaseName+";Persist Security Info=False;User ID="+m_sUserName;
conStr = conStr +";PWD="+m_sPassWord+";Initial Catalog="+m_sDatabaseName;
m_pConnection->ConnectionString=(_bstr_t)conStr;
m_pConnection->Open("","","",adConnectUnspecified);
m_pCommand->put_ActiveConnection(_variant_t((IDispatch*)m_pConnection));
} catch(_com_error e)
{
AfxMessageBox(e.ErrorMessage());
return FALSE;
}
return TRUE;
}
对于数据库的管理,我采用的是连接一次,在程序正常退出时关闭连接的方法。在测试中发生了一些异常情况造成程序异常退出,下次连接数据库就连接失败了。我不知道这是什么原因,希望各位指点一下,提供一些解决方法。
我想问问一般的数据库管理策略应该是在采取每次操作(比如:添加、删除、查询等)之前打开,操作完毕后就关闭连接的方法还是我上面所说的办法更合理些,为什么?
另外,我想在程序异常退出时通过捕获异常的方法来解决我前面所述的问题,不知道是否可行,如果可行那么我应该怎么确定发生了什么异常,还有就是在异常处理中我应该怎么做(普遍的对于上面问题的处理方法)?谢谢大家!
解决方案 »
- 哪位大神帮忙指点一下啊!!!!!!!
- C++是否有类似java中的Ibatis和Hibernate等ORM库
- InitializeCriticalSection可能抛出的异常,我如何捕获?
- xml是纯文本吗?可以保存二进制信息吗?如果不能存二进制,为什么说新版的office是用xml格式保存的呢?
- 急等!一个oracle数据库修改语句的问题!
- Visual Studio.NET转换Visual C++6.0程序出现错误
- TRY 和 CATHCH 为什么不能嵌套在 if-else 语句中,该如何处理?
- 关于控制台窗口的句柄
- VC难题,高手指教
- 我有个问题急待解决
- Cgridctrl控件是什么?
- ftp程序下载时很卡,界面还刷新不了?
e.Description();
用这个看看有什么错误。
自己封装成类也很容易
打印显示“未指明错误”