用AdoDataSet实现数据表的导入导出,用AdoDataSet实现数据表的导入导出
【 tulaoshi.com - Delphi 】
procedure LoadFromFile(const FileName: WideString);它从文件中加载数据集。
procedure SaveToFile(const FileName: String = ''; Format: TPersistFormat = pfADTG);它将数据集保存到文件中。Format确定文件中数据集的保存格式,可以使用的有pfADTG (Advanced Data Tablegram format)、pfXML(Extendable Markup Language)。
因此AdoDataSet是实现导入导出的良好的基础。
1.数据表的导出
导出数据表的操作如下:
1)打开数据表,设置需要导出的条件;
2)使用AdoDataSet,调用SaveToFile导出记录;
下面是一个导出操作的示例(假定导出指定数据表的全部记录)。
procedure ExportData(strFileName, strTableName: string);
begin
(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/delphi/)with AdoDataSet1 do
begin
(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/delphi/)Close;
CommandText := ‘select * from ’ + strTableName;
Open;
SaveToFile(strFileName);
Close;
end;
end;
[next]
下面是一个导入操作的示例(假定存在相同主键记录时更新目的表;假定数据表为单主键字段,且其字段类型为字符串型)。
Procedure ImportData(strFileName, strTableName, strKeyFieldName: string);
begin
(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/delphi/)with AdoDataSet1 do
begin
(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/delphi/)Close;
LoadFromFile(strFileName);
First;
While not eof do
begin
(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/delphi/)StrKeyValue := FieldByName(strKeyFieldName).AsString;
If RecordInDest(strTableName, strKeyFieldName, strKeyValue) then
begin
(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/delphi/)AdoDataDest.Close;
AdoDataSetDest.CommandText := Format(‘select * from %s where %s=%s’,[strTableName, strKeyFieldName, QuotedStr(strKeyValue)]);
AdoDataSetDest.Open;
AdoDataSetDest.First;
AdoDataSetDest.Edit;
for I:=0 to FieldList.Count-1 do
AdoDataSetDest.Fields[I] := Fields[I];
AdoDataSetDest.Post;
end
[next]
(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/delphi/)else // 添加记录
begin
(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/delphi/)AdoDataDest.Close;
AdoDataSetDest.CommandText := Format(‘select * from %s where 1=0’,[strTableName]); // 获取字段列表
AdoDataSetDest.Open;
AdoDataSetDest.Insert;
for i:=0 to FieldList.Count-1 do
AdoDataSetDest.Fields[i] := Fields[i];
AdoDataSetDest.Post;
end;
Next;
end;
end;
// 判断指定主键值的记录在表中是否存在
function RecordInDest(strTableName, strKeyFieldName, strKeyValue: string): boolean;
begin
(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/delphi/)with AdoQuery1 do
begin
(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/delphi/)Close;
SQL.Clear;
SQL.Add(Format(‘select count(*) from %s where %s=%s, [strTableName, strKeyFieldName, QuotedStr(strKeyValue)]));
Open;
result := Fields[0].AsInteger 0;
Close;
end;
end;
如果对数据表的情况进行进一步的考虑,并结合更周密的导入导出方案,比如导入指定字段、导入指定字段、导入指定记录等等,对导入导出过程进行更详细的控制,就可以实现强大的、通用的数据表的导入导出工具。
来源:http://www.tulaoshi.com/n/20160129/1492443.html
看过《用AdoDataSet实现数据表的导入导出》的人还看了以下文章 更多>>