如何通过xml来更新数据库结构!

本文介绍了一种通过解析XML文件来执行SQL语句的方法,包括创建唯一索引、修改表结构及删除表等操作,并提供了Delphi代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<?xml version="1.0" encoding="GBK"?>

<SqlMain>
<property name="1" table="索引ID_Tpu_Menu3_Cyzgxz">
    create unique index ID_Tpu_Menu3_Cyzgxz on Tpu_Menu3_Cyzgxz(CyzgxzID)
  </property>

  <property name="3" table="T_CYRY_MZ">
    drop table T_CYRY_MZ
  </property>


  <property name="2" table="TPu_Menu8_Clxx">
    alter table tpu_menu8_clxx alter column dzw decimal(6,2)
  </property>
</SqlMain

procedure TFrmMain.UpDataStruct(aFileName:String);
var
  vNode,vChildNode:IXMLNode;
  iLen,i:integer;
  fSqlText,fName,fTable:string;
begin
  try 
    XMLDoc.LoadFromFile(aFileName);
    XMLDoc.Active:=True;
    vNode:=XMLDoc.ChildNodes.FindNode('SqlMain');
    iLen:=vNode.ChildNodes.Count;
    pb1.Max:=iLen*10;
    for i:=0 to iLen-1 do
    begin
      vChildNode:=vNode.ChildNodes.Get(i);
      fSqlText:=vChildNode.NodeValue;
      fName:=vChildNode.Attributes['name'];
      fTable:=vChildNode.Attributes['table'];
      DoSqlText(fSqlText,fName,fTable);
    end;
  except
    on e:Exception do
      Showmessage('XML文件读取错误,请与开发商联系!'+chr(13)+e.Message);
  end;
end;

procedure TFrmMain.DoSqlText(aSqlText,aName,aTable:string);
var
  it:Integer;
begin
  ADOExec.SQL.Clear;
  ADOExec.SQL.Add(aSqlText);
  try
    it:=StrToInt(aName);
    case it of
    1:lb1.Caption:='建立表'+aTable;
    2:lb1.Caption:='更新表'+aTable;
    3:lb1.Caption:='删除表'+aTable;
    10:
    begin
      lb1.Caption:='添加数据表'+aTable;
      ClearData(aTable);
    end;
    11:lb1.Caption:='更新数据表'+aTable;
    else
      lb1.Caption:='更新表'+aTable;
    end;
    ADOExec.ExecSQL;
    memo1.Lines.Add('信息→'+lb1.Caption+'操作成功!');
  except
    on e:Exception do
      memo1.Lines.Add('警告→'+e.Message);
  end;
  pb1.StepIt;
  pb1.Refresh;
  lb1.Refresh;
  memo1.Refresh;
end;


注明出处:http://www.blogjava.net/badboyryan/archive/2007/05/28/120510.html

120510.html

坏男孩 2007-05-28 17:02 发表评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值