读书人

用ADO访问数据库发生异常,详请进

发布时间: 2012-04-04 16:38:51 作者: rapoo

用ADO访问数据库发生错误,详请进!
我用多线程访问我的 access型的数据库(mdb)
用了两个adoconnection 控件和多个 adoquery 控件,
其中3个adoquery 公用 ADOConnection1,其它的公用ADOConnection2.
多个子线程会多次或同时访问这个数据库,程序在运行时有时会出现:
"对象打开时,不允许操作" 或 "在异步运行时,操作不能被执行" 偶尔还有"List index out of bounds (0)".

有时运行又没有问题。

ADOConnection1.Connected := False;

ADOConnection1.ConnectionString := Provider = 'Microsoft.Jet.OLEDB.4.0;Data Source=9db.mdb;Persist Security Info=False';
ADOConnection1.Connected := True;

ADOConnection2.Connected := False;
ADOConnection2.ConnectionString := frmDM.ADOConnection1.ConnectionString;
ADOConnection2.Connected := True;




[解决办法]
明显存在线程冲突
[解决办法]
分析清楚,然后加锁
[解决办法]
遇到这类问题明显是对业务的逻辑没有完全把握,画个流程图吧,肯定有一个冲突访问的。任何时候保证只有一个访问,特别是在有Write存在的情况下。
[解决办法]

探讨

程序时原来的老人写的,可能没有怎么测试,现在要用了,我去看、去测试发现这些问题的,想问都没有办法问。唉,真麻烦

[解决办法]
跟踪一下。

读书人网 >.NET

热点推荐