一種基于多數(shù)據(jù)庫類型的sql執(zhí)行方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及計算機技術(shù)領(lǐng)域,特別涉及一種基于多數(shù)據(jù)庫類型的SQL執(zhí)行方法和 裝置。
【背景技術(shù)】
[0002] 在信息化應(yīng)用的軟件項目中,與數(shù)據(jù)庫交互是必不可少的內(nèi)容,數(shù)據(jù)庫管理系統(tǒng) 的類型多種多樣。客戶使用的時候一般是選擇這些數(shù)據(jù)庫系統(tǒng)中的一種,標準應(yīng)用軟件產(chǎn) 品一般都要支持多數(shù)據(jù)庫的應(yīng)用,這就要求在軟件設(shè)計和開發(fā)的時候要考慮支持多數(shù)據(jù)庫 應(yīng)用的情況,但不同的數(shù)據(jù)庫系統(tǒng)其語法結(jié)構(gòu)有所不同,從而造成開發(fā)人員在編碼的時候 要進行大量的不同數(shù)據(jù)庫系統(tǒng)語法轉(zhuǎn)換的編寫。例如:假設(shè)要開發(fā)的軟件產(chǎn)品支持三種主 流數(shù)據(jù)庫的話,一條SQL語句要按三種不同的語法進行執(zhí)行,就要分別寫三條不同語法的 SQL語句,此工作中包含大量的重復(fù)性工作,從而造在很大程序上影響的開發(fā)人員的編碼效 率。
【發(fā)明內(nèi)容】
[0003] 本發(fā)明提供一種基于多數(shù)據(jù)庫類型的SQL執(zhí)行方法和裝置,能夠提高編碼效率。
[0004] -種基于多數(shù)據(jù)庫類型的SQL執(zhí)行方法,
[0005] 創(chuàng)建全局函數(shù)或者方法對象,設(shè)置入口參數(shù)包括對應(yīng)需要轉(zhuǎn)換的SQL語句的第一 參數(shù)和對應(yīng)目標數(shù)據(jù)庫類型的第二參數(shù);以及設(shè)置輸出結(jié)果為轉(zhuǎn)換后的SQL語句;
[0006] 在所述全局函數(shù)或所述全局方法內(nèi),封裝從前置通用數(shù)據(jù)庫語法的SQL語句到其 他每一個目標數(shù)據(jù)庫類型語法的SQL語句的轉(zhuǎn)換代碼;
[0007] 還包括:
[0008] 調(diào)用所述全局函數(shù)或所述全局方法,
[0009] 通過所述第一參數(shù),向所述全局函數(shù)或所述全局方法輸入符合所述前置通用數(shù)據(jù) 庫語法的當前SQL語句;
[0010] 通過所述第二參數(shù),向所述全局函數(shù)或所述全局方法輸入當前目標數(shù)據(jù)庫類型;
[0011] 執(zhí)行所述全局函數(shù)或所述全局方法,獲取所述全局函數(shù)或所述全局方法輸出的當 前目標數(shù)據(jù)庫類型語法的SQL語句。
[0012] 所述目標數(shù)據(jù)庫類型包括:Oracle,Sybase,MySql,DB2數(shù)據(jù)庫中的任意一個或多 個。
[0013] 所述第二參數(shù)包括多個值,通過三位字符串表示不同的目標數(shù)據(jù)庫類型;
[0014] 所述通過所述第二參數(shù),向所述全局函數(shù)或所述全局方法輸入當前目標數(shù)據(jù)庫類 型包括:在第二參數(shù)的三位字符串中分別攜帶多個當前目標數(shù)據(jù)庫類型;
[0015] 所述獲取當前目標數(shù)據(jù)庫類型語法的SQL語句包括:獲取所述全局函數(shù)或所述全 局方法分別輸出的對應(yīng)于多個當前目標數(shù)據(jù)庫類型語法的多個SQL語句。
[0016] 所述前置通用數(shù)據(jù)庫語法為:SQLSERVER語法。
[0017] 當目標數(shù)據(jù)庫類型包括ORACLE數(shù)據(jù)庫時;
[0018] 所述封裝從前置通用數(shù)據(jù)庫語法的SQL語句到其他每一個目標數(shù)據(jù)庫類型語法 的SQL語句的轉(zhuǎn)換代碼包括:用字符替換函數(shù)將SQLSERVER語法中判斷是否為空的函數(shù)名 稱"ISNULL"替換為ORACLE數(shù)據(jù)庫語法中的"NVL"。
[0019] 一種基于多數(shù)據(jù)庫類型的SQL執(zhí)行裝置,包括:
[0020] 封裝單元,用于封裝有全局函數(shù)或者方法對象,該全局函數(shù)或者方法對象中封裝 有從前置通用數(shù)據(jù)庫語法的SQL語句到其他每一個目標數(shù)據(jù)庫類型語法的SQL語句的轉(zhuǎn) 換代碼;該全局函數(shù)或者方法對象的入口參數(shù)包括對應(yīng)需要轉(zhuǎn)換的SQL語句的第一參數(shù)和 對應(yīng)目標數(shù)據(jù)庫類型的第二參數(shù);該全局函數(shù)或者方法對象的輸出結(jié)果為轉(zhuǎn)換后的SQL語 句;
[0021] 交互單元,用于通過對所述第一參數(shù)的賦值,獲取向所述全局函數(shù)或所述全局方 法輸入的符合所述前置通用數(shù)據(jù)庫語法的當前SQL語句;通過對所述第二參數(shù)的賦值,獲 取向所述全局函數(shù)或所述全局方法輸入的當前目標數(shù)據(jù)庫類型;
[0022] 調(diào)用執(zhí)行單元,用于調(diào)用封裝單元中的所述全局函數(shù)或所述全局方法,根據(jù)所述 交互單元接收到的賦值,執(zhí)行所述全局函數(shù)或所述全局方法,獲取所述全局函數(shù)或所述全 局方法輸出的當前目標數(shù)據(jù)庫類型語法的SQL語句。
[0023] 所述目標數(shù)據(jù)庫類型包括:0racle,Sybase,MySql,DB2數(shù)據(jù)庫中的任意一個或多 個。
[0024] 所述封裝單元所封裝的全局函數(shù)或所述全局方法中,所述第二參數(shù)包括多個值, 通過三位字符串表示不同的目標數(shù)據(jù)庫類型;
[0025] 所述交互單元,用于從對所述第二參數(shù)的賦值中,得到該第二參數(shù)的三位字符串 中分別攜帶的多個當前目標數(shù)據(jù)庫類型;
[0026] 所述調(diào)用執(zhí)行單元,用于根據(jù)所述交互單元得到的多個當前目標數(shù)據(jù)庫類型,獲 取所述全局函數(shù)或所述全局方法分別輸出的對應(yīng)于多個當前目標數(shù)據(jù)庫類型語法的多個 SQL語句。
[0027] 所述前置通用數(shù)據(jù)庫語法為:SQLSERVER語法。
[0028] 當目標數(shù)據(jù)庫類型包括ORACLE數(shù)據(jù)庫時;
[0029] 所述封裝單元,用于封裝用字符替換函數(shù)將SQLSERVER語法中判斷是否為空的函 數(shù)名稱"ISNULL"替換為ORACLE數(shù)據(jù)庫語法中的"NVL"的轉(zhuǎn)換代碼。
[0030] 本發(fā)明實施例提供了一種基于多數(shù)據(jù)庫類型的SQL執(zhí)行方法和裝置,規(guī)定所有用 戶都使用同一種前置通用數(shù)據(jù)庫語法,比如SQLSERVER語法,并且預(yù)先封裝好了從該前置 通用數(shù)據(jù)庫語法的SQL語句轉(zhuǎn)換到其他數(shù)據(jù)庫類型語法的SQL語句的轉(zhuǎn)換代碼,這樣,用戶 或各種開發(fā)人員無需了解實際需要的多種多樣的目標數(shù)據(jù)庫類型的語法,只需要懂得并輸 入一種前置通用數(shù)據(jù)庫語法的SQL語句即可,則可以自動轉(zhuǎn)換為所需要的目標數(shù)據(jù)庫類型 的語法的SQL語句,因此,大大提高了編碼的效率。
[0031] 本發(fā)明實施例在軟件開發(fā)領(lǐng)域有著廣泛的應(yīng)用前景,在對數(shù)據(jù)庫進行交互的軟件 開發(fā)中可極大的減少開發(fā)人員針對不同數(shù)據(jù)進行SQL語法轉(zhuǎn)換的工作量。
【附圖說明】
[0032] 圖1是本發(fā)明一個實施例提出的基于多數(shù)據(jù)庫類型的SQL執(zhí)行方法的流程圖。
[0033] 圖2是本發(fā)明另一個實施例提出的基于多數(shù)據(jù)庫類型的SQL執(zhí)行方法的流程圖。
[0034] 圖3是本發(fā)明一個實施例中基于多數(shù)據(jù)庫類型的SQL執(zhí)行裝置的結(jié)構(gòu)示意圖。
【具體實施方式】
[0035] 下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完 整地描述。顯然,所描述的實施例僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本 發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實 施例,都屬于本發(fā)明保護的范圍。
[0036] 本發(fā)明一個實施例提出了一種基于多數(shù)據(jù)庫類型的SQL執(zhí)行方法,參見圖1,包 括:
[0037] 步驟101 :創(chuàng)建全局函數(shù)或者方法對象,設(shè)置入口參數(shù)包括對應(yīng)需要轉(zhuǎn)換的SQL語 句的第一參數(shù)和對應(yīng)目標數(shù)據(jù)庫類型的第二參數(shù);以及設(shè)置輸出結(jié)果為轉(zhuǎn)換后的SQL語 句;
[0038] 步驟102 :在所述全局函數(shù)或所述全局方法內(nèi),封裝從前置通用數(shù)據(jù)庫語法的SQL 語句到其他每一個目標數(shù)據(jù)庫類型語法的SQL語句的轉(zhuǎn)換代碼;
[0039