線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1260
推到 Plurk!
推到 Facebook!

關於新增資料庫table的問題...

尚未結案
kojiliu
一般會員


發表:5
回覆:6
積分:2
註冊:2005-05-31

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-06-03 18:03:09 IP:220.134.xxx.xxx 未訂閱
各位前輩,有個資料庫問題希望大家給我一個方向。 資料庫:MS SQL 2000 有資料庫A 和 資料庫B,我想比對兩個資料庫table的差異,如果資料庫B沒有的table,就從資料庫A複製過去,我該朝哪個方向去找? (要在Delphi裡以程式開發)
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-06-03 18:48:30 IP:202.62.xxx.xxx 未訂閱
您好﹗    如果您是使用ADO存取可參考如下方法﹒ 一﹒ADO存取提供讀取資料表名稱(Table Name)的方法﹐您可先用相關方法將兩個資料庫中的所有資料表名稱讀取到Strings中﹐然后再用迴圈做以比較﹐記錄下B資料庫中沒有的資料表名稱﹐取得資料表名稱的方法如下﹕ ADOConnection1.GetTableNames(ListBox1.Items, False);    二﹒先在B資料庫中建立這些比對下來的資料表﹐此時資料表是無內容的﹐即為空資料表﹒    三﹒將A資料庫中的資料表寫入B資料庫的資料表﹐可借用ADO存取的BriefCase模式﹐先用一個連接ADOConnection1的資料集元件的SaveToFile方法將某個資料表儲為XML格式的檔案﹐然后再用連接另一個ADOConnection2的資料集元件的LoadFromFile方法將此XML檔案讀進資料表中﹐以下以實例描述步驟﹐适用于已經備份當前工作的資料庫檔案﹕ 1﹒ADOConnection1連接到目前正在工作的薪水資料庫檔案(Salary.MDB)﹐ADOTable元件連接此資料庫檔案中的職員資料表(Employee)﹔ADOConnection2連接到備用的資料庫檔案(Modal.MDB)﹐此資料庫檔案和之前的薪水資料庫檔案結搆完全相同﹐ADOTable2連接此資料庫檔案中的職員資料表(Employee)﹐此資料表和ADOTable1連接的資料表結搆完全相同﹐只是無資料內容﹒兩個ADOTable資料集元件均透過上游各自的ADOConnection﹐正常Open﹒    2﹒在名稱為Save的Button之OnClick事件中輸入如下程式碼﹕
begin
  ADOTable2.SaveToFile(ExtractFilePath(Application.ExeName)+'Temp', pfXML);
end;
//以上程式碼將ADOTable2對應的Employy資料表(無資料內容)儲存到XML格式
//的Temp檔案中
3﹒當ADOConnection1對應的當前工作之資料庫檔案已經完成備份﹐需要調用一個空的Employee資料表進來時﹐可在名稱為Load的Button之OnClick事件中輸入如下程式碼﹕
begin
  ADOTable1.LoadFromFile(ExtractFilePath(Application.ExeName)+'Temp');
end;
//以上程式碼將之前建立的XML格式的Temp檔案回存當前的資料庫檔案中﹐即可
//看作為建立一個新的Employee資料表以供使用者使用
當然﹐在以上的步驟中﹐小弟有省略在LoadFromFile步驟中的判斷Temp檔案是否存在的部分程式碼﹐為避免找不到Temp檔案的問題﹐在實做中還是需要加上此部分的判斷功能﹐一般來講﹐配合OpenDialog元件和SaveDialog元件是比較常用的方法﹒ 以上供參考﹗ ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
kojiliu
一般會員


發表:5
回覆:6
積分:2
註冊:2005-05-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-06-06 09:17:41 IP:220.134.xxx.xxx 未訂閱
感謝 cashxin2002前輩的回應,不過我還有一些疑問,在MS SQL 2000裡面檔案好像不是文中提到的.MDB檔,而是.MDF和.LDF檔,一樣可以適用於文中的方法來做嗎?
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-06-06 09:21:11 IP:202.62.xxx.xxx 未訂閱
您好﹗    因為小弟是用Access資料庫檔案來做範例的﹐您使用MSSQL可采用同樣的方法﹒    ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
kojiliu
一般會員


發表:5
回覆:6
積分:2
註冊:2005-05-31

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-06-06 09:33:52 IP:220.134.xxx.xxx 未訂閱
真的很感謝cashxin2002的幫忙,我現在趕快來試看看!
系統時間:2024-06-26 20:45:25
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!