说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

实现不同数据库系统之间的数据转移-Delphi资料

HTML文档下载 WORD文档下载 PDF文档下载
实现不同数据库系统之间的数据转移-Delphi资料

在 计 算 机 应 用 系 统 的 软 件 升 级 改 造 过 程 中, 我 们 经 常 遇 到 这 样 一 个 问 题: 老 系 统 的 数 据 库 平 台 与 新 系 统 不 同。 例 如, 老 系 统 的 数 据 库 平 台 是Foxpro, 而 新 系 统 的 平 台 是SQL Server。 而 且, 我 们 需 要 把 旧 的 数 据 库 应 用 系 统 中 的 一 些 数 据 转 移 到 新 系 统 来。 但 是 因 为 新 老 系 统 在 定 义 数 据 类 型、 数 据 格 式 等 方 面 的 差 异, 就 很 难 用 人 工 录 入 的 方 法 来 实 现。 因 此, 需 要 有 一 个 能 实 现 这 种 功 能 的 程 序。

本 文 利 用Borland Delphi 实 现 了 这 个 转 移 过 程。

基 本 思 想 是: 在 一 个Form 中, 分 别 用 两 个TDatabase 控 件 连 接 新 老 数 据 库。 并 采 用 TTable、TDbGrid 作 为 数 据 转 移 的 中 心, 根 据DbGrid 中 的 数 据 生 成 标 准 的SQL 插 入 语 句。 这 样, 就 实 现 了 从 一 个 数 据 库 系 统 到 另 一 个 数 据 库 系 统 的 数 据 转 移。 在 这 里, 采 用TTable、TDbGrid 作 为 数 据 转 移 的 中 心 是 一 个 技 巧, 因 为:TTable 的Fields 属 性 能 指 示 出 某 字 段 的 字 段 名 称、 数 据 类 型 等, 这 为 数 据 转 移 过 程 中 的Insert 语 句 的 生 成 及 数 据 类 型 转 换 提 供 了 依 据。

下 面 的 例 子 展 示 了 从Foxpro 到SQL Server 的 数 据 转 移 方 法。 至 于 其 他 系 统 间 的 数 据 转 移, 只 要 根 据 目 标 系 统 的 数 据 定 义 要 求, 修 改 相 应 的Insert 语 句。

程 序 代 码 如 下:

unit ConvertDBF;

interface

uses

Windows

Messages

SysUtils

Classes

Graphics

Controls

Forms

Dialogs

StdCtrls

DBTables

Db

Grids

DBGrids;

type

TfrmConvertDB = class(TForm)

btnOK: TButton;

Label1: TLabel;

db1: TDatabase; {用于连接老数据库系统}

db2: TDatabase; {用于连接新数据库系统}

dbg: TDBGrid;

tblSource: TTable; {dbg的Datasource}

qryInsert: TQuery;

{用于存放生成的SQL Insert语句}

srcSource: TDataSource;

tblDest: TTable; {DBGrid1的Datasource}

DBGrid1: TDBGrid;

srcDest: TDataSource;

edFromtbl: TEdit;

Label2: TLabel;

Label3: TLabel;

edToTbl: TEdit;

procedure btnOKClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

frmConvertDB: TfrmConvertDB;

implementation

{$R *.DFM}

procedure TfrmConvertDB.btnOKClick

(Sender: TObject);

var iField :integer;

begin

if ((edTotbl.text<>'') and

(edFromtbl.text<>''))then begin

tblSource.TableName:=edFromtbl.text;

{指定TableName}

tblDest.TableName:=edTotbl.text;

with tblSource do begin

Open; {打开老系统的表}

while EOF=FALSE do begin

{逐条记录处理}

qryInsert.SQL.Clear;

qryInsert.sql.Add

('Insert into '+edTotbl.text + '(');

for iField:=0 to dbg.FieldCount-1 do begin

qryInsert.sql.add

(dbg.Fields[iField].DisplayLabel);

if iField<>dbg.FieldCount-1 then

