我用多线程访问我的 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;
用了两个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;
解决方案 »
- delphi与arm通信的client编写
- delphi将当前dbgrid中数据导出到excel中
- 国庆小礼物:帮你翻译
- 我公司寻求Delphi高手项目合作(北京)
- 股票K线图局部放大求救
- 最近忙换工作,本身的工作也比较忙一直没空找家新公司。比较郁闷,来散分!
- 如何取得备注框光标当前的位置
- 如何将一个自定义function函数成一个窗体单元私有成员函数
- 如何快速录入数据?
- 论坛设置不合理,只能显示前120个问题,页数只有4页,若要看以前的问题无法看!太过份了!
- 请问有谁能做出这种效果吗?
- Access violation at address 4DD4186B in module 'msado15.dll'错误,急
明显是越界了,比如你有循环访问数据集,应该是从0到数据集行数-1,而不是从0到数据集行数,数组的上界是3,你去访问数组[4]
SELECT IsApplyDown FROM MachinePurview
WHERE (1=1)
AND NetNo=IntToStr(aNetNo)
AND MachineSN= QuotedStr(aMachineSN)
AND MachineUses=IntToStr(aMachineUses)
AND MachineState=True
AND IsUseThread=True
AND IsApplyDown=True
adoqGetData: TADOQuery;if adoqGetData.Active then
adoqGetData.Close;
adoqGetData.SQL.Text := aSQL; //aSQL 是SQL语句
adoqGetData.Open; //这个地方报错'在异步运行时,操作不能被执行' 或 "对象打开时,不允许操作" 是多线程的,第一次执行没有问题,第二次执行时才报这样的错误。