网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > DELPHI > 正文
用Delphi实现不同数据库系统之间的数据转移
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/12
下载{$ArticleTitle}原创论文样式

厦 门 市 邮 政 局 邮 政 设 备 科  
曾 剑 平  

---- 在 计 算 机 应 用 系 统 的 软 件 升 级 改 造 过 程 中, 我 们 经 常 遇 到 这 样 一 个 问 题: 老 系 统 的 数 据 库 平 台 与 新 系 统 不 同。 例 如, 老 系 统 的 数 据 库 平 台 是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 &nbs

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号