怎ClientDataSet从XML加载数据后在没有改动的情况怎样才能全部写入数据库 ? ( 积分: 100 )

  • 主题发起人 主题发起人 cncharles
  • 开始时间 开始时间
C

cncharles

Unregistered / Unconfirmed
GUEST, unregistred user!
我想做一个SQL数据库初始化程序, 把原来的SQL数据库的基本数据都生成了
XML文件,本来用每条记录都生成Insert Into Values 这样的格式的, 等
新数据库建立好后再用把生成的SQL基本数据文件在查询器执行, 但是如果是
Blob字段就无能为力了,所以只好把每个基本数据表生成XML文件, 再用下面的法
写入到新的数据库中, 各位高手还没有更好的解决方案.
cds1.LoadFromFile('test.xml');
cds1.First;
while not cds1.Eofdo
begin
cds1.Edit;
cds1.Next;
end;
cds1.ApplyUpdates(-1);
end;

CSDN都没人搞得定!
 
我想做一个SQL数据库初始化程序, 把原来的SQL数据库的基本数据都生成了
XML文件,本来用每条记录都生成Insert Into Values 这样的格式的, 等
新数据库建立好后再用把生成的SQL基本数据文件在查询器执行, 但是如果是
Blob字段就无能为力了,所以只好把每个基本数据表生成XML文件, 再用下面的法
写入到新的数据库中, 各位高手还没有更好的解决方案.
cds1.LoadFromFile('test.xml');
cds1.First;
while not cds1.Eofdo
begin
cds1.Edit;
cds1.Next;
end;
cds1.ApplyUpdates(-1);
end;

CSDN都没人搞得定!
 
原贴在
http://community.csdn.net/Expert/topic/4219/4219315.xml?temp=.5772364
 
这个问题我自己搞定, 没有人回答, 我想把可用分收回来,怎么删除呀?
 
只能派分
 
靠, 问题没有解决分丢了. ****
 
有BLOB就不行了!看来只能散分了!
 
这样吧数据集全部转换为XML行不行呢??
uses
ComObj;
{
Example:
...
Memo1.Lines.Text:=RecordsetToXML(ADOQuery1.Recordset);
...
}
function RecordsetToXML(const Recordset: _Recordset): string;
var
RS: Variant;
Stream: TStringStream;
begin
Result := '';
if Recordset = nil then
Exit;
Stream := TStringStream.Create('');
try
RS := CreateOleObject('ADODB.Recordset');
RS := Recordset;
RS.Save(TStreamAdapter.Create(stream) as IUnknown, adPersistXML);
Stream.Position := 0;
Result := Stream.DataString;
finally
Stream.Free;
end;
end;

{
Example:
...
ADOQuery1.Recordset:=RecordsetFromXML(Memo1.Lines.Text);
...
}
function RecordsetFromXML(const XML: string): _Recordset;
var
RS: Variant;
Stream: TStringStream;
begin
Result := nil;
if XML = '' then
Exit;
try
Stream := TStringStream.Create(XML);
Stream.Position := 0;
RS := CreateOleObject('ADODB.Recordset');
RS.Open(TStreamAdapter.Create(Stream) as IUnknown);
Result := IUnknown(RS) as _Recordset;
finally
Stream.Free;
end;
end;
 
谢谢楼上回答的兄弟了, 我已经解决了.接贴.
 
后退
顶部