如何使用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处就没反应了,不用线程是可以成功的,为什么?我很菜的,请各位多多帮忙!
//FQryTemp为主线程窗口传过来的TSQLQuery控件;sExcSQL为要执行的SQL语名内容 ... ... with FQuery do // FQuery :TSQLQuery 为ThreadExecSql中保护对象
try
SQL.Clear;
SQL.Add( FExcSQL );
FExcSQL := '';
ExecSql; //执行这句就没反应了?????????????
except
Terminate;
end;
为何执行到ExecSql处就没反应了,不用线程是可以成功的,为什么?我很菜的,请各位多多帮忙!
不过在线程里最好单独创建数据库连接,与原来的连接没有关系最好
ExecSql应该是执行SQL(insert, update, modify, delete, drop),并对数据库进行修改。
实在是看不出来你帖出的程序的机制。
SQL.Clear;
SQL.Add( FExcSQL );
FExcSQL := '';
ExecSql; //执行这句就没反应了?????????????
是不是应该:
SQL.Clear;
FExcSQL := '条件语句';
SQL.Add( FExcSQL );
ExecSql;