如何使用dbexpress多线程访问数据库? 本人在线程里运用TSQLQuery.ExecSql ThreadExecSql.create(FQryTemp,sExcSQL);
       //FQryTemp为主线程窗口传过来的TSQLQuery控件;sExcSQL为要执行的SQL语名内容  ... ... with FQuery do  // FQuery :TSQLQuery 为ThreadExecSql中保护对象
  try
    SQL.Clear;
    SQL.Add( FExcSQL );
    FExcSQL := '';
    ExecSql; //执行这句就没反应了?????????????
  except
     Terminate;
  end;
为何执行到ExecSql处就没反应了,不用线程是可以成功的,为什么?我很菜的,请各位多多帮忙!

解决方案 »

  1.   

    看不出问题,你传个Form到线程看看
    不过在线程里最好单独创建数据库连接,与原来的连接没有关系最好
      

  2.   

    我想你应该已经在你的线程(ThreadExecSql)里放了dbexpress中应该用的类了吧。
    ExecSql应该是执行SQL(insert, update, modify, delete, drop),并对数据库进行修改。
    实在是看不出来你帖出的程序的机制。
      

  3.   

    在ExecSql之前有没有和数据库进行连接呀?
        SQL.Clear;
        SQL.Add( FExcSQL );
        FExcSQL := '';
        ExecSql; //执行这句就没反应了?????????????
        是不是应该:
        SQL.Clear;
        FExcSQL := '条件语句';
        SQL.Add( FExcSQL );
        ExecSql;