程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 數據補丁

數據補丁

編輯:Delphi
當公司要定期給客戶發送數據時,而且數據庫很大,但每次更改量很小,這樣就不畢發送
  整個數據庫,只要發送一個數據補丁,在客戶端對數據補丁操作一下即可更新整個數據庫。
  下面對單個表操作
  ===================================================================================
   (公司端:源表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


  
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved