董殿偉 高 輝 董 岳 蘇京晶 崔小杰
摘要:在裝備使用過程綜合保障分析與評價總體技術研究中,針對各自開發的工具和正在使用的不同應用系統間的數據格式不一,不能實現信息共享問題,分析了XML在解決異構數據庫共享問題中的優勢,并在此基礎上提出了基于XML的異構數據庫集成方案,設計了共享平臺的框架,并用編程工具Delphi完成了設計功能的開發,實現了異構數據的格式轉換、數據共享。
關鍵詞:數據轉換;轉換接口;關系數據庫;XML;Delphi
中圖分類號:TP391文獻標識碼:A文章編號:1002-3100(2009)01-0070-04
Abstract: In research analyse with appraising of uses the equipment integrated logistic support of course, with question of the data formatting is not varied and not be realized information sharing between each develops tools and the different application systems, analyse the superiority in different constructing the data base sharing question of solves based on the XML, putting forward to different constructs the integrated scheme of atad based on XML, design the frame to enjoy together the terrace,accomplish the development of function with delphi tool, realize the different pattern change and enjoyed together of data.
Key words: data conversion; conversion interface; relational database; XML; Delphi
0引言
我軍在信息化建設的不同時期中,開發研制了很多基于不同操作系統和數據庫技術的應用系統和工具,對提高裝備管理的信息化水平曾發揮了重要作用。但是由于缺乏統一規劃,這些工具和應用系統都是各自獨自開發,其數據格式、數據存儲方式、運行環境各不相同,致使各應用系統、工具之間數據無法共享,形成了“信息孤島”現象。隨著信息化建設的不斷發展,各個系統在數據交換及數據共享方面存在的局限越來越大,對信息化條件下戰場指揮的負面影響也越來越大。所以,當務之急是需要建設一個裝備使用過程裝備保障綜合數據環境,通過該數據環境,來實現裝備研制階段數據與使用階段數據的融合,實現部隊保障數據、保障功能和保障過程的綜合集成,進而形成高層次的裝備保障決策支持能力。數據接口研究是裝備保障綜合數據環境的重要組成部分,是實現數據共享的關鍵,是實現異構數據庫、數據源的資源共享的重要研究內容。
本文討論的數據接口技術是借助XML技術實現不同DBMS的兩個異構數據庫系統間(Access數據庫和SQL Server數據庫)進行的數據轉換,以實現數據共享。




