如何将XML文件导入到数据库中去

 我来答
百度网友10a24bf
2017-05-19 · TA获得超过1.3万个赞
知道大有可为答主
回答量:1.3万
采纳率:95%
帮助的人:2886万
展开全部
var tmpquery2:tadoquery;
tmpfile:string;
tmptable:tadotable;
begin
if application.MessageBox( '导入答案将会清空以前的考生答案,确定是否继续? ', '提醒 ',MB_OKCANCEL or MB_ICONWARNING)=mrok then

begin
IF BSopen.Execute then
try
try
begin
tmpfile:=bsopen.FileName;
tmptable:=tadotable.Create(self);
tmpquery2:=tadoquery.Create (self);
tmpquery2.Connection :=dm.connect ;
tmptable.Connection :=dm.connect ;
tmptable.TableName:= 'exam_answer ';

with tmpquery2 do
begin
close;
sql.Clear;
sql.Add( 'delete * from exam_answer ');
execsql;
end;

tmptable.LoadFromFile(tmpfile);

tmptable.First;

while not tmptable.Eof do
begin
with tmpquery2 do
begin
close;
sql.Clear;
sql.Add( 'insert into exam_answer(kh,xm,sj_id,sjts,tk_id,stbh,tx,daa,dab,dac,dad,dae,daf,tkda,df) values(:kh,:xm,:sj_id,:sjts,:tk_id,:stbh,:tx,:daa,:dab,:dac,:dad,:dae,:daf,:tkda,:df) ');
parameters.ParamByName( 'kh ').Value :=tmptable.fieldbyname( 'kh ').AsString;
parameters.ParamByName( 'xm ').Value :=tmptable.fieldbyname( 'xm ').AsString;
parameters.ParamByName( 'sj_id ').Value :=tmptable.fieldbyname( 'sj_id ').AsString;
parameters.ParamByName( 'tx ').Value :=tmptable.fieldbyname( 'tx ').AsString;
parameters.ParamByName( 'sjts ').Value :=tmptable.fieldbyname( 'sjts ').AsString;
parameters.ParamByName( 'tk_id ').Value :=tmptable.fieldbyname( 'tk_id ').AsString;
parameters.ParamByName( 'stbh ').Value :=tmptable.fieldbyname( 'stbh ').AsString;
parameters.ParamByName( 'daa ').Value :=tmptable.fieldbyname( 'daa ').AsBoolean;
parameters.ParamByName( 'dab ').Value :=tmptable.fieldbyname( 'dab ').asboolean;
parameters.ParamByName( 'dac ').Value :=tmptable.fieldbyname( 'dac ').AsBoolean ;
parameters.ParamByName( 'dad ').Value :=tmptable.fieldbyname( 'dad ').AsBoolean ;
parameters.ParamByName( 'dae ').Value :=tmptable.fieldbyname( 'dae ').AsBoolean ;
parameters.ParamByName( 'daf ').Value :=tmptable.fieldbyname( 'daf ').AsBoolean ;
parameters.ParamByName( 'tkda ').Value :=tmptable.fieldbyname( 'tkda ').AsString;
parameters.ParamByName( 'df ').Value :=tmptable.fieldbyname( 'df ').AsString;
execsql;
end;
tmptable.next;
end;
showmessage( '导入完成,累死了... ')
end;
finally
tmptable.Free;
tmpquery2.Free;
end;
except
showmessage( '导入未完成。:( ')
end;
end;
end;

如果单纯的LOAD出来,它是不直接写到后台数据表的。分析下源码就知道它LOAD之前先CLOSE了数据表。只有一条一条增加到后台数据表了。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
秋叶妈妈
2019-11-16 · TA获得超过3850个赞
知道大有可为答主
回答量:3027
采纳率:27%
帮助的人:416万
展开全部
一般情况下数据库系统都提供了导入文本数据的工具
但是好像没有xml到数据库表的导入工具
你可以写个小程序,将xml转换为文本文件,然后使用工具导入
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式