为什么用CDatabase 、CRecordSet类 做程序,容易出问题
是这样的
有一个数据库,一表MyAcc.
然后程序里有这样的操作
CDatabase Database;
Database.OpenEx(g_strConnectDatabase,CDatabase::noOdbcDialog );
strSql.Format("Insert into LogInfo 。。。);
Database.ExecuteSQL(strSql);
strSql.Format("update LogSate set state=0 where UID=%d",uID);//flag=1表示已经做过更新
Database.ExecuteSQL(strSql);
=======================================================================
上面执行没有问题,然后到了对MyUserInfo进行更新的时候,就说:连接超时
程序异常退出,还是提示:
超时已过期 State:S1T00,Native:0,Origin:[Microsoft][ODBC SQL Server Driver]
我把上面两个操作都去掉了,结果也是一样
这几个表都是同一个数据库中的表
//
strSql.Format("update MyUserInfo set flag=1 where ID=%d",uID);//flag=1表示已经做过更新
Database.ExecuteSQL(strSql);-----执行到这里,卡一会,然后,就异常退出了
为什么要CRecordset、CDatabase做数据库编程,出现这样那样的问题呢
如果放在服务程序要大量并发的访问数据库,那不是更糟糕啊
[解决办法]
执行一些数据库操作的简单指令试下,确定SQL运行正常?
[解决办法]
查询分析器也过期,那就不是CRecorset的问题了。
数据量很大吗?索引太多?导致更新缓慢而过期?
[解决办法]
楼主别太固执,找个能用的类似软件配置在你的环境下,尝试一下,也有可能是你配置问题。
[解决办法]
ADO是个框架模型,一套接口适用于很多数据源,只要能提供provider。
不过现在MS已经不准备更新ADO了,对新开发的程序MS推荐使用ODBC