qryInsert.sql.add('

');

end;

qryInsert.sql.add(') values(');

for iField:=0 to dbg.FieldCount-1 do begin

{进行数据类型转换}

if dbg.fields[iField].DataType=ftInteger then

qryInsert.sql.add(inttostr

(dbg.fields[iField].asInteger));

if dbg.fields[iField].DataType=ftFloat then

qryInsert.sql.add(floattostr

(dbg.fields[iField].asFloat));

if dbg.fields[iField].DataType=ftDate then

qryInsert.sql.add(''''+datetostr

(dbg.fields[iField].asDateTime)+'''');

if dbg.fields[iField].DataType=ftString then begin

if dbg.fields[iField].asString<>'' then

qryInsert.sql.add(''''+dbg.fields

[iField].asString+'''')

else

qryInsert.sql.add('NULL');

end;

if iField<>dbg.FieldCount-1

then qryInsert.sql.add('

');

end;

qryInsert.sql.add(')');

qryInsert.ExecSQL;

{把数据插入到新系统的表中}

next;

end;

end;

tblDest.Close;

tblDest.Open;;

ShowMessage(' 转换完毕! ');

end

else

ShowMessage

('请输入要插入数据的表的名称 ');

end;

end.

Delphi中数据文件路径的管理 ODBC中的同步与异步执行模式-Delphi资料 SQL编程常见问题-Delphi资料 第11章 中级SQL-Delphi资料 第10章 SQL基础-Delphi资料 SQL语句中的删除和改变-Delphi资料 TDataLink类别的说明-Delphi资料 TDBGrid控件中对多个记录的处理-Delphi资料 安装BDE需要的东东-Delphi资料 保存DBGrid中栏的字段名及尺寸-Delphi资料 动态生成定义数据库-Delphi资料 动态组成SQL速句-Delphi资料 多层C/S的客户端调用服务器端的方法-Delphi资料 关于dephi数据库的动态建立-Delphi资料 基 于WEB 的 数 据 库 查 询-Delphi资料 计算数据库某字段的值-Delphi资料 计算字段值-Delphi资料 建立应用软件注册安全机制-Delphi资料 建立自己的数据字典库-Delphi资料 将BLOB字段的BMP图显示出来-Delphi资料 将图像放入数据库中-Delphi资料 解 决sybase 用 户 数 据 库 不 能 进 入 故 障 的 一 种 方 法-Delphi资 解决sybase用户数据库不能进入故障的一种方法-Delphi资料 解决一个DBF表时的&quot;Index not found..&quot;错误-Delphi资料 精简Delphi数据库应用系统 精简Delphi数据库应用系统-定制BDE驱动程序 精简数据库应用系统-Delphi资料 开 发 基 于ORACLE7 数 据 库 的 管 理 信 息 系 统-Delphi资料 开 发AS/400 应 用 系 统: PB5 与Delphi3 的 比 较 利 用Delphi 开 发 响 应 用 户 输 入 的 数 据 库 查 询Web Server 程 利用Delphi开发响应用户输入的数据库查询Web Server程序 在存储过程中如何使用表名变量? 一点小问题,请帮帮忙 菜鸟求助 用VC对WORD文档进行一些操作,高分求救 Suspicious pointer conversion 是什么警告啊? 有哪位高手知道微软提供的的简繁互转的组件是哪个,在线等待,高分送 紧急求助!!既可以选择还可以接受用户输入的下拉选框!!万分感谢!! 在jsp页面中如何实现显示一行文字消息后再更改该文字的内容?? 高分求Excel基本操作代码,如打开关闭文件、取单元格数据之类的 关于MSHFLexGrid与ADODC的几个问题 什么是内建数据库? 请问Delphi 6怎么样才能激活Invokable向导? 安装softice后,不能启动机器了!!!!!!!! 听听StringGrid 隐藏行的好建议,别讲RowHeight[i]=0阿 关于VB调用Excel打印报表的问题 哪有电脑知识问答题? 我有项目,有谁参加??? 请问哪儿能下载模块 ming? 这样的情况还能用StringGrid吗???如果不可以那用什么?DBgrid? 致JAVAMAIL配置不成功者--即编译通过但运行不了的朋友 请问asp.net 项目开发中,页面设计与代码编写如何分工 这个地方怎么回事?(代码) 不能上网??为什么?我想不明白?? ASP包含文件问题,给分50,在线等候ING。。。。 怎樣在applet中控制button的大小和具體位置? 从Microsoft操作系统的发展中,我们可以看到操作系统最终目标是OFS,它基于一种内建数据库技术,最终什么样的数据库,也就是何为内建数据 鼠标左键按下拖动是对应的windows消息是哪个?(像WM_LBUTTONDOWE) 与市场上通过网站的web发送短信相反,web能接受短信吗?如何完成? 与市场上通过网站的web发送短信相反,web能接受短信吗?如何完成? 我有项目,有谁参加??? 要用jdbc连接两个用户怎么办? 怎样取出字符串? 请问哪里有支持代理服务器的telnet客户端? 用vbscript将list框里的多选的值读出来,急!在线等待 想在北京找个JAVA或XML及相关技术开发方面的工作(大学毕业后工作三年,然后读了统招的研究生) 用VBscript 取当前页form 中项目的值。 请问在JBuilder7中,如何引入javax.xml.parsers.*;org.xml.sax.*;org.w3c.dom.*; 急需要原代码 如何在delphi 6中的 采单加入图片背景? tomcat 问题 请指教:Wrf文件用什么软件打开呢? 请大家帮忙,谢谢 这个问题如何解决!特来请教! 怎么样去掉工具栏呀(基于单文档的应用程序)? 字符串的连接 如何使得图片(TImage)半透明显示? 想让图片有朦胧的感觉 初学者的问题:SQL Server的两个小问题,希望高手指教,多谢了! win2000的脚本编辑器 关于VC的串口通信,在线等待,大家多帮忙啊! 运行http://localhost:7001/helloclient测试EJB,出现了以下错误 如何找到我的IBM笔记本的主板的型号?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