转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 站长学院 >> Web开发 >> 正文
用AdoDataSet实现数据表的导入导出         ★★★★

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

作者:闵涛 文章来源:闵涛的学习笔记 点击数:797 更新时间:2009/4/23 10:47:42

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;

 

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


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Web开发  · 网页制作
    · 平面设计  · 网站运营
    · 网站推广  · 搜索优化
    · 建站心得  · 站长故事
    · 互联动态
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台