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