delphi学习点滴——用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是实现导入导出的良好的基础。
  
  1. 数据表的导出
  导出数据表的操作如下:
  
  1)打开数据表,设置需要导出的条件;
  
  2)使用AdoDataSet,调用SaveToFile导出记录;
  
  下面是一个导出操作的示例(假定导出指定数据表的全部记录)。
  
  procedure ExportData(strFileName, strTableName: string);
  
  begin
  
  with AdoDataSet1 do
  
  begin
  
  Close;
  
  CommandText := ‘select * from ’ + strTableName;
  
  Open;
  
  SaveToFile(strFileName);
  
  Close;
  
  end;
  
  end;
  
  2.数据表的导入
  下面是一个导入操作的示例(假定存在相同主键记录时更新目的表;假定数据表为单主键字段,且其字段类型为字符串型)。
  
  Procedure ImportData(strFileName, strTableName, strKeyFieldName: string);
  
  begin
  
  with AdoDataSet1 do
  
  begin
  
  Close;
  
  LoadFromFile(strFileName);
  
  First;
  
  While not eof do
  
  begin
  
  StrKeyValue := FieldByName(strKeyFieldName).AsString;
  
  If RecordInDest(strTableName, strKeyFieldName, strKeyValue) then
  
  begin
  
  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
  
  else     // 添加记录
  
  begin
  
  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
  
  with AdoQuery1 do
  
  begin
  
  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;
  
  如果对数据表的情况进行进一步的考虑,并结合更周密的导入导出方案,比如导入指定字段、导入指定字段、导入指定记录等等,对导入导出过程进行更详细的控制,就可以实现强大的、通用的数据表的导入导出工具。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值