中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Delphi > 综合文章
数据补丁
作者:未知 时间:2004-10-09 12:12 出处:Blog 责编:chinaitpower
              摘要:暂无

    当公司要定期给客户发送数据时,而且数据库很大,但每次更改量很小,这样就不毕发送
整个数据库,只要发送一个数据补丁,在客户端对数据补丁操作一下即可更新整个数据库。
下面对单个表操作
===================================================================================
 (公司端:源表src:旧数据库,目标表dst:新数据库)  ===> 数据补丁
 (公司端:源表src:旧数据库)                      <=== 数据补丁

方法:

(A)在公司端, 比较源表src和目标表dst:
  (1)源表src中记录在目标表dst不存在的记录加入删除标记写入查询
     DeleteSQL='select 2 as AowStatA,dst.* from dst right join src on (dst.所有字段=src.所有字段) where src.第一个字段 is null';
  (2)目标表src中记录在源表dst不存在的记录加入新增标记写入查询
     InsertSQL='select 4 as AowStatA,src.* from src left  join dst on (src.所有字段=dst.所有字段) where dst.第一个字段 is null';
  (3)对上面两个查询结果用 provider.GetRecords 分别得到 一个 OleVariant ,转换为 string 写入XML文件:
       分别删除<FIELD attrname="AowStatA" fieldtype="r8"/> 接点,然后合并两XML文件,再把“AowStatA”该为“RowState”.
       得到一个数据补丁(XML文件).
  (4)数据补丁(XML文件)中一行 <PARAMS ... /> 该为 <PARAMS DATASET_DELTA="1" MD_SEMANTICS="3"/>
 
(B)在客户端,收到数据补丁(XML文件)后对源表src进行以下操作:
  (1)数据补丁(XML文件)作为 string 读出,并转换为 OleVariant .
  (2)源表src对应的 Provider 执行 applyUpdates() 方法.

(C) 注意: :
    (1) 如表结构改变了,在客户端先按新结构创建一个新表,
        并对已存在字段源表src中的数据全部导入新表,再进行 (B) 操作
    (2) Paradox库 的 SQL 例:
       select "zzj.db".*,"tmp.db".* from zzj.db inner join tmp.db    //表名用双引号
       on "zzj.db".keyf="tmp.db".keyf where 1=2                      // 不能用 where false

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有