我用多线程访问我的   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;

解决方案 »

  1.   

    access型的数据库(mdb) 不做处理的话这是必然的,读取可以多个同时读,要是写入的话同时只能响应一个要求,图省事的话就换数据库,MYSQL,SQL SERVER,ORACLE等都可以,不能换数据库的话你在程序里处理就会麻烦点,就是把写入数据库当一个临界资源,意思就是在同一时间只能有一个线程写入,其他有写入要求的要排队等待