用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存在的情况下。
[解决办法]
[解决办法]
跟踪一下。