_ConnectionPtr m_dbConn;
_CommandPtr m_pCommand;
我的程序中利用 _ConnectionPtr 对象做数据库的连接,由于此应用的数据库操作很频繁,本来处理时是每次操作之前,创建一个连接对象,然后打开数据库的连接,现在发现在数据操作特别频繁的时候这样可能会造成堵塞,造成新的问题。所以想在建立一个成员变量,在构造函数时就将此连接对象创建并打开数据库的连接,但是这样在数据库出现问题或者网络出现故障时,造成连接的物理通道端口,那么此时如何能让应用程序自动的在连接到数据库呢?
_CommandPtr m_pCommand;
我的程序中利用 _ConnectionPtr 对象做数据库的连接,由于此应用的数据库操作很频繁,本来处理时是每次操作之前,创建一个连接对象,然后打开数据库的连接,现在发现在数据操作特别频繁的时候这样可能会造成堵塞,造成新的问题。所以想在建立一个成员变量,在构造函数时就将此连接对象创建并打开数据库的连接,但是这样在数据库出现问题或者网络出现故障时,造成连接的物理通道端口,那么此时如何能让应用程序自动的在连接到数据库呢?
下面的代码检查是否连接过而已。
if(m_pMyDb->State!=adStateClosed)
打开数据库连接需要很长时间。
第2种做法是正确的。
然而你可以在数据库操作的时候加错误捕获处理,(也一般数据库程序必须的处理)
try
{}catch(...)
然后从中得到错误号,就可以判断是否是断开连接。断开则重连。
因为数据库断开会导致异常,捕获到之后在catch段处理里面加GetLastError(),根据得到的错误号判断数据库的状态。
我的经验:直接判断数据库的连接状态是不太准确的。
或许你可以参考一下。
你的这个方法确实可行。不过对于不同的Provider和对应不同的数据库时,是否存在着对应的错误代码不一样呢?如果这样,那可能会比较费劲了。
GetLastError()
得到的错误代码都是等于 0 呢?
只有利用 catch(_com_error &e) 才能得到错误信息
在每次操作之前,执行一下查看当前的Sql版本的语句,如果出错,则应该为数据库连接错误,那么此时重新调用打开连接的方法执行一下。
如何利用.UDL 文件测试连接?请指教
数据库断开的通知?(如突然拔掉网线 ,异常会抛出吗?)