專利名稱::調(diào)度數(shù)據(jù)服務(wù)平臺中跨平臺多異構(gòu)數(shù)據(jù)庫的通用數(shù)據(jù)訪問方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及一種通用數(shù)據(jù)訪問方法,尤其涉及一種調(diào)度數(shù)據(jù)服務(wù)平臺中跨平臺多異構(gòu)數(shù)據(jù)庫的通用數(shù)據(jù)訪問方法。
背景技術(shù):
:隨著我國調(diào)度自動化的發(fā)展,電力調(diào)度中心的自動化系統(tǒng)也隨之增加。為了促進(jìn)調(diào)度中心各應(yīng)用功能的協(xié)調(diào)運(yùn)轉(zhuǎn),需要構(gòu)建調(diào)度中心跨越安全分區(qū)的綜合應(yīng)用支撐平臺,即調(diào)度數(shù)據(jù)服務(wù)平臺。這個調(diào)度數(shù)據(jù)服務(wù)平臺作為整個調(diào)度中心的模型中心、數(shù)據(jù)中心和圖形中心,將采用商用數(shù)據(jù)進(jìn)行信息的存儲。為屏蔽上層應(yīng)用對底層數(shù)據(jù)庫訪問的差異,調(diào)度數(shù)據(jù)服務(wù)平臺需要一套通用的數(shù)據(jù)庫訪問方法來訪問ORACLE、SYBASE、DB2、SQLSERVER、MYSQL等商用關(guān)系型數(shù)據(jù)庫。針對調(diào)度中心遺留的眾多應(yīng)用系統(tǒng),調(diào)度數(shù)據(jù)服務(wù)平臺還需要從這些遺留應(yīng)用中獲取基礎(chǔ)模型信息,因此通用的數(shù)據(jù)訪問接口還應(yīng)具有同時連接多個異構(gòu)數(shù)據(jù)庫的能力。目前通用的數(shù)據(jù)庫訪問方法包括(l)ODBC,OLEDB和ADOODBC(開放數(shù)據(jù)庫連接)是微軟公司開放服務(wù)體系結(jié)構(gòu)中有關(guān)數(shù)據(jù)庫的一個組成部分,它提供了一組對數(shù)據(jù)庫訪問的標(biāo)準(zhǔn)API(應(yīng)用程序編程接口)。這些API利用SQL(結(jié)構(gòu)化查詢語言)來完成其大部分任務(wù),用戶也可以直接將SQL語句送給ODBC。使用ODBC的應(yīng)用程序?qū)?shù)據(jù)庫的操作不依賴任何具體的數(shù)據(jù)庫,所有的數(shù)據(jù)庫操作由對應(yīng)的數(shù)據(jù)庫的ODBC驅(qū)動程序完成。ODBC的最大優(yōu)點是能以統(tǒng)一的方式處理所有的數(shù)據(jù)庫。OLEDB(對象連接與嵌入數(shù)據(jù)庫)是微軟針對不同的數(shù)據(jù)源的底層應(yīng)用程序接口。OLEDB將傳統(tǒng)的數(shù)據(jù)庫系統(tǒng)劃分為多個邏輯組件數(shù)據(jù)提供者、數(shù)據(jù)服務(wù)提供者、業(yè)務(wù)組件、數(shù)據(jù)消費者,這些組件之間相對獨立又相互通信。ADO(ActiveXDataObjects,活動數(shù)據(jù)對象)則是建立在OLEDB之上,是統(tǒng)一數(shù)據(jù)訪問的一個基本組件。使用ADO的應(yīng)用程序都要間接地使用到OLEDB0應(yīng)用程序通過ADO可以比較容易地實現(xiàn)對數(shù)據(jù)庫的查詢、存取等操作。由于ODBC、0LEDB、ADO這幾種通用數(shù)據(jù)訪問方法都是基于微軟技術(shù)實現(xiàn)的,限制了其應(yīng)用的環(huán)境只能是Windows操作系統(tǒng)。而調(diào)度數(shù)據(jù)服務(wù)平臺作為調(diào)度中心眾多業(yè)務(wù)應(yīng)用的基礎(chǔ)支撐平臺,綜合考慮其可靠性、可用性、安全性等因素之后,大多會采用UNIX(包括HPUX、Solaris、AIX、TRU64等)或LINUX等操作系統(tǒng),因此調(diào)度數(shù)據(jù)服務(wù)平臺無法使用0DBC、0LEDB或ADO作為平臺的通用數(shù)據(jù)庫訪問方法,而是應(yīng)該從跨平臺的角度去考慮如何連接多種數(shù)據(jù)庫服務(wù)器。(2)JDBCJDBC(Java數(shù)據(jù)庫連接)是支持Java語言的、標(biāo)準(zhǔn)的數(shù)據(jù)庫API,其目的在于使Java程序與數(shù)據(jù)庫服務(wù)器的連接更加方便。在功能方面JDBC與ODBC相同,它給程序員提供了統(tǒng)一的數(shù)據(jù)庫訪問接口。由于JDBC是Java語言實現(xiàn)的,因此天然具有跨平臺的特性。但也正是其Java語言實現(xiàn)的特點限制了JDBC在調(diào)度自動化系統(tǒng)中的應(yīng)用。由于歷史的原因,出于對系統(tǒng)實時性的考慮,調(diào)度自動化系統(tǒng)多用C/C++語言開發(fā)。為了支持采用上層使用C/C++開發(fā)的應(yīng)用,作為底層數(shù)據(jù)庫訪問的接口也應(yīng)盡量采用C/C++實現(xiàn)。綜上所述,作為調(diào)度中心業(yè)務(wù)應(yīng)用的基礎(chǔ)支撐平臺——調(diào)度數(shù)據(jù)服務(wù)平臺所提供的數(shù)據(jù)庫訪問接口應(yīng)該具有如下基本特性跨平臺、可同時連接多種商用關(guān)系型數(shù)據(jù)庫、實現(xiàn)語言為C/C++。
發(fā)明內(nèi)容本發(fā)明的目的在于對各個商用數(shù)據(jù)庫提供的底層數(shù)據(jù)訪問API進(jìn)行封裝,通過定義統(tǒng)一的數(shù)據(jù)庫訪問結(jié)構(gòu)以及靈活的數(shù)據(jù)源配置,為調(diào)度數(shù)據(jù)服務(wù)平臺的上層應(yīng)用屏蔽不同數(shù)據(jù)庫訪問的差異,提供一種跨平臺的通用數(shù)據(jù)庫訪問服務(wù)。本發(fā)明通過以下方案實現(xiàn)包括了以下步驟(a)配置數(shù)據(jù)源根據(jù)配置信息去連接各個數(shù)據(jù)源,創(chuàng)建與相應(yīng)數(shù)據(jù)庫的連接環(huán)境;(b)定義統(tǒng)一的數(shù)據(jù)庫訪問模型將所有的數(shù)據(jù)請求結(jié)果都用統(tǒng)一的模型進(jìn)行描述,將各種商用數(shù)據(jù)庫中私有表示的表結(jié)構(gòu)及表記錄信息實現(xiàn)統(tǒng)一的建模;(c)封裝數(shù)據(jù)庫訪問接口類將來自應(yīng)用程序的數(shù)據(jù)庫訪問請求分發(fā)到相應(yīng)的數(shù)據(jù)庫連接環(huán)境中,為各種商用數(shù)據(jù)庫定義統(tǒng)一的API來創(chuàng)建連接環(huán)境、連接數(shù)據(jù)庫、與數(shù)據(jù)庫斷開連接、執(zhí)行SQL命令、插入記錄、更新記錄、刪除記錄和查詢記錄等,實現(xiàn)各種商用數(shù)據(jù)庫的數(shù)據(jù)庫訪問服務(wù);(d)通用數(shù)據(jù)庫訪問服務(wù)為應(yīng)用程序提供通用的數(shù)據(jù)訪問方法,并分發(fā)應(yīng)用程序的數(shù)據(jù)訪問請求通用數(shù)據(jù)庫訪問服務(wù)為應(yīng)用程序定義了通用的數(shù)據(jù)訪問方法,將獲取數(shù)據(jù)源的所有表信息、單表信息、查詢記錄、插入記錄、更新記錄、刪除記錄和執(zhí)行SQL命令等操作進(jìn)行進(jìn)一步抽象和簡化;對來自調(diào)度數(shù)據(jù)服務(wù)平臺上層應(yīng)用的數(shù)據(jù)訪問請求將通過通用數(shù)據(jù)庫訪問服務(wù)分發(fā)到對應(yīng)的數(shù)據(jù)庫訪問服務(wù)上,應(yīng)用程序都可對返回的結(jié)果進(jìn)行一致的處理。本發(fā)明通過配置文件的方式進(jìn)行數(shù)據(jù)源的靈活配置,配置的信息包括各個數(shù)據(jù)源的網(wǎng)絡(luò)服務(wù)名、數(shù)據(jù)庫訪問的驗證信息。本發(fā)明所述數(shù)據(jù)模型包括MDB表信息類及MDB字段信息類,MDB表信息類類描述一個數(shù)據(jù)源中表的基本信息,包括表名、表的字段的個數(shù)、本次數(shù)據(jù)請求的每條記錄的大小以及表的記錄數(shù);MDB字段信息類描述一個數(shù)據(jù)源的一張表的某個字段的基本信息,包括字段名、字段的類型、字段的大小以及該字段在本次數(shù)據(jù)請求返回記錄中的偏移。本發(fā)明所述通用的數(shù)據(jù)訪問方法,TableListO操作列出數(shù)據(jù)源上的所有表信息;GetTableInfo0操作獲取單張表的基本信息;SqlSelectRecords()操作查詢記錄;InsertRecords()操作插入多條記錄;InsertOneRecord()操作插入單條記錄;SqlUpdateRecords()操作更新記錄;SqlDeleteRecords()操作刪除記錄;SqlExecuteO操作將執(zhí)行SQL命令。本發(fā)明提供了通用的數(shù)據(jù)庫訪問方法,具有速度快、配置靈活、跨平臺等特點,一套源碼可在LINUX、UNIX、Windows等多個平臺使用,而且一個應(yīng)用程序可以無障礙地同時訪問多種商用數(shù)據(jù)庫;同時為調(diào)度數(shù)據(jù)服務(wù)平臺上層業(yè)務(wù)應(yīng)用的快速開發(fā)提供了保證,使得上層應(yīng)用的設(shè)計與實現(xiàn)無需考慮底層數(shù)據(jù)庫類型的差異。圖1所示為本發(fā)明所述的數(shù)據(jù)模型結(jié)構(gòu);圖2所示為本發(fā)明所述的ORACLE數(shù)據(jù)庫訪問服務(wù)類圖3所示為本發(fā)明所述的通用數(shù)據(jù)庫訪問服務(wù)類圖4所示為使用本發(fā)明所述方法訪問ORACLE數(shù)據(jù)源和SYBASE數(shù)據(jù)源的過程示例。具體實施例方式以下結(jié)合附圖對本發(fā)明進(jìn)行詳細(xì)說明。本發(fā)明方法包括了以下步驟(1)配置數(shù)據(jù)源為各種類型的商用關(guān)系數(shù)據(jù)庫單獨進(jìn)行數(shù)據(jù)源配置,配置的信息包括各個數(shù)據(jù)源的網(wǎng)絡(luò)服務(wù)名、數(shù)據(jù)庫訪問的驗證信息等。通用數(shù)據(jù)訪問服務(wù)缺省配置了與ORACLE、SYBASE,SQLSERVER,MYSQL,DB2的連接,因此也相應(yīng)有針對這幾種數(shù)據(jù)庫類型的五個配置文件。每個配置文件中可自由配置多個對應(yīng)類型的源數(shù)據(jù)庫。通用數(shù)據(jù)庫訪問服務(wù)根據(jù)此配置信息去連接各個數(shù)據(jù)源,創(chuàng)建與相應(yīng)數(shù)據(jù)庫的連接環(huán)境。如果有新的數(shù)據(jù)源需要增加,也僅需在相應(yīng)的配置文件中增加新數(shù)據(jù)源的信息,應(yīng)用程序即可自動連接到新的數(shù)據(jù)源上進(jìn)行數(shù)據(jù)訪問操作。如果數(shù)據(jù)源的數(shù)據(jù)庫類型發(fā)生變化,也只需在配置文件中進(jìn)行修改,而不會影響到應(yīng)用程序部分。(2)定義統(tǒng)一的數(shù)據(jù)庫訪問模型調(diào)度數(shù)據(jù)服務(wù)平臺有可能面對眾多來自遺留應(yīng)用系統(tǒng)的數(shù)據(jù)源。由于這些遺留應(yīng)用系統(tǒng)是不同業(yè)務(wù)部門根據(jù)本部門的特定需要而建設(shè)的,因此數(shù)據(jù)源的數(shù)據(jù)庫模式也千差萬別。調(diào)度數(shù)據(jù)服務(wù)平臺作為上層業(yè)務(wù)應(yīng)用的基礎(chǔ)支撐部分,應(yīng)該對上層應(yīng)用所獲取的數(shù)據(jù)庫信息進(jìn)行統(tǒng)一表示。因此,調(diào)度數(shù)據(jù)服務(wù)平臺需要對數(shù)據(jù)庫模式進(jìn)行統(tǒng)一表示。不管實際數(shù)據(jù)源中表結(jié)構(gòu)、字段類型是如何,從通用數(shù)據(jù)庫訪問服務(wù)看到的數(shù)據(jù)模型都是統(tǒng)一的,具有圖1所示的結(jié)構(gòu)。從通用數(shù)據(jù)庫訪問服務(wù)中看到的對象為0028]■MDB表信息類。這個類描述了一個數(shù)據(jù)源中表的基本信息,包括表名、表的字段的個數(shù)、本次數(shù)據(jù)請求的每條記錄的大小以及表的記錄數(shù);■MDB字段信息類。這個類描述了一個數(shù)據(jù)源的一張表的某個字段的基本信息,包括字段名、字段的類型、字段的大小以及該字段在本次數(shù)據(jù)請求返回記錄中的偏移。(3)封裝數(shù)據(jù)庫訪問接口類各種商用數(shù)據(jù)庫都有自己的程序調(diào)用接口,這些底層的數(shù)據(jù)訪問接口為數(shù)據(jù)的高效訪問奠定了基礎(chǔ)。但是由于數(shù)據(jù)訪問接口是不同數(shù)據(jù)庫廠家自己開發(fā)提供的,數(shù)據(jù)類型定義以及接口操作函數(shù)都不相同。為了統(tǒng)一各種數(shù)據(jù)庫的數(shù)據(jù)訪問接口,將對各類數(shù)據(jù)庫的底層調(diào)用接口進(jìn)行封裝,屏蔽底層數(shù)據(jù)訪問接口的差異,為后續(xù)的通用數(shù)據(jù)庫訪問服務(wù)提供一致的數(shù)據(jù)庫操作方法。在本步驟中,將分別針對ORACLE、SYBASE、SQLSERVER、DB2、MYSQL等數(shù)據(jù)庫封裝ORACLE數(shù)據(jù)庫訪問服務(wù)、SYBASE數(shù)據(jù)庫訪問服務(wù)、SQLSERVER數(shù)據(jù)庫訪問服務(wù)、DB2數(shù)據(jù)庫訪問服務(wù)以及MYSQL數(shù)據(jù)庫訪問服務(wù)。由于各個數(shù)據(jù)庫訪問服務(wù)都提供了相同的操作,下面將以O(shè)RACLE數(shù)據(jù)庫訪問服務(wù)說明如何進(jìn)行數(shù)據(jù)訪問的封裝。定義如圖2所示的ORACLE數(shù)據(jù)庫訪問服務(wù)類,在該類上針對調(diào)度數(shù)據(jù)服務(wù)平臺可能用到的數(shù)據(jù)庫操作提供相應(yīng)的方法。對調(diào)度數(shù)據(jù)服務(wù)平臺的業(yè)務(wù)進(jìn)行分析,得出在調(diào)度數(shù)據(jù)服務(wù)平臺上的數(shù)據(jù)庫操作不外乎為創(chuàng)建連接環(huán)境、連接數(shù)據(jù)庫、與數(shù)據(jù)庫斷開連接、執(zhí)行SQL命令、插入記錄、更新記錄、刪除記錄、查詢記錄等,因此在ORACLE數(shù)據(jù)庫訪問服務(wù)類中將根據(jù)提取的數(shù)據(jù)操作類別定義操作方法。在ORACLE數(shù)據(jù)庫訪問服務(wù)類上提供的方法包括■startdb(),該操作建立ORACLE數(shù)據(jù)庫連接環(huán)境;■db_Connect(),該操作使應(yīng)用程序連接到指定的某個ORACLE數(shù)據(jù)源上;■db_Disconnect(),該操作使應(yīng)用程序斷開與某個ORACLE數(shù)據(jù)源的連接;■dbfisqlcommand(),該操作執(zhí)行某個SQL命令。應(yīng)用程序的數(shù)據(jù)刪除操作也將通過此方法完成;■dbfgettableinfo(),該操作獲得ORACLE數(shù)據(jù)庫中表和字段的信息;■dbfinsertrecorders(),該操作將在某張表上插入記錄;■dbfupdaterecorders(),該操作將更新某張表的記錄;■dbfselectisqlresults(),該操作將從數(shù)據(jù)庫的某張表上進(jìn)行數(shù)據(jù)查詢。(4)通用數(shù)據(jù)庫訪問服務(wù)分發(fā)應(yīng)用程序的數(shù)據(jù)訪問請求在對各種數(shù)據(jù)庫的數(shù)據(jù)訪問接口進(jìn)行封裝之后,來自調(diào)度數(shù)據(jù)服務(wù)平臺上層應(yīng)用的數(shù)據(jù)訪問請求將通過通用數(shù)據(jù)庫訪問服務(wù)分發(fā)到對應(yīng)的數(shù)據(jù)庫訪問服務(wù)上。即,如果應(yīng)用程序請求的數(shù)據(jù)源是ORACLE數(shù)據(jù)庫,則數(shù)據(jù)請求將分發(fā)到ORACLE數(shù)據(jù)庫訪問服務(wù)上;如果應(yīng)用程序請求的數(shù)據(jù)源是SYBASE數(shù)據(jù)庫,則數(shù)據(jù)請求將分發(fā)到SYBASE數(shù)據(jù)庫訪問服務(wù)上,依此類推。通用數(shù)據(jù)庫訪問服務(wù)承擔(dān)著代理和分發(fā)的任務(wù),應(yīng)用程序?qū)⒉恢苯用鎸RACLE數(shù)據(jù)庫訪問服務(wù)、SYBASE數(shù)據(jù)庫訪問服務(wù)等對象,而是只需要了解通用數(shù)據(jù)庫訪問服務(wù)即可。因此定義了如圖3所示的通用數(shù)據(jù)庫訪問服務(wù)類,它包含了ORACLE數(shù)據(jù)庫類、SYBASE數(shù)據(jù)庫訪問服務(wù)類、SQLSERVER數(shù)據(jù)庫訪問服務(wù)類、DB2數(shù)據(jù)庫訪問服務(wù)類、MYSQL數(shù)據(jù)庫訪問服務(wù)類,并為上層應(yīng)用定義了通用的數(shù)據(jù)訪問方法。通用數(shù)據(jù)庫訪問服務(wù)類上的方法包括■TableList(),該操作列出某個數(shù)據(jù)源上的所有表信息;■GetTableInfo(),該操作將獲取某個數(shù)據(jù)源上的某張表的基本信息;■SqlSelectRecords(),該操作將查詢某個數(shù)據(jù)源上的某張表上的記錄;■InsertRecords(),該操作將在某個數(shù)據(jù)源上的某張表上插入多條記錄;■InsertOneRecordO,該操作將在某個數(shù)據(jù)源上的某張表上插入一條記錄;■SqlUpdateRecords(),該操作將在某個數(shù)據(jù)源上的某張表上更新多條記錄;■SqlDeleteRecords(),該操作將在某個數(shù)據(jù)源上的某張表上刪除多條記錄;■SqlExecute(),該操作將執(zhí)行某條SQL語句。一個具體應(yīng)用程序使用該通用數(shù)據(jù)庫訪問服務(wù)時將按照創(chuàng)建連接環(huán)境、發(fā)出數(shù)據(jù)訪問請求、處理請求結(jié)果、釋放數(shù)據(jù)源對象的請求序列來完成對某個數(shù)據(jù)源的訪問操作。圖4以一個應(yīng)用程序需同時訪問ORACLE數(shù)據(jù)源和SYBASE數(shù)據(jù)源為例,說明數(shù)據(jù)6請求的過程?!鰯?shù)據(jù)庫訪問客戶端首先向通用數(shù)據(jù)庫訪問發(fā)出“創(chuàng)建數(shù)據(jù)庫連接環(huán)境”的請求,通用數(shù)據(jù)庫訪問服務(wù)根據(jù)此請求分別向ORACLE數(shù)據(jù)庫訪問服務(wù)和SYBASE數(shù)據(jù)庫訪問服務(wù)分發(fā)創(chuàng)建連接環(huán)境的請求?!鲞B接環(huán)境創(chuàng)建完成后,數(shù)據(jù)庫訪問客戶端向通用數(shù)據(jù)庫訪問服務(wù)發(fā)出“獲得指定數(shù)據(jù)源的表信息”的請求。如果數(shù)據(jù)源是ORACLE,通用數(shù)據(jù)庫訪問服務(wù)將請求分發(fā)到ORACLE連接環(huán)境,ORACLE數(shù)據(jù)庫訪問服務(wù)返回表信息?!鰯?shù)據(jù)庫訪問客戶端根據(jù)返回的表信息,向通用數(shù)據(jù)庫訪問服務(wù)發(fā)送“獲取表記錄信息”請求,通用數(shù)據(jù)庫訪問服務(wù)將此請求分發(fā)到ORACLE連接環(huán)境,ORACLE數(shù)據(jù)庫訪問服務(wù)返回表記錄信息?!霾僮魍瓿珊螅瑪?shù)據(jù)庫訪問客戶端通知通用數(shù)據(jù)庫訪問服務(wù)釋放數(shù)據(jù)源對象,通用數(shù)據(jù)庫訪問服務(wù)再分別通知ORACLE數(shù)據(jù)庫訪問服務(wù)釋放ORACLE連接對象,通知SYBASE數(shù)據(jù)庫訪問服務(wù)釋放SYBASE連接對象。權(quán)利要求一種調(diào)度數(shù)據(jù)服務(wù)平臺中跨平臺多異構(gòu)數(shù)據(jù)庫的通用數(shù)據(jù)訪問方法,其特征在于包括了以下步驟(a)配置數(shù)據(jù)源根據(jù)配置信息去連接各個數(shù)據(jù)源,創(chuàng)建與相應(yīng)數(shù)據(jù)庫的連接環(huán)境;(b)定義統(tǒng)一的數(shù)據(jù)庫訪問模型將所有的數(shù)據(jù)請求結(jié)果都用統(tǒng)一的模型進(jìn)行描述,將各種商用數(shù)據(jù)庫中私有表示的表結(jié)構(gòu)及表記錄信息實現(xiàn)統(tǒng)一的建模;(c)封裝數(shù)據(jù)庫訪問接口類將來自應(yīng)用程序的數(shù)據(jù)庫訪問請求分發(fā)到相應(yīng)的數(shù)據(jù)庫連接環(huán)境中,為各種商用數(shù)據(jù)庫定義統(tǒng)一的API來創(chuàng)建連接環(huán)境、連接數(shù)據(jù)庫、與數(shù)據(jù)庫斷開連接、執(zhí)行SQL命令、插入記錄、更新記錄、刪除記錄和查詢記錄等,實現(xiàn)各種商用數(shù)據(jù)庫的數(shù)據(jù)庫訪問服務(wù);(d)通用數(shù)據(jù)庫訪問服務(wù)為應(yīng)用程序提供通用的數(shù)據(jù)訪問方法,并分發(fā)應(yīng)用程序的數(shù)據(jù)訪問請求通用數(shù)據(jù)庫訪問服務(wù)為應(yīng)用程序定義了通用的數(shù)據(jù)訪問方法,將獲取數(shù)據(jù)源的所有表信息、單表信息、查詢記錄、插入記錄、更新記錄、刪除記錄和執(zhí)行SQL命令等操作進(jìn)行進(jìn)一步抽象和簡化;對來自調(diào)度數(shù)據(jù)服務(wù)平臺上層應(yīng)用的數(shù)據(jù)訪問請求將通過通用數(shù)據(jù)庫訪問服務(wù)分發(fā)到對應(yīng)的數(shù)據(jù)庫訪問服務(wù)上,應(yīng)用程序都可對返回的結(jié)果進(jìn)行一致的處理。2.根據(jù)權(quán)利要求1所述的調(diào)度數(shù)據(jù)服務(wù)平臺中跨平臺多異構(gòu)數(shù)據(jù)庫的通用數(shù)據(jù)訪問方法,其特征在于通過配置文件的方式進(jìn)行數(shù)據(jù)源的靈活配置,配置的信息包括各個數(shù)據(jù)源的網(wǎng)絡(luò)服務(wù)名、數(shù)據(jù)庫訪問的驗證信息。3.根據(jù)權(quán)利要求1或2所述的調(diào)度數(shù)據(jù)服務(wù)平臺中跨平臺多異構(gòu)數(shù)據(jù)庫的通用數(shù)據(jù)訪問方法,其特征在于數(shù)據(jù)模型包括MDB表信息類及MDB字段信息類,=MDB表信息類類描述一個數(shù)據(jù)源中表的基本信息,包括表名、表的字段的個數(shù)、本次數(shù)據(jù)請求的每條記錄的大小以及表的記錄數(shù);MDB字段信息類描述一個數(shù)據(jù)源的一張表的某個字段的基本信息,包括字段名、字段的類型、字段的大小以及該字段在本次數(shù)據(jù)請求返回記錄中的偏移。4.根據(jù)權(quán)利要求1或2所述的調(diào)度數(shù)據(jù)服務(wù)平臺中跨平臺多異構(gòu)數(shù)據(jù)庫的通用數(shù)據(jù)訪問方法,其特征在于通用的數(shù)據(jù)訪問方法,TableListO操作列出數(shù)據(jù)源上的所有表信息;GetTableInfo()操作獲取單張表的基本信息;SqlSelectRecords()操作查詢記錄;InsertRecords()操作插入多條記錄;InsertOneRecord()操作插入單條記錄;SqlUpdateRecords()操作更新記錄;SqlDeleteRecords()操作刪除記錄;SqlExecuteO操作將執(zhí)行SQL命令。全文摘要本發(fā)明公開了一種調(diào)度數(shù)據(jù)服務(wù)平臺中跨平臺多異構(gòu)數(shù)據(jù)庫的通用數(shù)據(jù)訪問方法,包括了以下步驟配置數(shù)據(jù)源根據(jù)配置信息去連接各個數(shù)據(jù)源,創(chuàng)建與相應(yīng)數(shù)據(jù)庫的連接環(huán)境;定義統(tǒng)一的數(shù)據(jù)庫訪問模型將所有的數(shù)據(jù)請求結(jié)果都用統(tǒng)一的模型進(jìn)行描述,將各種商用數(shù)據(jù)庫中私有表示的表結(jié)構(gòu)及表記錄信息實現(xiàn)統(tǒng)一的建模;封裝數(shù)據(jù)庫訪問接口類;通用數(shù)據(jù)庫訪問服務(wù)為應(yīng)用程序提供通用的數(shù)據(jù)訪問方法,并分發(fā)應(yīng)用程序的數(shù)據(jù)訪問請求。本發(fā)明提供了通用的數(shù)據(jù)庫訪問方法,具有速度快、配置靈活、跨平臺等特點,一套源碼可在多個平臺使用,而且一個應(yīng)用程序可以無障礙地同時訪問多種商用數(shù)據(jù)庫;同時為調(diào)度數(shù)據(jù)服務(wù)平臺上層業(yè)務(wù)應(yīng)用的快速開發(fā)提供了保證。文檔編號G06F17/30GK101930469SQ20101027061公開日2010年12月29日申請日期2010年9月2日優(yōu)先權(quán)日2010年9月2日發(fā)明者萬宇,何萍,帥玲玲,戴斌,李俊,李曉露,毛鵬,白日昶申請人:江西省電力公司超高壓分公司