何桂紅
摘 要:為實現(xiàn)多個應用系統(tǒng)之間的信息資源共享,該文介紹一種以XML作為媒介將不同的數(shù)據(jù)庫聯(lián)系起來的的多數(shù)據(jù)庫訪問方法。
關(guān)鍵詞:應用系統(tǒng) 共享 多數(shù)據(jù)庫訪問
中圖分類號:TP391 文獻標識碼:A 文章編號:1674-098X(2014)05(a)-0054-02
現(xiàn)在各種數(shù)據(jù)庫的應用很多,由于技術(shù)及時間因素,往往一個部門中并存多個應用系統(tǒng),這些系統(tǒng)可能分散于不同的網(wǎng)絡(luò)節(jié)點、基于不同的操作平臺、使用不同種類的數(shù)據(jù)庫管理系統(tǒng),且這些子系統(tǒng)封閉運行,自成一體,這樣給不同部門的大量的信息資源共享帶來困難。在不改變原來系統(tǒng)的內(nèi)部信息的前提下,為完成不同數(shù)據(jù)庫系統(tǒng)間的數(shù)據(jù)訪問、交換和處理,結(jié)合工作實際,該文探索了一種以XML作為將不同的數(shù)據(jù)庫聯(lián)系起來的媒介的多數(shù)據(jù)庫訪問方法。
1 XML的特性
XML(Extensible Markup Language)即可擴展標記語言,它與HTML一樣,都是SGML(Standard Generalized Markup Language,標準通用標記語言)。XML是Internet環(huán)境中跨平臺的,依賴于內(nèi)容的技術(shù),是當前處理結(jié)構(gòu)化文檔信息的有力工具。擴展標記語言XML是一種簡單的數(shù)據(jù)存儲語言,使用一系列簡單的標記描述數(shù)據(jù),而這些標記可以用方便的方式建立,雖然XML占用的空間比二進制數(shù)據(jù)要占用更多的空間,但XML極其簡單易于掌握和使用。
XML的簡單使其易于在任何應用程序中讀寫數(shù)據(jù),這使XML很快成為數(shù)據(jù)交換的唯一公共語言,雖然不同的應用軟件也支持其它的數(shù)據(jù)交換格式,但不久之后他們都將支持XML,那就意味著程序可以更容易的與Windows、Mac OS,Linux以及其他平臺下產(chǎn)生的信息結(jié)合,然后可以很容易加載XML數(shù)據(jù)到程序中并分析他,并以XML格式輸出結(jié)果。
為了使得SGML顯得用戶友好,XML重新定義了SGML的一些內(nèi)部值和參數(shù),去掉了大量的很少用到的功能,這些繁雜的功能使得SGML在設(shè)計網(wǎng)站時顯得復雜化。XML保留了SGML的結(jié)構(gòu)化功能,這樣就使得網(wǎng)站設(shè)計者可以定義自己的文檔類型,XML同時也推出一種新型文檔類型,使得開發(fā)者也可以不必定義文檔類型。
2 XML文檔結(jié)構(gòu)
XML文檔都由XML序言開始,第一行便是XML序言,
第三行代碼是注釋,它與HTML中使用的注釋風格是一樣的。這是XML從SGML中繼承的語法元素之一。
頁面再往下的一些地方,可以發(fā)現(xiàn)
下面的一行就是<?page render multiple authors ?>
雖然它看上去很像XML序言,但實際上是一種稱為處理指令(processing instruction)的不同類型的語法。處理指令(以下簡稱PI)的目的是為了給處理頁面的程序(例如XML解析器)提供額外的信息。PI通常情況下是沒有固定格式的,唯一的要求是緊隨第一個問號必須至少有一個字母。在此之后,PI可以包含除了小于號和大于號之外的任何字符串序列。
3 XML文檔的相關(guān)操作
下面用C#語言在服務器同名目錄下創(chuàng)建XML文檔為例進行說明。
首先,需要添加命名空間:using System.Xml;
其次,定義幾個公共的對象,以供對XML文檔進行操作時使用。
具體操作如下:
xmldoc=new XmlDocument( );
//加入XML的聲明段落,<?xml version=”1.0” encoding=”gb2312”?>
XmlDeclaration xmldecl;
xmldecl=xmldoc.CreateXmlDeclaration(“1.0”,”gb2312”,null);
xmldoc.AppendChild(xmldecl);
//加入一個根元素
xmlelem=xmldoc.CreateElement (“”,“Employees”,“");
xmldoc.AppendChild(xmlelem);
//加入另外一個元素for(int i=1;i<3;i++)
XmlNode root=xmldoc.SelectSingleNode("Employees");//查找
XmlElement xe1=xmldoc.CreateElement("Node");//創(chuàng)建一個
xe1.SetAttribute(“genre”,”李計紅");//設(shè)置該節(jié)點genre屬性
xe1.SetAttribute(“ISBN”,”2-3631-4”);//設(shè)置該節(jié)點ISBN屬性
XmlElement xesub1=xmldoc.CreateElement(“title”);
xesub1.InnerText=”CS從入門到精通";//設(shè)置文本節(jié)點xe1.AppendChild(xesub1);//添加到
XmlElement xesub2=xmldoc.CreateElement("author");
xesub2.InnerText="張軍";
xe1.AppendChild(xesub2);
XmlElement xesub3=xmldoc.CreateElement("price");
xesub3.InnerText="58.3";
xe1.AppendChild(xesub3);
root.AppendChild(xe1);//添加到
//保存創(chuàng)建好的XML文檔
xmldoc.Save(Server.MapPath(“data.xml”));
結(jié)果:在同名目錄下生成了名為data.xml的文件。
4 多數(shù)據(jù)庫訪問的實現(xiàn)
多數(shù)據(jù)庫訪問技術(shù)的實現(xiàn),就是借助XML文檔作為媒介,將兩個異構(gòu)的數(shù)據(jù)庫聯(lián)系起來,使得系統(tǒng)能夠建立不同的數(shù)據(jù)庫之間的引用關(guān)系(圖1),達到跨數(shù)據(jù)庫查詢的目的。下面通過一個例子來說明多數(shù)據(jù)庫訪問的實現(xiàn)。
例如系統(tǒng)有兩個數(shù)據(jù)庫,其中一個數(shù)據(jù)庫中Book表如表1所示。
另一個數(shù)據(jù)庫中的Author表則只收錄了作者的信息,如表2所示。
這是一個書店信息管理系統(tǒng)和書店圖書查閱系統(tǒng)的兩個表,書店信息管理系統(tǒng)用來錄入并查看書店所有的書信息,而書店的圖書查閱系統(tǒng)則用來為到書店買書的客戶服務,讓客戶在電腦終端上按照作者查詢書店現(xiàn)有的書籍信息。由于某些原因,這兩套系統(tǒng)是在不同的時期而且是不同的軟件公司開發(fā)的。書店查閱系統(tǒng)的功能就是根據(jù)該系統(tǒng)提供的作者列表,客戶通過選擇其中的某些作者,查出書店中該作者所著的書籍信息。由于書店已經(jīng)有了書店信息管理系統(tǒng),所以沒必要再查詢系統(tǒng)中再建立一個數(shù)據(jù)庫來存放書籍信息,查詢系統(tǒng)只需要根據(jù)該系統(tǒng)中的作者表,到書店信息管理系統(tǒng)中的書籍信息表(Book)中查詢相關(guān)信息即可,這里就涉及到了多數(shù)據(jù)庫訪問的問題,系統(tǒng)需要在兩個不同的數(shù)據(jù)庫之間進行跨數(shù)據(jù)庫的查詢和訪問。
運用該文所研究的多數(shù)據(jù)庫訪問技術(shù),在書店圖書查閱系統(tǒng)中建立一個與Author表相對應的Author.xml文檔。
當用戶需要通過作者的姓名(name)進行查詢時,系統(tǒng)將數(shù)據(jù)庫表Author中name字段中用戶選中的值保存到Author.xml文檔相應的節(jié)點中,如果用戶選擇一個作者,則在xml文檔中保存一個作者的value值,如果用戶選擇了多個作者,則在相應的xml文檔中保存多個作者的值,分別對應于name節(jié)點中的value1,value2等以此類推。
當書店圖書查閱系統(tǒng)數(shù)據(jù)庫Author表中的name字段的值成功保存到xml文檔中時,系統(tǒng)會應用該文所述的異質(zhì)數(shù)據(jù)庫訪問方法,將數(shù)據(jù)庫連接切換到書店圖書信息管理系統(tǒng)的數(shù)據(jù)庫,并根據(jù)從xml文檔的相應節(jié)點中取出的數(shù)據(jù),在書店圖書信息管理系統(tǒng)的數(shù)據(jù)庫Book表中進行查詢,并返回結(jié)果,結(jié)果成功返回到用戶后,系統(tǒng)又自動將數(shù)據(jù)庫連接接換回書店圖書查閱系統(tǒng)本身的數(shù)據(jù)庫。
參考文獻
[1] 薛心剛.異構(gòu)數(shù)據(jù)信息平臺集成系統(tǒng)設(shè)計與實現(xiàn)[D].吉林大學,2011.
[2] 王智敏.公路客運異構(gòu)數(shù)據(jù)集成系統(tǒng)研究與實現(xiàn)[D].大連海事大學,2011.
[3] 王彥.面向信息集成的查詢轉(zhuǎn)換方法的研究與實現(xiàn)[D].暨南大學,2011.
XmlElement xesub1=xmldoc.CreateElement(“title”);
xesub1.InnerText=”CS從入門到精通";//設(shè)置文本節(jié)點xe1.AppendChild(xesub1);//添加到
XmlElement xesub2=xmldoc.CreateElement("author");
xesub2.InnerText="張軍";
xe1.AppendChild(xesub2);
XmlElement xesub3=xmldoc.CreateElement("price");
xesub3.InnerText="58.3";
xe1.AppendChild(xesub3);
root.AppendChild(xe1);//添加到
//保存創(chuàng)建好的XML文檔
xmldoc.Save(Server.MapPath(“data.xml”));
結(jié)果:在同名目錄下生成了名為data.xml的文件。
4 多數(shù)據(jù)庫訪問的實現(xiàn)
多數(shù)據(jù)庫訪問技術(shù)的實現(xiàn),就是借助XML文檔作為媒介,將兩個異構(gòu)的數(shù)據(jù)庫聯(lián)系起來,使得系統(tǒng)能夠建立不同的數(shù)據(jù)庫之間的引用關(guān)系(圖1),達到跨數(shù)據(jù)庫查詢的目的。下面通過一個例子來說明多數(shù)據(jù)庫訪問的實現(xiàn)。
例如系統(tǒng)有兩個數(shù)據(jù)庫,其中一個數(shù)據(jù)庫中Book表如表1所示。
另一個數(shù)據(jù)庫中的Author表則只收錄了作者的信息,如表2所示。
這是一個書店信息管理系統(tǒng)和書店圖書查閱系統(tǒng)的兩個表,書店信息管理系統(tǒng)用來錄入并查看書店所有的書信息,而書店的圖書查閱系統(tǒng)則用來為到書店買書的客戶服務,讓客戶在電腦終端上按照作者查詢書店現(xiàn)有的書籍信息。由于某些原因,這兩套系統(tǒng)是在不同的時期而且是不同的軟件公司開發(fā)的。書店查閱系統(tǒng)的功能就是根據(jù)該系統(tǒng)提供的作者列表,客戶通過選擇其中的某些作者,查出書店中該作者所著的書籍信息。由于書店已經(jīng)有了書店信息管理系統(tǒng),所以沒必要再查詢系統(tǒng)中再建立一個數(shù)據(jù)庫來存放書籍信息,查詢系統(tǒng)只需要根據(jù)該系統(tǒng)中的作者表,到書店信息管理系統(tǒng)中的書籍信息表(Book)中查詢相關(guān)信息即可,這里就涉及到了多數(shù)據(jù)庫訪問的問題,系統(tǒng)需要在兩個不同的數(shù)據(jù)庫之間進行跨數(shù)據(jù)庫的查詢和訪問。
運用該文所研究的多數(shù)據(jù)庫訪問技術(shù),在書店圖書查閱系統(tǒng)中建立一個與Author表相對應的Author.xml文檔。
當用戶需要通過作者的姓名(name)進行查詢時,系統(tǒng)將數(shù)據(jù)庫表Author中name字段中用戶選中的值保存到Author.xml文檔相應的節(jié)點中,如果用戶選擇一個作者,則在xml文檔中保存一個作者的value值,如果用戶選擇了多個作者,則在相應的xml文檔中保存多個作者的值,分別對應于name節(jié)點中的value1,value2等以此類推。
當書店圖書查閱系統(tǒng)數(shù)據(jù)庫Author表中的name字段的值成功保存到xml文檔中時,系統(tǒng)會應用該文所述的異質(zhì)數(shù)據(jù)庫訪問方法,將數(shù)據(jù)庫連接切換到書店圖書信息管理系統(tǒng)的數(shù)據(jù)庫,并根據(jù)從xml文檔的相應節(jié)點中取出的數(shù)據(jù),在書店圖書信息管理系統(tǒng)的數(shù)據(jù)庫Book表中進行查詢,并返回結(jié)果,結(jié)果成功返回到用戶后,系統(tǒng)又自動將數(shù)據(jù)庫連接接換回書店圖書查閱系統(tǒng)本身的數(shù)據(jù)庫。
參考文獻
[1] 薛心剛.異構(gòu)數(shù)據(jù)信息平臺集成系統(tǒng)設(shè)計與實現(xiàn)[D].吉林大學,2011.
[2] 王智敏.公路客運異構(gòu)數(shù)據(jù)集成系統(tǒng)研究與實現(xiàn)[D].大連海事大學,2011.
[3] 王彥.面向信息集成的查詢轉(zhuǎn)換方法的研究與實現(xiàn)[D].暨南大學,2011.
XmlElement xesub1=xmldoc.CreateElement(“title”);
xesub1.InnerText=”CS從入門到精通";//設(shè)置文本節(jié)點xe1.AppendChild(xesub1);//添加到
XmlElement xesub2=xmldoc.CreateElement("author");
xesub2.InnerText="張軍";
xe1.AppendChild(xesub2);
XmlElement xesub3=xmldoc.CreateElement("price");
xesub3.InnerText="58.3";
xe1.AppendChild(xesub3);
root.AppendChild(xe1);//添加到
//保存創(chuàng)建好的XML文檔
xmldoc.Save(Server.MapPath(“data.xml”));
結(jié)果:在同名目錄下生成了名為data.xml的文件。
4 多數(shù)據(jù)庫訪問的實現(xiàn)
多數(shù)據(jù)庫訪問技術(shù)的實現(xiàn),就是借助XML文檔作為媒介,將兩個異構(gòu)的數(shù)據(jù)庫聯(lián)系起來,使得系統(tǒng)能夠建立不同的數(shù)據(jù)庫之間的引用關(guān)系(圖1),達到跨數(shù)據(jù)庫查詢的目的。下面通過一個例子來說明多數(shù)據(jù)庫訪問的實現(xiàn)。
例如系統(tǒng)有兩個數(shù)據(jù)庫,其中一個數(shù)據(jù)庫中Book表如表1所示。
另一個數(shù)據(jù)庫中的Author表則只收錄了作者的信息,如表2所示。
這是一個書店信息管理系統(tǒng)和書店圖書查閱系統(tǒng)的兩個表,書店信息管理系統(tǒng)用來錄入并查看書店所有的書信息,而書店的圖書查閱系統(tǒng)則用來為到書店買書的客戶服務,讓客戶在電腦終端上按照作者查詢書店現(xiàn)有的書籍信息。由于某些原因,這兩套系統(tǒng)是在不同的時期而且是不同的軟件公司開發(fā)的。書店查閱系統(tǒng)的功能就是根據(jù)該系統(tǒng)提供的作者列表,客戶通過選擇其中的某些作者,查出書店中該作者所著的書籍信息。由于書店已經(jīng)有了書店信息管理系統(tǒng),所以沒必要再查詢系統(tǒng)中再建立一個數(shù)據(jù)庫來存放書籍信息,查詢系統(tǒng)只需要根據(jù)該系統(tǒng)中的作者表,到書店信息管理系統(tǒng)中的書籍信息表(Book)中查詢相關(guān)信息即可,這里就涉及到了多數(shù)據(jù)庫訪問的問題,系統(tǒng)需要在兩個不同的數(shù)據(jù)庫之間進行跨數(shù)據(jù)庫的查詢和訪問。
運用該文所研究的多數(shù)據(jù)庫訪問技術(shù),在書店圖書查閱系統(tǒng)中建立一個與Author表相對應的Author.xml文檔。
當用戶需要通過作者的姓名(name)進行查詢時,系統(tǒng)將數(shù)據(jù)庫表Author中name字段中用戶選中的值保存到Author.xml文檔相應的節(jié)點中,如果用戶選擇一個作者,則在xml文檔中保存一個作者的value值,如果用戶選擇了多個作者,則在相應的xml文檔中保存多個作者的值,分別對應于name節(jié)點中的value1,value2等以此類推。
當書店圖書查閱系統(tǒng)數(shù)據(jù)庫Author表中的name字段的值成功保存到xml文檔中時,系統(tǒng)會應用該文所述的異質(zhì)數(shù)據(jù)庫訪問方法,將數(shù)據(jù)庫連接切換到書店圖書信息管理系統(tǒng)的數(shù)據(jù)庫,并根據(jù)從xml文檔的相應節(jié)點中取出的數(shù)據(jù),在書店圖書信息管理系統(tǒng)的數(shù)據(jù)庫Book表中進行查詢,并返回結(jié)果,結(jié)果成功返回到用戶后,系統(tǒng)又自動將數(shù)據(jù)庫連接接換回書店圖書查閱系統(tǒng)本身的數(shù)據(jù)庫。
參考文獻
[1] 薛心剛.異構(gòu)數(shù)據(jù)信息平臺集成系統(tǒng)設(shè)計與實現(xiàn)[D].吉林大學,2011.
[2] 王智敏.公路客運異構(gòu)數(shù)據(jù)集成系統(tǒng)研究與實現(xiàn)[D].大連海事大學,2011.
[3] 王彥.面向信息集成的查詢轉(zhuǎn)換方法的研究與實現(xiàn)[D].暨南大學,2011.