数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

用AdoDataSet实现数据表的导入导出


发布日期:2022年01月13日
 
用AdoDataSet实现数据表的导入导出
Delphi中的AdoDataSet是支持ADO访问的主要组件它支持从数据表直接获取数据支持用SQL语句获取数据最重要的是它定义和实现了两个重要的例程

procedure LoadFromFile(const FileName: WideString);它从文件中加载数据集

procedure SaveToFile(const FileName: String = ; Format: TPersistFormat = pfADTG);它将数据集保存到文件中

Format确定文件中数据集的保存格式可以使用的有pfADTG (Advanced Data Tablegram format)pfXML(Extendable Markup Language)因此AdoDataSet是实现导入导出的良好的基础

数据表的导出

导出数据表的操作如下

)打开数据表设置需要导出的条件

)使用AdoDataSet调用SaveToFile导出记录

下面是一个导出操作的示例(假定导出指定数据表的全部记录)

procedure ExportData(strFileName strTableName: string);

begin

with AdoDataSet do

begin

Close;

CommandText := select * from + strTableName;

Open;

SaveToFile(strFileName);

Close;

end;

end;

.数据表的导入

下面是一个导入操作的示例(假定存在相同主键记录时更新目的表假定数据表为单主键字段且其字段类型为字符串型)

Procedure ImportData(strFileName strTableName strKeyFieldName: string);

begin

with AdoDataSet do

begin

Close;

LoadFromFile(strFileName);

First;

While not eof do

begin

StrKeyValue := FieldByName(strKeyFieldName)AsString;

If RecordInDest(strTableName strKeyFieldName strKeyValue) then

begin

AdoDataDestClose;

AdoDataSetDestCommandText := Format(select * from %s where %s=%s[strTableName strKeyFieldName QuotedStr(strKeyValue)]);

AdoDataSetDestOpen;

AdoDataSetDestFirst;

AdoDataSetDestEdit;

for I:= to FieldListCount do

AdoDataSetDestFields[I] := Fields[I];

AdoDataSetDestPost;

end

else // 添加记录

begin

AdoDataDestClose;

AdoDataSetDestCommandText := Format(select * from %s where =[strTableName]); // 获取字段列表

AdoDataSetDestOpen;

AdoDataSetDestInsert;

for i:= to FieldListCount do

AdoDataSetDestFields[i] := Fields[i];

AdoDataSetDestPost;

end;

Next;

end;

end;

// 判断指定主键值的记录在表中是否存在

function RecordInDest(strTableName strKeyFieldName strKeyValue: string): boolean;

begin

with AdoQuery do

begin

Close;

SQLClear;

SQLAdd(Format(select count(*) from %s where %s=%s [strTableName strKeyFieldName QuotedStr(strKeyValue)]));

Open;

result := Fields[]AsInteger > ;

Close;

end;

end;

如果对数据表的情况进行进一步的考虑并结合更周密的导入导出方案比如导入指定字段导入指定字段导入指定记录等等对导入导出过程进行更详细的控制就可以实现强大的通用的数据表的导入导出工具               

上一篇:利用PB实现动态系统用户登录

下一篇:用Delphi编程访问SQLServer数据库