我实现把数据保存为XML文件 先用ADOQUERY查询,然后保存
form1.ClientDataSet1.SaveToFile('e:\hhhh.xml',dfxml);已经成功,
但是如何导入呢反过来把刚才生成的XML导入数据库怎么实现呢 ????????? form1.ClientDataSet1.LoadFromFile('e:\hhhh.xml');
现在已经把数据导入到ClientDataSet里面 但是如何实现从ClientDataSet到SQL数据库对应的表呢?还需要用什么控件呢
form1.ClientDataSet1.SaveToFile('e:\hhhh.xml',dfxml);已经成功,
但是如何导入呢反过来把刚才生成的XML导入数据库怎么实现呢 ????????? form1.ClientDataSet1.LoadFromFile('e:\hhhh.xml');
现在已经把数据导入到ClientDataSet里面 但是如何实现从ClientDataSet到SQL数据库对应的表呢?还需要用什么控件呢
解决方案 »
- 求助:如何实现控件里插入型输入方式?
- 紧急求救imagelist控件上显示的图形打印问题???
- 科学记数法如何转换为普通格式,如8.45E+07 转换为85389000
- 如何在DBGrid中完成分页显示?
- 如何控制Word的页面设置,实现同一个Word文件的横向竖向都有。
- 如何给IHTMLDocument2类型的变量赋值。
- 数据库图片显示,求救!!!!!!!!!
- 当鼠标的中键滚动时,如何是dbgrid中的记录指针也同时移动?
- 卖书了,j2ee、java、delphi和基本项目管理的书,价钱好商量!
- 没有人会把汉字转化为byte啊,用keybd-event输出么????有人会么???
- 求D2006下载地址,散分
- 为什么用delphi7的TImage控件无法显示用photoshop转换来的.jpg文件呢?
form1.ClientDataSet1.LoadFromFile('e:\hhhh.xml');
form1.ClientDataSet1.ApplyUpdates(0);
procedure GetInsertSQL(CDS:TClientDataSet;TableName:String;SQLS:TStrings);
function GetFieldValueStr(Field:TField):String;
begin
case Field.DataType of
ftFMTBcd,ftBCD,ftFloat,ftInteger,ftSmallInt,ftBytes:Result:=Field.AsString;
ftBoolean:if Field.AsString='True' then Result:='1' else Result:='0';
else Result:=''''+Field.AsString+'''';
end;
end;
var
fi:Integer;
Names:String;
Values:String;
begin
SQLS.Clear;
with CDS do
begin
MergeChangeLog;
First;
while Not Eof do
begin
Names :='';
Values:='';
for fi:=0 to Fields.Count-1 do
begin
if Fields[fi].AsString<>'' then
begin
Names:=Fields[fi].FieldName;
Values:=GetFieldValueStr(Fields[fi]);
Break;
end;
end;
for fi:=fi+1 to Fields.Count-1 do
begin
if Fields[fi].AsString<>'' then
begin
Names:=Format('%s,%s',[Names,Fields[fi].FieldName]);
Values:=Format('%s,%s',[Values,GetFieldValueStr(Fields[fi])]);;
end;
end;
if (Names<>'') and (Values<>'') then
SQLS.Add(Format('insert into %s(%s)values(%s)',[TableName,Names,Values]));
end;
end;
end;
//使用方法如下
GetInsertSQL(CDS,TableName,SQLS);
ADOQuery1.Close;
for i:=0 to SQLS.Count-1 do
begin
ADOQuery1.SQL.Text:=SQLS[i];
ADOQuery1.Execute;
end;
GetInsertSQL(CDS,TableName,SQLS);//通过一个TClientDataSet和表名获得其插入SQL语句序列
ADOQuery1.Close;
for i:=0 to SQLS.Count-1 do//分别执行这个SQL序列
begin
ADOQuery1.SQL.Text:=SQLS[i];
ADOQuery1.ExeSQL;
end;
挺好用的。
form1.ClientDataSet1.LoadFromFile('d:\aa.xml');
form1.ClientDataSet1.ApplyUpdates(0);
这样为什么不可以呢?
还有什么简单办法吗 目的就是把XML文件导入SQL数据库
ClientDataSet1.LoadFromFile('d:\aa.xml');
showmessage(form1.ClientDataSet1.XMLData);//有数据,也就是XML文件的内容已经加载到ClientDataSet1,但是下面的ApplyUpdates好像没有起作用,没有数据库表还是没有数据?
try
ClientDataSet1.ApplyUpdates(0);
except
end;
这个只是对于更改原数据库记来说的,我试了,可以更新
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, ADODB, Provider, DBClient, Grids, DBGrids;type
TForm1 = class(TForm)
ClientDataSet1: TClientDataSet;
DataSetProvider1: TDataSetProvider;
ADOQuery1: TADOQuery;
ADOConnection1: TADOConnection;
Button1: TButton;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
Button2: TButton;
Button3: TButton;
ADOQuery1serviceid: TIntegerField;
ADOQuery1servicename: TStringField;
ADOQuery1Class: TStringField;
ADOQuery1powerblockname: TStringField;
ADOQuery1Proc_Code: TStringField;
ADOQuery1keynum: TStringField;
ADOQuery1deleted_flag: TStringField;
ADOQuery1comment: TStringField;
ADOQuery1TransShow: TIntegerField;
ClientDataSet1serviceid: TIntegerField;
ClientDataSet1servicename: TStringField;
ClientDataSet1Class: TStringField;
ClientDataSet1powerblockname: TStringField;
ClientDataSet1Proc_Code: TStringField;
ClientDataSet1keynum: TStringField;
ClientDataSet1deleted_flag: TStringField;
ClientDataSet1comment: TStringField;
ClientDataSet1TransShow: TIntegerField;
DBGrid2: TDBGrid;
DataSource2: TDataSource;
ADOTable1: TADOTable; procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}
procedure TForm1.Button3Click(Sender: TObject);
begin
form1.ADOConnection1.Connected:=true;
form1.ADOQuery1.Active:=true;
form1.ADOTable2.Active:=true;
form1.ClientDataSet1.Active:=true;
form1.ADOTable1.Active:=true;
try
form1.ClientDataSet1.Open ;
except
end;
ClientDataSet1.LoadFromFile('d:\aa.xml');
showmessage(form1.ClientDataSet1.XMLData);
ClientDataSet1.CheckBrowseMode();
try
ClientDataSet1.ApplyUpdates(0);
except
end;end;
end.可是我得真的不行 呀大哥 小弟试了很多次了 请赐教
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, ADODB, Provider, DBClient, Grids, DBGrids;type
TForm1 = class(TForm)
ClientDataSet1: TClientDataSet;
DataSetProvider1: TDataSetProvider;
ADOQuery1: TADOQuery;
ADOConnection1: TADOConnection;
Button1: TButton;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
Button2: TButton;
Button3: TButton;
ADOQuery1serviceid: TIntegerField;
ADOQuery1servicename: TStringField;
ADOQuery1Class: TStringField;
ADOQuery1powerblockname: TStringField;
ADOQuery1Proc_Code: TStringField;
ADOQuery1keynum: TStringField;
ADOQuery1deleted_flag: TStringField;
ADOQuery1comment: TStringField;
ADOQuery1TransShow: TIntegerField;
ClientDataSet1serviceid: TIntegerField;
ClientDataSet1servicename: TStringField;
ClientDataSet1Class: TStringField;
ClientDataSet1powerblockname: TStringField;
ClientDataSet1Proc_Code: TStringField;
ClientDataSet1keynum: TStringField;
ClientDataSet1deleted_flag: TStringField;
ClientDataSet1comment: TStringField;
ClientDataSet1TransShow: TIntegerField;
DBGrid2: TDBGrid;
DataSource2: TDataSource;
ADOTable1: TADOTable;procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}
procedure TForm1.Button3Click(Sender: TObject);
begin
form1.ADOConnection1.Connected:=true;
form1.ADOQuery1.Active:=true;
form1.ADOTable2.Active:=true;
form1.ADOTable1.Active:=true;
ClientDataSet1.Active:=False;
ClientDataSet1.LoadFromFile('d:\aa.xml');
showmessage(form1.ClientDataSet1.XMLData);
ClientDataSet1.CheckBrowseMode();
try
ClientDataSet1.ApplyUpdates(0);
except
end;end;
end.