1XML簡介
XML(extensible markup language)是1998年由W3C 正式發布的,是SGML的一個子集。XML主要用于描述數據文檔中數據的組織和安排的結構,只為數據的結構化提供了一套規則。它的關注點不是數據在瀏覽器中如何布局和顯示,而是數據內容的組織與結構。
XML具有以下一些特點[1]:①具有可擴展性,XML是一種元標記語言,可以定義其他語言;②結構性強,易于處理,XML對格式的定義非常嚴格,具有良好層次結構;③純文本,與平臺無關,XML將數據保存在標準的文本文件中,可以使用任何文本編輯工具來創建和編輯XML文檔,它可無須任何更改直接移植到其他平臺上;④數據存儲與數據顯示的分離,XML文檔定義的僅僅是數據存儲的結構和關系,對于數據的顯示沒有任何的約束和限制,這也是XML最值得稱道的地方;⑤很強的連接能力,可以定義雙向連接、多目標連接、擴展連接和兩個文檔間的連接。
2XML文檔與關系數據庫數據的轉換原則
XML文檔與關系數據庫數據之間的轉換包括關系數據庫數據到XML文檔的轉換和XML文檔到關系數據庫數據之間的轉換。
從XML文檔到關系數據庫數據轉換原則為[2]:
(1)為每一個有子元素或者混合內容的元素建立一個表,該表具有一個關鍵字;
(2)為每一個混合元素建立一個獨立的表,該表通過父元素表中的關鍵字建立關聯;
(3)為每一個元素的單值屬性創建一個字段。
其結構示意圖如圖1所示。
從關系數據庫數據到XML文檔轉換的原則為:
(1)為每一個表創建一個元素;
(2)為表中的每一個字段創建一個屬性;
(3)對每一個主鍵和外鍵關聯,將外間所在的表創建的元素作為子元素插入主鍵所在的表所對應的元素中。
其結構示意圖如圖2所示。
3基于編程工具Delphi的實例實現
在本實例中使用的數據是一個裝備信息表,它是存儲在Access數據庫中的一個表,如圖3所示。
系統啟動后進入系統控制界面,如圖4所示。
這時用戶可以選擇不同的功能,本文主要是完成異構數據庫數據轉換,為此選擇第三模塊。
系統進入下一界面數據轉換界面。
點擊從ACCESS數據庫讀取數據按鈕,通過選擇數據庫中的表,顯示相關表的信息,本實例采用ADO組件直接讀取數據庫中的表裝備信息的數據信息。如圖5所示。
點擊轉換至XML并樹狀顯示按鈕,則將表裝備信息的數據轉換成XML文檔并呈樹狀顯示,如圖6所示。
部分主要代碼如下(a1為ADOTable的簡稱,x1為XMLDocument的簡稱):
a1.First; //將表置于第一條記錄
x1.Active:=true; //激活XMLDocument
x1.DocumentElement:=x1.CreateNode('xml');
while not a1.Eof do
begininode:=x1.DocumentElement.AddChild(a1.TableName);//定義第一個節點
for i:=0 to a1.FieldCount-1 do
beginichild:=inode.AddChild(a1.Fields[i].FieldName);
ichild.Text:=a1.Fields[i].AsString;
end;
a1.Next;
end;//以上循環為表的每一個字段創建XML節點并為其賦值
treeview1.Items.Clear;
domtotree(x1.DocumentElement,nil);
treeview1.FullExpand;//將XML文檔樹狀顯示
點擊存儲至SQL Server數據庫按鈕,則將XML文檔的相關信息轉換成關系數據并存儲在Sql Server數據庫中,如圖7所示。
部分主要代碼如下:
for n:=0 to xmlnode.ChildNodes.Count-1 do
begin
s[n]:=xmlnode.ChildNodes[n].NodeName;
end;
ss:=′create table ′+trim(c1.Text)+′(′;
for m:=0 to 20 do
if s[m]<>′′then
begin
ss:=ss+s[m]+′char(30),′;
ji:=ji+1;
end;//以上定義Sql語句的字符串
with aq2 do
begin
close;
sql.Clear;
sql.Add(ss);
execsql;
end;//在Sql Server數據庫中建立一個與原數據庫同名的表
for k:=0 to m-1 do
begin
begin
xmlnode:=xmlnode.ChildNodes[k];
a2.Append;
for n:=0 to ji-1 do
begin
a2.Fields[n].AsString:=xmlnode.ChildNodes[n].NodeValue;
end;
end;//為新建的表的每一個字段賦值
a2.Post;
a2.Active:=true;//將新建表顯示給用戶。
圖8為程序運行前和運行后Sql Server數據庫變化示意圖。
通過對比,可以清晰的看到運行后在Sql Server數據庫建立了一個表名為裝備信息表。
4結束語
本文是基于XML的用編程工具Delphi實現的裝備使用過程中裝備綜合保障異構數據共享研究及實現,由于XML技術的特性使得它在異構數據庫間實現信息的高效傳輸、交換、共享并保證數據的完整性上發揮著越來越重要的作用。在應用系統中利用上述接口模塊進行XML數據與關系數據庫中表格記錄的相互轉換可以減少編碼的重復。同時由于屏蔽了低層數據庫的差異和轉換的過程,具有一定的應用價值。
參考文獻:
[1] Peter G. Aitken. 微軟XML技術指南[M]. 北京:中國電力出版社,2003.
[2] 張家耕,謝曉竹. XML網絡編程技術[M]. 北京:國防工業出版社,2002.
[3] 梁鷹,羅偉其. 異構數據庫的數據轉換在大型信息系統中的實現[J]. 計算機工程與應用,2000,36(9):103-105.
[4] 卲敏,李力鴻,鄭震坤,等. XML編程實踐[M]. 北京:清華大學出版社,2002.