董殿偉 高 輝 董 岳 蘇京晶 崔小杰
摘要:在裝備使用過程綜合保障分析與評價總體技術(shù)研究中,針對各自開發(fā)的工具和正在使用的不同應(yīng)用系統(tǒng)間的數(shù)據(jù)格式不一,不能實現(xiàn)信息共享問題,分析了XML在解決異構(gòu)數(shù)據(jù)庫共享問題中的優(yōu)勢,并在此基礎(chǔ)上提出了基于XML的異構(gòu)數(shù)據(jù)庫集成方案,設(shè)計了共享平臺的框架,并用編程工具Delphi完成了設(shè)計功能的開發(fā),實現(xiàn)了異構(gòu)數(shù)據(jù)的格式轉(zhuǎn)換、數(shù)據(jù)共享。
關(guān)鍵詞:數(shù)據(jù)轉(zhuǎn)換;轉(zhuǎn)換接口;關(guān)系數(shù)據(jù)庫;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引言
我軍在信息化建設(shè)的不同時期中,開發(fā)研制了很多基于不同操作系統(tǒng)和數(shù)據(jù)庫技術(shù)的應(yīng)用系統(tǒng)和工具,對提高裝備管理的信息化水平曾發(fā)揮了重要作用。但是由于缺乏統(tǒng)一規(guī)劃,這些工具和應(yīng)用系統(tǒng)都是各自獨自開發(fā),其數(shù)據(jù)格式、數(shù)據(jù)存儲方式、運行環(huán)境各不相同,致使各應(yīng)用系統(tǒng)、工具之間數(shù)據(jù)無法共享,形成了“信息孤島”現(xiàn)象。隨著信息化建設(shè)的不斷發(fā)展,各個系統(tǒng)在數(shù)據(jù)交換及數(shù)據(jù)共享方面存在的局限越來越大,對信息化條件下戰(zhàn)場指揮的負面影響也越來越大。所以,當務(wù)之急是需要建設(shè)一個裝備使用過程裝備保障綜合數(shù)據(jù)環(huán)境,通過該數(shù)據(jù)環(huán)境,來實現(xiàn)裝備研制階段數(shù)據(jù)與使用階段數(shù)據(jù)的融合,實現(xiàn)部隊保障數(shù)據(jù)、保障功能和保障過程的綜合集成,進而形成高層次的裝備保障決策支持能力。數(shù)據(jù)接口研究是裝備保障綜合數(shù)據(jù)環(huán)境的重要組成部分,是實現(xiàn)數(shù)據(jù)共享的關(guān)鍵,是實現(xiàn)異構(gòu)數(shù)據(jù)庫、數(shù)據(jù)源的資源共享的重要研究內(nèi)容。
本文討論的數(shù)據(jù)接口技術(shù)是借助XML技術(shù)實現(xiàn)不同DBMS的兩個異構(gòu)數(shù)據(jù)庫系統(tǒng)間(Access數(shù)據(jù)庫和SQL Server數(shù)據(jù)庫)進行的數(shù)據(jù)轉(zhuǎn)換,以實現(xiàn)數(shù)據(jù)共享。
1XML簡介
XML(extensible markup language)是1998年由W3C 正式發(fā)布的,是SGML的一個子集。XML主要用于描述數(shù)據(jù)文檔中數(shù)據(jù)的組織和安排的結(jié)構(gòu),只為數(shù)據(jù)的結(jié)構(gòu)化提供了一套規(guī)則。它的關(guān)注點不是數(shù)據(jù)在瀏覽器中如何布局和顯示,而是數(shù)據(jù)內(nèi)容的組織與結(jié)構(gòu)。
XML具有以下一些特點[1]:①具有可擴展性,XML是一種元標記語言,可以定義其他語言;②結(jié)構(gòu)性強,易于處理,XML對格式的定義非常嚴格,具有良好層次結(jié)構(gòu);③純文本,與平臺無關(guān),XML將數(shù)據(jù)保存在標準的文本文件中,可以使用任何文本編輯工具來創(chuàng)建和編輯XML文檔,它可無須任何更改直接移植到其他平臺上;④數(shù)據(jù)存儲與數(shù)據(jù)顯示的分離,XML文檔定義的僅僅是數(shù)據(jù)存儲的結(jié)構(gòu)和關(guān)系,對于數(shù)據(jù)的顯示沒有任何的約束和限制,這也是XML最值得稱道的地方;⑤很強的連接能力,可以定義雙向連接、多目標連接、擴展連接和兩個文檔間的連接。
2XML文檔與關(guān)系數(shù)據(jù)庫數(shù)據(jù)的轉(zhuǎn)換原則
XML文檔與關(guān)系數(shù)據(jù)庫數(shù)據(jù)之間的轉(zhuǎn)換包括關(guān)系數(shù)據(jù)庫數(shù)據(jù)到XML文檔的轉(zhuǎn)換和XML文檔到關(guān)系數(shù)據(jù)庫數(shù)據(jù)之間的轉(zhuǎn)換。
從XML文檔到關(guān)系數(shù)據(jù)庫數(shù)據(jù)轉(zhuǎn)換原則為[2]:
(1)為每一個有子元素或者混合內(nèi)容的元素建立一個表,該表具有一個關(guān)鍵字;
(2)為每一個混合元素建立一個獨立的表,該表通過父元素表中的關(guān)鍵字建立關(guān)聯(lián);
(3)為每一個元素的單值屬性創(chuàng)建一個字段。
其結(jié)構(gòu)示意圖如圖1所示。
從關(guān)系數(shù)據(jù)庫數(shù)據(jù)到XML文檔轉(zhuǎn)換的原則為:
(1)為每一個表創(chuàng)建一個元素;
(2)為表中的每一個字段創(chuàng)建一個屬性;
(3)對每一個主鍵和外鍵關(guān)聯(lián),將外間所在的表創(chuàng)建的元素作為子元素插入主鍵所在的表所對應(yīng)的元素中。
其結(jié)構(gòu)示意圖如圖2所示。
3基于編程工具Delphi的實例實現(xiàn)
在本實例中使用的數(shù)據(jù)是一個裝備信息表,它是存儲在Access數(shù)據(jù)庫中的一個表,如圖3所示。
系統(tǒng)啟動后進入系統(tǒng)控制界面,如圖4所示。
這時用戶可以選擇不同的功能,本文主要是完成異構(gòu)數(shù)據(jù)庫數(shù)據(jù)轉(zhuǎn)換,為此選擇第三模塊。
系統(tǒng)進入下一界面數(shù)據(jù)轉(zhuǎn)換界面。
點擊從ACCESS數(shù)據(jù)庫讀取數(shù)據(jù)按鈕,通過選擇數(shù)據(jù)庫中的表,顯示相關(guān)表的信息,本實例采用ADO組件直接讀取數(shù)據(jù)庫中的表裝備信息的數(shù)據(jù)信息。如圖5所示。
點擊轉(zhuǎn)換至XML并樹狀顯示按鈕,則將表裝備信息的數(shù)據(jù)轉(zhuǎn)換成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);//定義第一個節(jié)點
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;//以上循環(huán)為表的每一個字段創(chuàng)建XML節(jié)點并為其賦值
treeview1.Items.Clear;
domtotree(x1.DocumentElement,nil);
treeview1.FullExpand;//將XML文檔樹狀顯示
點擊存儲至SQL Server數(shù)據(jù)庫按鈕,則將XML文檔的相關(guān)信息轉(zhuǎn)換成關(guān)系數(shù)據(jù)并存儲在Sql Server數(shù)據(jù)庫中,如圖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數(shù)據(jù)庫中建立一個與原數(shù)據(jù)庫同名的表
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數(shù)據(jù)庫變化示意圖。
通過對比,可以清晰的看到運行后在Sql Server數(shù)據(jù)庫建立了一個表名為裝備信息表。
4結(jié)束語
本文是基于XML的用編程工具Delphi實現(xiàn)的裝備使用過程中裝備綜合保障異構(gòu)數(shù)據(jù)共享研究及實現(xiàn),由于XML技術(shù)的特性使得它在異構(gòu)數(shù)據(jù)庫間實現(xiàn)信息的高效傳輸、交換、共享并保證數(shù)據(jù)的完整性上發(fā)揮著越來越重要的作用。在應(yīng)用系統(tǒng)中利用上述接口模塊進行XML數(shù)據(jù)與關(guān)系數(shù)據(jù)庫中表格記錄的相互轉(zhuǎn)換可以減少編碼的重復(fù)。同時由于屏蔽了低層數(shù)據(jù)庫的差異和轉(zhuǎn)換的過程,具有一定的應(yīng)用價值。
參考文獻:
[1] Peter G. Aitken. 微軟XML技術(shù)指南[M]. 北京:中國電力出版社,2003.
[2] 張家耕,謝曉竹. XML網(wǎng)絡(luò)編程技術(shù)[M]. 北京:國防工業(yè)出版社,2002.
[3] 梁鷹,羅偉其. 異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)轉(zhuǎn)換在大型信息系統(tǒng)中的實現(xiàn)[J]. 計算機工程與應(yīng)用,2000,36(9):103-105.
[4] 卲敏,李力鴻,鄭震坤,等. XML編程實踐[M]. 北京:清華大學出版社,2002.