WEB开发网
开发学院软件开发Delphi 用AdoDataSet实现数据表的导入导出 阅读

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

 2006-02-04 13:36:40 来源:WEB开发网   
核心提示:Delphi中的AdoDataSet是支持ADO访问的主要组件,它支持从数据表直接获取数据,用AdoDataSet实现数据表的导入导出,支持用SQL语句获取数据,最重要的是,比如导入指定字段、导入指定字段、导入指定记录等等,对导入导出过程进行更详细的控制,它定义和实现了两个重要的例程:PRocedure LoadFro
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;   如果对数据表的情况进行进一步的考虑,并结合更周密的导入导出方案,比如导入指定字段、导入指定字段、导入指定记录等等,对导入导出过程进行更详细的控制,就可以实现强大的、通用的数据表的导入导出工具。

Tags:AdoDataSet 实现 数据表

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接