如题
解决方案 »
- VC 6.0 编写的openGL程序,在WIN7运行很卡,XP很流畅!~
- 请教下,使用断言ASSERT后,还需要判断传入指针为NULL吗
- 我的程序最小化托盘后的游键弹出菜单问题,没有消失.
- 怎么画点和画线?
- 求助《Visual C++ 技术内幕》(第四版)!
- 菜鸟问
- 我给100分,字体对话框问题
- 急!!--最高1000分--征集以“饮食与健康”的广告词!!
- 在静态分割视窗时,总是出现这样的错误提示(见内)该如何解决?
- 不看此文章不算编程高手,不看此文章你就将错过一个进步的机会~!
- 请问有用MD5做文件完整性校验的么?说说思路和那里可以获取参考资料,谢谢!
- 学习和交流VC的QQ群,欢迎大家加入!群号 4525522
if(m_pConnection->state)//如果关闭了是0,打开是1
if(m_pConnection->state)//如果关闭了是0,打开是1
==========================
你的方法我试过,但是你的_ConnectionPtr对象必须是由:
m_pConnection.CreateInstance("ADODB.Connection");
产生的,试问:如果第一次连接数据库时,m_pConnection对象还没有产生,你
就使用其成员state,必然会产生非法访问错误
if(m_pConnection->state)//如果关闭了是0,打开是1
///////////////////////////////////////////////////////
上叙述方法是不行的。我也遇到过这样的问题,而且这样处理的。但测试的时候发现,一但连接上数据库后,把网线拔了也就是说让他和数据库的连接中断了,跟踪state的状态一直为1。我也没能找到原因。
/////////////////////////////////////////////////////////
我的解决办法是用了一个替代办法,在进行任何操作之前,我去检索一个肯定存在在数据库中的表,如果操作成功,说明连接正常。否则从新连接,该程序到现在运行一直很正常。
但那个状态还是 1 ,如何解释?用什么方法可以知道此次数据库操作是数据库断开了。或者是语法错误或约束什么的造成。。严重关注此帖。。
...
catch
...
如果捕获的信息中,是断开,则GOTO 你重新连接操作
我没有试过,估计你的方法应该可以判断连接是否断开。但是我想找一种开销更小并且更简单易行的办法。比如_ConnectionPtr是否能返回某个错误值表示和服务器的连接已断开需要重新连接数据库。
能否具体说一下,比如说错误码是多少?
#define E_FAIL _HRESULT_TYPEDEF_(0x80004005L)
都可能是连接断开,其他的我这儿还没发现,知道的也发一个
Requery()一下然后根据返回值判断数据库是否连接正常
pConnection->GetStatus();
我在MSN中找不到Connection的GetStates()方法!
HRESULT hr;
hr = m_pConnection.CreateInstance("ADODB.Connection");
if(SUCCESSDED(hr)) //对象创建成功
{
........
}
开始时连接正常。过一会,,数据库断开,此时执行的SQL必然失败。
但那个状态还是 1 ,如何解释?
在使用m_pConnection前先用!
if(m_pConnetion.State)
m_pConnection.Close();//保证你下面的连接对象都是新的!
......
if(m_pConnect->GetState() != adStateOpen)
{
//以前的连接已断开,重新连接
......
}
else
{
//连接保持,可以继续使用
......
}
{ }
catch
{ }
捕捉一下错误看看