读出xml然后写入数据库的问题

kobaer 2009-03-12 05:30:55
我现在想得是将一个xml文件得值 全部弄到数据库表中
数据库表什么值没有
我用一个ADOQuery查询出xml得值
然后想用ADOQuery放到数据库中
...全文
147 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Radar2006 2009-03-19
  • 打赏
  • 举报
回复
mark
bigfoot001 2009-03-18
  • 打赏
  • 举报
回复

dsXML.SaveToFile('TableName.xml',pfXML);
dsXML.LoadFromFile('TableName.xml');
zzxap 2009-03-14
  • 打赏
  • 举报
回复
。net就很方便,读取到dataset中
DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath("~/bookstore.xml"));

再用for循环写入数据库
shuihan20e 2009-03-14
  • 打赏
  • 举报
回复

<?xml version="1.0" encoding="GB2312" ?>
<root>
<SYS_User>
<ID>1001</ID>
<UserName>Hunter</UserName>
<Pwd>DBD5</Pwd>
<PwdType>0</PwdType>
</SYS_User>
</root>
shuihan20e 2009-03-14
  • 打赏
  • 举报
回复
贴出你的XML
另外,我原来写过的

procedure DealXml(strXmlName:PChar);
var
//根结点和一级子结点
node,subnode :IXMLNode;
//一级和二级子结点列表
nodelist,subnodelist: IXMLNodeList;
//一级和二级子结点的数目
subCount,subsubCount: integer;
j, k:integer;
//记录条数
RecCount: Integer;
//插入数据库的SQL语句
insertSql: string;
errstr: string;
XMLDoc:IXMLDocument;
qryLogin:TADOQuery;
begin
if length(strXmlName) <= 0 then
begin
//Application.MessageBox(PChar('传入的XML文件为空'), PChar('错误'), mb_ok + mb_iconerror);
//writeLog
Exit;
end;

XMLDoc:=TXMLDocument.Create(nil);
XMLDoc.LoadFromFile(strXmlName);
XMLDoc.Active := true;
//根结点
node := XMLDoc.DocumentElement;
//如果只有根结点的子结点数量不对,说明文件不对
subCount := node.ChildNodes.Count;
//需要下载的文件数量是30个,不需要下载的在xml中没有节点
if subCount<>30 then
begin
//WriteLog('下载的xml文件不正确');
//exit;
end;
nodelist := node.ChildNodes;
subnode := nodelist.Nodes[0];
subsubcount := subnode.ChildNodes.Count;
//SYS_User
if subsubcount > 0 then //如果有记录,就更新到数据库
begin
recCount := subsubcount div 19;
subnodelist := subnode.ChildNodes;
k := 0;
for j:=0 to recCount-1 do
begin
insertSql:='INSERT INTO SYS_User VALUES (';
insertSql:=insertSql+subnodelist.Nodes[k].Text+','; //id
k:=k+1;
insertSql:=insertSql+'"'+subnodelist.Nodes[k].Text+'"'+','; //username
k:=k+1;
insertSql:=insertSql+'"'+subnodelist.Nodes[k].Text+'"'+','; //pwd
k:=k+1;
insertSql:=insertSql+subnodelist.Nodes[k].Text+')'; //pwdtype
k:=k+1;
with qryLogin do begin
SQL.Clear;
sql.Add(insertSql);
ExecSQL;
end;
end;
end;


<?xml version="1.0" encoding="GB2312" ?>
- <root>
- <SYS_User>
<ID>1001</ID>
<UserName>Hunter</UserName>
<Pwd>DBD5</Pwd>
<PwdType>0</PwdType>
</SYS_User>
starluck 2009-03-13
  • 打赏
  • 举报
回复
[Quote=引用楼主 kobaer 的帖子:]
我现在想得是将一个xml文件得值 全部弄到数据库表中
数据库表什么值没有
我用一个ADOQuery查询出xml得值
然后想用ADOQuery放到数据库中
[/Quote]

自己打包的XML結構是什麼樣的,自己再做個解析再轉入就行了。
wwwzxl 2009-03-13
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 zzflover 的回复:]
笨点的方法是逐个读取xml的值,然后写进数据库。
[/Quote]up
7年 2009-03-13
  • 打赏
  • 举报
回复
笨点的方法是逐个读取xml的值,然后写进数据库。
isinosun 2009-03-13
  • 打赏
  • 举报
回复
进行分析后,逐句导入,这样比较安全。因为xml如果写的不规范,直接导入会有问题
阿三 2009-03-13
  • 打赏
  • 举报
回复
在delphi中有关于xml操作的组件,可以调用。
bdmh 2009-03-13
  • 打赏
  • 举报
回复
如果你的xml文件是用ADOQuery导出的,可以用ADOQuery直接Load进来,如果不是,就要用xml组件解析,然后保存到数据库
genispan 2009-03-12
  • 打赏
  • 举报
回复
你的XML文件需要写代码进行解析吗?

2,495

社区成员

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

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