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

2016-01-29 14:04 4 1 收藏

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

【 tulaoshi.com - Delphi 】

 
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

(本文来源于图老师网站,更多请访问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]


2.数据表的导入

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


  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

延伸阅读
正在看的ORACLE教程是:Oracle 数据表分区的策略。本文描述通过统计分析出医院信息系统需分区的表,对需分区的表选择分区键,即找出包括在你的分区键中的列(表的属性),对大型数据的管理比较有意义, 本文的工作在Oracle8.1.6下实现。 Oracle虽然是一个大型的DBMS,但如果不对记录比较多的表进行处理,仍然发挥不了Oracle管理大型数据...
标签: MySQL mysql数据库
  如果数据表有问题,可以利用--recover --quick参数做修补的工作: linux#myisamchk --recover --quick tbl_name linux#isamchk --recover --quick tbl_name 如果上面的方法不能解决问题,可以将--quick参数去掉: linux#myisamchk --recover tbl_name linux#isamchk --recover tbl_name 如果还是不能解决问题,可以再试着改用--sa...
标签: PHP
这篇文章主要介绍了php实现CSV文件导入和导出的方法,具有一定的参考价值,需要的朋友可以参考下 项目开发中,很多时候要将外部CSV文件导入到数据库中或者将数据导出为CSV文件,那么具体该如何实现呢?本文将使用PHP并结合mysql,实现了CSV格式数据的导入和导出功能。 我们先准备mysql数据表,假设项目中有一张记录学生信息的表student,并有i...
示例问题如下:  表结构:   Id ParentId  1 0  2 1  3 2  ......   针对该表结构解释如下:  1的父节点为0,  2的父节点为1,  3的父节点为2  ......  以此类推,要求给定一个父节点的值,比如1,  用SQL语句查询的到该父结点下的所...
标签: SQLServer
  异构数据库之间的导入导出 //MSSQL2EXCEL ADOConnection1.ConnectionString:= 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=G:\mysmallexe\excel2sql\yp.xls;' +'Extended Properties=excel 8.0'; ADOConnection1.Execute('select * into [Abc] from drug_yk IN [ODBC] [ODBC;Driver=SQL Server;UID=sa;PWD=kcsoft58;Server=127....

经验教程

58

收藏

50
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部