+ -
当前位置:首页 → 问答吧 → delphi ADOQuery1.LoadFromFile如此诡异是什么原因?

delphi ADOQuery1.LoadFromFile如此诡异是什么原因?

时间:2011-12-28

来源:互联网

通常的用法
ADOQuery1.sql.text:='select * from temp ';
ADOQuery1.open;
ADOQuery1.close;
没有问题

然而下面的用法就怪怪的
ADOQuery1.LockType := ltBatchOptimistic;
ADOQuery1.sql.text:='select * from temp where 1=2';
ADOQuery1.LoadFromFile('f.txt');
ADOQuery1.close;

ADOQuery1.LockType := ltOptimistic;
ADOQuery1.sql.text:='select * from temp ';
ADOQuery1.open; ***** 此句出错 提示:'文件 select * from temp'找不到

作者: llyzkjl   发布时间: 2011-12-28

是你的用法有問題吧?文件裝載成功後自動打開。你關閉後又打開,也沒有看到你的連接,自然找不到文件或表。

作者: Oraclers   发布时间: 2011-12-28

用法有問題吧?你從文件裝載,裝載成功後表自動打開,現在你把它關了再打開,也沒看到你的連接,那麼它到那裡打開表呢。

作者: Oraclers   发布时间: 2011-12-28

adoquery的loadfromfile后会断开和数据库的链它的默认commandtype会变为cmdFile,这时你应采用下列方法
  adoquery1.close
  Tadodataset(adoquery1).commandtype:=cmdtext;
  adoquery1.sql.text:='select ......
  adoquery1.open;

作者: funxu   发布时间: 2011-12-28

lZ正解,看LoadFromFile的源码:
procedure TCustomADODataSet.LoadFromFile(const FileName: WideString);
begin
  Close;
  CommandType := cmdFile;
  LockType := ltBatchOptimistic;
  CommandText := FileName;
  Open;
end;

CommandType会变成cmdFile;
LockType变成ltBatchOptimistic;

所以要换会正常模式,要重新更改这2个设置
LZ前面ADOQuery1.LockType := ltBatchOptimistic;这句都可以不用

作者: kaikai_kk   发布时间: 2011-12-28

引用 4 楼 kaikai_kk 的回复:
楼上+楼上的楼上正解,看LoadFromFile的源码:
……

作者: kaikai_kk   发布时间: 2011-12-28

热门下载

更多