用ADOQuery1.LoadFromFile('c:\aa.xml')导入到缓存中的数据怎么批量更新到数据库中??

pengxuan 2006-03-31 03:20:00
用ADOQuery1.LoadFromFile('c:\aa.xml')导入到缓存中的数据怎么批量更新到数据库中??
或者用其它控件实现相同的功能,请详细说明.谢谢
...全文
482 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
foodztf 2010-06-13
  • 打赏
  • 举报
回复
远程主机数据很多。是不是都要比较呀?认为这样问题很多
foodztf 2010-06-13
  • 打赏
  • 举报
回复
领教了
lifestar2008 2006-04-02
  • 打赏
  • 举报
回复
sxtdxvb 方法可以用的,我们单位以前用过.
XXSingle 2006-04-02
  • 打赏
  • 举报
回复
可以试试用aquery1(读本地文件)直接拷贝到aquery2(连接数据库)然后再保存

仙侣步惊云 2006-04-02
  • 打赏
  • 举报
回复
当然
pengxuan 2006-04-01
  • 打赏
  • 举报
回复
adoq1.fields[i].value:=adoq1.fields[i].value;
这样写是不是不用考虑数据库字段的字段类型,不用区分字符串,数字,Image类型
仙侣步惊云 2006-03-31
  • 打赏
  • 举报
回复
直接用UpdateBatch(arAll)确实无法更新,这我已经多次实验,只有用两个循环逐条逐字段更新
;
var
ls_sql:string;
adoq1;adoq2:TAdoQuery;
begin

....

AdoConn.BeginTrans;
ls_sql:='select * from mydb';
adoq1.sql.add(ls_sql);
adoq2.loadformfile('backupfile');
while not adoq2.eof do
begin
adoq1.append;
for i:=0 to adoq2.fieldcount-1 do
adoq1.fields[i].value:=adoq1.fields[i].value;
adoq1.next;
end;
end;
DataConn.CommitTrans;
windindance 2006-03-31
  • 打赏
  • 举报
回复
没有好的办法,只能用循环一条一条导入
pengxuan 2006-03-31
  • 打赏
  • 举报
回复
DataConn.BeginTrans;
MQuery.LoadFromFile('data.xml');
MQuery.CursorType:=ctStatic; //使用ctKeySet也无效
MQuery.LockType:=ltBatchOptimistic;
MQuery.UpdateBatch(arAll);
DataConn.CommitTrans;

这段代码我试过了,也没有能存入到数据库 中
sxtdxvb 2006-03-31
  • 打赏
  • 举报
回复
adoquery使用 select * from py语句查询。
使用adoquery.loadfromfile后,数据网格中显示了被load的文件内容,但我使用
upUpdateBatch方法无法将数据写回数据库(不发生错误提示)。表结构是相同的。
语句如下:
DataConn.BeginTrans;
MQuery.LoadFromFile('data.xml');
MQuery.CursorType:=ctStatic; //使用ctKeySet也无效
MQuery.LockType:=ltBatchOptimistic;
MQuery.UpdateBatch(arAll);
DataConn.CommitTrans;
此后,向adoquery写入新的查询语句,在使用open方法时
(在写查询语句前,已经close了),发生错误,提示如下:
“文件名、目录名或卷标语法不正确。”
现在程序中的adoquery不好使用了。
以上两个问题如何解决?大家帮帮我!



上午看到你的问题,研究了一下,有些眉目

1 我想你的意思大概是在一台计算机上将数据存为文件,然后在另一台计算机又从
文件恢复到数据库,可惜你的方法行不通,我查看了下,当使用
adoquery1.loadformfile('data.xml');时
通过showmessage(Tadodataset(adoquery1).commandtext)你会发现
commandtext='data.xml'
也就是说这时adoquery1已经断开了与数据库的联系,而在adoquery1打开状态下
commandtext又是只读了,当然也就无法将数据存回数据库了

解决办法,另加一个adoquery2,用它 loadformfile('data.xml'),然后将记录一条
一条的插入到adoquery1中,保证没问题

2 当adoquery使用loadfile时,它的默认commandtype会变为cmdFile,这时你直接修改
sql属性是不行的,应采用下列方法
adoquery1.close
Tadodataset(adoquery1).commandtype:=cmdtext;
adoquery1.sql.text:='select ......
adoquery1.open;

另外,adoquery只是为了照顾人们的使用习惯而存在的,建议你使用adodataset.
sxtdxvb 2006-03-31
  • 打赏
  • 举报
回复
DataConn.BeginTrans;
MQuery.LoadFromFile('data.xml');
MQuery.CursorType:=ctStatic; //使用ctKeySet也无效
MQuery.LockType:=ltBatchOptimistic;
MQuery.UpdateBatch(arAll);
DataConn.CommitTrans;

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