国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      生成數(shù)據(jù)庫操作代碼的方法和裝置的制造方法

      文檔序號:10724921閱讀:302來源:國知局
      生成數(shù)據(jù)庫操作代碼的方法和裝置的制造方法【專利摘要】一種生成數(shù)據(jù)庫操作代碼的方法和裝置。方法包括:第一步驟,采用抽象化描述,將數(shù)據(jù)庫信息,表信息以及數(shù)據(jù)庫操作信息在配置文件中配置,第二步驟,利用代碼生成引擎解析所述配置文件,將數(shù)據(jù)庫信息,表信息以及數(shù)據(jù)庫操作信息,轉(zhuǎn)換為具有層次結(jié)構(gòu)及關(guān)聯(lián)的基礎(chǔ)對象,第三步驟,對SQL語句進行解析,獲取其輸入輸出參數(shù)信息,并將該SQL語句轉(zhuǎn)換為特定數(shù)據(jù)庫及編程語言下的執(zhí)行語句,第四步驟,根據(jù)基礎(chǔ)對象的關(guān)聯(lián)關(guān)系,生成源文件?!緦@f明】生成數(shù)據(jù)庫操作代碼的方法和裝置
      技術(shù)領(lǐng)域
      [0001]本發(fā)明的實施例涉及生成數(shù)據(jù)庫操作代碼的方法和裝置?!?br>背景技術(shù)
      】[0002]MVC框架作為現(xiàn)有信息系統(tǒng)的主流框架,很好的將頁面顯示與業(yè)務(wù)邏輯分離開。MVC框架中的Μ層,主要為數(shù)據(jù)庫操作層。隨著業(yè)務(wù)量的擴展,往往需要將現(xiàn)有的業(yè)務(wù)系統(tǒng)向不同的數(shù)據(jù)庫迀移,并且使用不同的編程語言進行開發(fā)。隨著云計算技術(shù)的發(fā)展,這一趨勢也正在加劇,去Ι0Ε化概念孕育而生。因此原有MVC架構(gòu)中較為穩(wěn)定的數(shù)據(jù)操作層也面臨著較大變化的可能?,F(xiàn)有技術(shù)方案為不同編程語言和數(shù)據(jù)庫開發(fā)相應(yīng)的數(shù)據(jù)庫操作代碼,開發(fā)以及維護的工作量都相當大,并且容易引入錯誤。此外業(yè)務(wù)開發(fā)人員需要熟悉具體不同語言,不同數(shù)據(jù)庫操作API的使用以及關(guān)注報錯等細節(jié),開發(fā)難度較大。[0003]以下是現(xiàn)有技術(shù)中的一些缺點。[0004]1.利用現(xiàn)有的業(yè)務(wù)系統(tǒng)在進行數(shù)據(jù)庫操作時,需要針對不同編程語言,不同數(shù)據(jù)庫,調(diào)用相應(yīng)的API,當編程語言及數(shù)據(jù)庫發(fā)生變化的時候,需要針對相同業(yè)務(wù)功能,重新開發(fā)一套數(shù)據(jù)庫操作代碼,工作量相當大,并且非常容易引入缺陷。[0005]2.對于一個SQL語句對應(yīng)的操作函數(shù),需要人工確定需要的輸入,輸出參數(shù),參數(shù)的類型,以及排列順序,工作量相當繁瑣,并且非常容易引入錯誤。[0006]3.不同數(shù)據(jù)庫的元數(shù)據(jù)描述形式差異較大,不同的程序數(shù)據(jù)類型也是各不相同,任何數(shù)據(jù)庫操作首先要考慮的是數(shù)據(jù)庫字段和程序數(shù)據(jù)類型之間的轉(zhuǎn)換,而二者的映射關(guān)系之和為數(shù)據(jù)庫種類與編程語言數(shù)量的笛卡爾乘積,因此無論是擴展到不同的編程語言實現(xiàn)還是移植到不同的數(shù)據(jù)庫平臺,都需要大量重復的工作。[0007]4.由于數(shù)據(jù)庫表本身隨著業(yè)務(wù)的變化,將引發(fā)字段的增刪改,在很多情況下,將影響大多數(shù)的數(shù)據(jù)庫操作語句,因此,需要有專門的機制,能夠輔助發(fā)現(xiàn)需要變化的數(shù)據(jù)庫操作代碼,甚至能自動適應(yīng)數(shù)據(jù)庫表的變化。[0008]5.由人工編寫的數(shù)據(jù)庫操作語句,也很可能引入拼寫或者語法方面的錯誤,這些錯誤可能需要在編譯,甚至執(zhí)行階段才會被發(fā)現(xiàn),嚴重影響業(yè)務(wù)系統(tǒng)的開發(fā)質(zhì)量。[0009]6.在一般情況下,如果sql語句發(fā)生執(zhí)行錯誤,需要在報錯日志中打印相關(guān)的輸入?yún)?shù)值,如insert語句主鍵需要打印對應(yīng)的主鍵字段,而select語句查找不到記錄需要打印對應(yīng)的條件字段,人工方式編寫報錯語句非常容易引起字段順序或者類型不匹配等錯誤,輕則無法正常顯示信息,重則引發(fā)程序coredump。[0010]7.在很多業(yè)務(wù)系統(tǒng)中,需要將業(yè)務(wù)數(shù)據(jù)分表存放,針對不同表的數(shù)據(jù)庫操作代碼除了表名的差異,基本是一致的,如果人工開發(fā)并維護這些代碼,帶來的工作量也是巨大的。[0011]8.若采用Mysql集群替代Db2存儲數(shù)據(jù),需要將同一張表的數(shù)據(jù)進行切分,并分庫存放,這也是對數(shù)據(jù)庫操作代碼的重大改造,這也要求將數(shù)據(jù)庫操作的邏輯與集體實現(xiàn)分離?!?br/>發(fā)明內(nèi)容】[0012]本發(fā)明的主要思想是將數(shù)據(jù)庫操作定義與具體實現(xiàn)代碼分離,使業(yè)務(wù)系統(tǒng)的開發(fā)人員能夠從繁瑣的數(shù)據(jù)庫操作底層實現(xiàn)中解放出來?;谶@個思想提出了一套基于XML的數(shù)據(jù)庫代碼生成配置方式,以及對應(yīng)的配置解析及代碼生成框架。這個思想將原有MVC架構(gòu)中的數(shù)據(jù)庫操作層分離為和具體數(shù)據(jù)庫以及編程語言無關(guān)的數(shù)據(jù)庫操作抽象描述層以及具體實現(xiàn)層,由代碼生成引擎自動完成抽象層向具體實現(xiàn)層的轉(zhuǎn)化。[0013]通過解析數(shù)據(jù)庫操作定義配置文件,結(jié)合自動獲取的數(shù)據(jù)庫表元數(shù)據(jù)信息,在代碼生成框架下編寫針對特定數(shù)據(jù)庫及編程語言的個性化生成代碼,可以任意生成基于不同數(shù)據(jù)庫API,不同編程語言的數(shù)據(jù)庫操作代碼,甚至生成對應(yīng)的編譯文件,從而對于業(yè)務(wù)代碼的開發(fā)人員實現(xiàn)了所見即所得,即只需指定對應(yīng)的SQL語句,而無需考慮在不同數(shù)據(jù)庫,不同編程語言下的實現(xiàn)。[0014]本發(fā)明的一個實施例引入了數(shù)據(jù)庫全表字段替換標記以及黑名單機制,從而能很好的適應(yīng)表字段的變化;能生成任意多套表及任意表套數(shù)規(guī)則的數(shù)據(jù)庫操作代碼;能夠自動確定大多數(shù)數(shù)據(jù)庫操作函數(shù)的傳入,傳出參數(shù)及數(shù)據(jù)類型,簡化了數(shù)據(jù)庫操作的配置;能夠自動化的解析大多數(shù)SQL語句以檢查該SQL語句是否具有語法錯誤,以避免編譯,執(zhí)行過程中的錯誤;能夠自動在報錯信息中打印相關(guān)字段的取值,以便業(yè)務(wù)人員準確的定位錯誤原因。[0015]本發(fā)明減輕業(yè)務(wù)代碼開發(fā)人員的工作量及難度,降低數(shù)據(jù)庫操作代碼出錯的可能性,減少代碼后續(xù)維護的工作量,減少數(shù)據(jù)庫系統(tǒng)整體迀移的難度及工作量。[0016]為此,根據(jù)本發(fā)明的一個或多個實施例,公開一種生成數(shù)據(jù)庫操作代碼的方法,包括:第一步驟,采用抽象化描述,將數(shù)據(jù)庫信息,表信息以及數(shù)據(jù)庫操作信息在配置文件中配置,第二步驟,利用代碼生成引擎解析所述配置文件,將數(shù)據(jù)庫信息,表信息以及數(shù)據(jù)庫操作信息,轉(zhuǎn)換為具有層次結(jié)構(gòu)及關(guān)聯(lián)的基礎(chǔ)對象,第三步驟,對SQL語句進行解析,獲取其輸入輸出參數(shù)信息,并將該SQL語句轉(zhuǎn)換為特定數(shù)據(jù)庫及編程語言下的執(zhí)行語句,第四步驟,根據(jù)基礎(chǔ)對象的關(guān)聯(lián)關(guān)系,生成源文件。[0017]根據(jù)本發(fā)明的一個或多個實施例,公開一種生成數(shù)據(jù)庫操作代碼的裝置,包括:第一單元,采用抽象化描述,將數(shù)據(jù)庫信息,表信息以及數(shù)據(jù)庫操作信息在配置文件中配置,第二單元,利用代碼生成引擎解析所述配置文件,將數(shù)據(jù)庫信息,表信息以及數(shù)據(jù)庫操作信息,轉(zhuǎn)換為具有層次結(jié)構(gòu)及關(guān)聯(lián)的基礎(chǔ)對象,第三單元,對SQL語句進行解析,獲取其輸入輸出參數(shù)信息,并將該SQL語句轉(zhuǎn)換為特定數(shù)據(jù)庫及編程語言下的執(zhí)行語句,第四單元,根據(jù)基礎(chǔ)對象的關(guān)聯(lián)關(guān)系,生成源文件。[0018]當結(jié)合附圖閱讀以下描述時也將理解本發(fā)明的實施例的其它特征和優(yōu)勢,其中附圖借助于實例示出了本發(fā)明的實施例的原理。【附圖說明】[0019]圖1是根據(jù)本發(fā)明實施例的生成數(shù)據(jù)庫操作代碼的方法的步驟示意圖。[0020]圖2是根據(jù)本發(fā)明實施例的代碼生成引擎對XML配置文件進行解析生成對象的圖不。【具體實施方式】[0021]在下文中,將結(jié)合實施例描述本發(fā)明的原理。應(yīng)當理解的是,給出的實施例只是為了本領(lǐng)域技術(shù)人員更好地理解并且實踐本發(fā)明,而不是限制本發(fā)明的范圍。本說明書中包含的具體的實施細節(jié)不應(yīng)被解釋為對發(fā)明的范圍或可能被要求保護的范圍的限制,而是應(yīng)該被視為特定于實施例的描述。有利地,在各實施例的上下文描述的特征可被組合在單一實施例中來實施。在單一實施例的上下文中描述的特可在多個實施例來實施。[0022]圖1是根據(jù)本發(fā)明實施例的生成數(shù)據(jù)庫操作代碼的方法的步驟示意圖。[0023]第一步驟,采用抽象化描述,將數(shù)據(jù)庫信息,表信息以及數(shù)據(jù)庫操作信息在配置文件中配置。[0024]第二步驟,利用代碼生成引擎解析所述配置文件,將數(shù)據(jù)庫信息,表信息以及數(shù)據(jù)庫操作信息,轉(zhuǎn)換為具有層次結(jié)構(gòu)及關(guān)聯(lián)的基礎(chǔ)對象。[0025]第三步驟,對SQL語句進行解析,獲取其輸入輸出參數(shù)信息,并將該SQL語句轉(zhuǎn)換為特定數(shù)據(jù)庫及編程語言下的執(zhí)行語句。[0026]第四步驟,根據(jù)基礎(chǔ)對象的關(guān)聯(lián)關(guān)系,生成源文件。[0027]在前述實施例中,該XML配置文件可以包括生成數(shù)據(jù)庫操作代碼的元素。。一個較復雜,包含了所有特殊情況的XML配置文件內(nèi)容如下所示。[0029]根據(jù)該XML配置文件,Db根節(jié)點對應(yīng)數(shù)據(jù)庫配置信息,包括數(shù)據(jù)庫類型(type)、數(shù)據(jù)庫操作基于的編程語言(language),api編程模式(mode,分別有static以及dynamic等取值,對應(yīng)靜態(tài)Sql及動態(tài)Sql)、數(shù)據(jù)分布模式(dataMode,分別有single及cluster取值,對應(yīng)單機模式及集群模式)、數(shù)據(jù)庫IP(ip)、數(shù)據(jù)庫端口(port)、數(shù)據(jù)庫名(name)、用戶名(user)以及密碼信息(pass)。數(shù)據(jù)庫代碼生成引擎將根據(jù)數(shù)據(jù)庫類型,并帶入數(shù)據(jù)庫IP等數(shù)據(jù)庫連接信息,調(diào)用相應(yīng)的連接數(shù)據(jù)庫函數(shù),以獲取對應(yīng)數(shù)據(jù)庫的元數(shù)據(jù)信息。[0030]Db根節(jié)點的一個子節(jié)點為Tbl,對應(yīng)表信息,主要包括表名(name),數(shù)據(jù)庫代碼生成引擎將根據(jù)數(shù)據(jù)庫類型調(diào)用相應(yīng)的元數(shù)據(jù)獲取API,獲取該表的元數(shù)據(jù)信息,包括所包含的數(shù)據(jù)庫字段、及字段長度和類型信息、代碼生成引擎將默認生成包含表所有字段的結(jié)構(gòu)體(或者類)。表信息還包括表套數(shù)(tableNum)以及表套數(shù)模式(tableMode),對于配置了表套數(shù)的表,對應(yīng)的操作函數(shù)將自動包含當前表套數(shù)作為參數(shù),同時檢查輸入的表套數(shù)參數(shù)的合法性。對于靜態(tài)數(shù)據(jù)庫編程代碼,代碼生成引擎將對數(shù)據(jù)庫操作針對不同表套數(shù)進行擴展。表套數(shù)模式對應(yīng)不同套號表的命名方式,主要有MMDD(月日表),NN(順序表)等。[0031]Tbl節(jié)點下的主要的子節(jié)點為Opr,對應(yīng)的是數(shù)據(jù)庫操作信息。主要屬性包括操作類型(tp,主要有declare,select,insert,update,delete)以及對應(yīng)的操作名后綴(suffiX,將作為對應(yīng)操作函數(shù)或者方法的后綴)。[0032]Stmt為Opr的可選子節(jié)點,當該節(jié)點未配置的時候,默認本操作為無where條件的全字段操作。該節(jié)點的sql屬性為對應(yīng)的sql語句,where條件的右值以$符號加參數(shù)序號表示。Sql語句中的字段列表可以用[field_list]、[value_list]、[set_list]替代,代碼生成引擎將根據(jù)獲取的元數(shù)據(jù)信息,自動對這些列表進行替換,考慮到某些字段需要單獨進行設(shè)置(比如采用數(shù)據(jù)庫時間〇111^6111:_1:;[11168七311^1),通過131301^^8七?1(18節(jié)點的配置,還可以指定黑名單字段,黑名單字段將自動被排除。字段列表替換加上黑名單機制,有效的減少了配置的冗余,將數(shù)據(jù)庫字段變化的影響降低到了最小的程度。[0033]BindParam以及BindResult節(jié)點為Stmt的子節(jié)點,分別對應(yīng)操作的傳入傳出參數(shù)及其類型信息。在大多數(shù)情況下,該節(jié)點無需配置。代碼生成引擎將對SQL語句進行語法分析,自動獲取需要傳入以及傳出字段名及類型,具體規(guī)則將在下文詳細介紹。對于多表操作等特殊SQL或者需要自定義參數(shù)名和類型的情況下,需要對其進行配置。數(shù)據(jù)庫操作函數(shù)(方法)的參數(shù)除了可以是數(shù)據(jù)庫表對應(yīng)的默認結(jié)構(gòu)體,還可以是用戶自定義的結(jié)構(gòu)體,甚至可以是單獨的原始類型參數(shù)。[0034]Struct節(jié)點用來對自定義的結(jié)構(gòu)進行配置。Struct節(jié)點既可以作為Db節(jié)點的子節(jié)點(該結(jié)構(gòu)定義在數(shù)據(jù)庫全局的頭文件中),也可以作為Tbl節(jié)點的子節(jié)點(該結(jié)構(gòu)只在該表對應(yīng)的頭文件種定義)。其子節(jié)點Fid用來配置自定義結(jié)構(gòu)的字段信息,屬性(tp)為字段類型,其中字段類型為定義的通用程序類型,分別取值String,Int32,Int64,Double,F(xiàn)loat,Bool,這些通用類型定義將被代碼生成引擎轉(zhuǎn)換為對應(yīng)編程語言的相應(yīng)類型。Length為可選屬性,僅當為String類型的時候有效。此外,字段類型還可以直接來自于表的對應(yīng)字段,以src屬性表示,該屬性的取值為表名和字段名以點號分割的字符串,當前表用$tb1表示(僅當該節(jié)點為Tb1節(jié)點子節(jié)點的時候有效)。[0035]根據(jù)本發(fā)明的該實施例,生成數(shù)據(jù)庫操作代碼的方法,包括以下步驟。[0036]第一步驟,采用通用的抽象化描述,將數(shù)據(jù)庫信息,表信息以及數(shù)據(jù)庫操作信息在配置文件中配置。例如,配置在XML文件中。[0037]第二步驟,利用代碼生成引擎解析配置,將數(shù)據(jù)庫信息,表信息以及數(shù)據(jù)庫操作信息,轉(zhuǎn)換為具有層次結(jié)構(gòu)及關(guān)聯(lián)的基礎(chǔ)對象。圖2是根據(jù)本發(fā)明實施例的代碼生成引擎對XML配置文件進行解析生成對象的圖示。在該實施例中,參考上述示例XML元素結(jié)構(gòu)定義對代碼生成引擎要分析的XML配置文件進行描述。如圖2所示,在該示例中,根據(jù)面向?qū)ο蟮乃枷?,將配置信息轉(zhuǎn)換為具有層次關(guān)系類結(jié)構(gòu),主要的類包括:數(shù)據(jù)庫(Database)、表(Table)、結(jié)構(gòu)(Struct)、域(Field)、操作(Operation)、函數(shù)(Function),源文件(File)以及代碼生成引擎(CodeEngine)。首先根據(jù)編程語言,api編程模式,數(shù)據(jù)分布模式,初始化對應(yīng)的代碼生成引擎,根據(jù)數(shù)據(jù)庫類型實例化對應(yīng)的數(shù)據(jù)庫對象,然后,調(diào)用數(shù)據(jù)庫對象的Connect方法連接數(shù)據(jù)庫,對該數(shù)據(jù)庫包含的所有表,調(diào)用GetMetadata方法,獲取該表的元數(shù)據(jù)信息。記錄每個字段的通用數(shù)據(jù)庫類型,例如Char、Varchar、Bit、Decimal、Timestamp。其中Char及Bit類型需要記錄長度信息,Decimal類型需要記錄整數(shù)及小數(shù)的位數(shù)。最后根據(jù)其通用數(shù)據(jù)類型生成對應(yīng)的Field對象,完善其通用程序類型信息,并將每個字段對應(yīng)的Field對象加入該表包含的Field列表。[0038]第三步驟,對SQL語句的自動解析,獲取其輸入輸出參數(shù)信息,并轉(zhuǎn)換為特定數(shù)據(jù)庫及編程語言下的執(zhí)行語句。[0039]首先對字段列表結(jié)合黑名單列表進行替換,然后對整條SQL語句進行語法分析,獲取該SQL語句對應(yīng)的傳入傳出字段及其類型??梢越梃bPostgreSQL數(shù)據(jù)庫的語法規(guī)則描述,采用Lexer和Yacc系的詞法和語法解析工具生成語法樹,對SQL語句進行完備的語法分析??紤]到一般業(yè)務(wù)系統(tǒng)中的SQL語句并不復雜,并且不需要很完整的獲取對應(yīng)SQL的語義信息,因此也可以采用簡化的方法。[0040]在一些示例中,對Select操作的解析流程如下:[00411(1)判斷該SQL語句是否有Where關(guān)鍵字,如果有,對其匹配正則表達式'\s*\(?select\s+(.+?)\s+from\s+(.+?)\s+where\s+(·+)\)?',從而獲取字段列表子句以及Where子句。如果沒有,貝lj匹配以下正則表達式'\s*\(?select\s+(.+?)\s+from\s+(.+)\)?',獲取字段列表子句。[0042](2)對字段列表子句調(diào)用split函數(shù),分隔符為逗號,對每個分割后的元素應(yīng)用正則表達式'(.+)\s+as\s+(.+)',如果無法匹配,說明對應(yīng)字段沒有別名,當前元素即為傳出參數(shù)名,類型為對應(yīng)字段類型。否則,則取別名為傳出參數(shù)名,而參數(shù)類型取決于對應(yīng)的聚集函數(shù),若為SUM,則結(jié)合對應(yīng)字段類型,分別取INT64或者DOUBLE;若為MIN或者MAX,則直接取對應(yīng)字段類型;若為COUNT,則固定為INT64。[0043](3)對Where子句的解析規(guī)則為,在where子句中依次遍歷$n(n為參數(shù)序號)關(guān)鍵字,若找到,則向前回溯,找到的第一個非關(guān)鍵字及非運算符則為對應(yīng)的字段名,當前傳入?yún)?shù)類型取對應(yīng)的字段類型,參數(shù)名前綴為對應(yīng)字段名,后綴為字段當前的復用次數(shù)。[0044]在一些示例中,對Insert操作的解析流程如下:[0045](1)對SQL語句匹配正則表達式'insert\s+into\s+(.+)\s*\((.+)\)\s+values\((.+)\)',獲取字段列表語句以及值列表語句。[0046](2)對字段列表以及值列表語句分別調(diào)用split函數(shù),分隔符為逗號,獲取字段列表以及值列表。[0047](3)搜索值列表,匹配$n(n為參數(shù)序號)關(guān)鍵字,若匹配到,則該傳入?yún)?shù)名和類型均同對應(yīng)的字段列表中的字段。[0048]在一些示例中,對delete操作的解析流程如下:[0049](1)判斷該SQL語句是否有Where關(guān)鍵字,如果有,對其匹配正則表達式'delete\s+from\s+(.+?)\s+where\s+(·+)',獲取對應(yīng)的where子句。[0050](2)對where子句的解析規(guī)則同select操作中描述。[0051]在一些示例中,對update操作的解析流程如下:[0052](1)判斷該SQL語句是否有Where關(guān)鍵字,如果有,對其匹配正則表達式'update\s+(.+)\s+set\s+(.+?)\s+where\s+(·+)',獲取對應(yīng)的賦值子句及where子句,否則應(yīng)用正則表達式,update\s+(.+)\s+set\s+(·+)',獲取賦值子句。[0053](2)在賦值子句中依次遍歷$n(n為參數(shù)序號)關(guān)鍵字,若找到,則向前回溯,排除等號的第一個非關(guān)鍵字則為對應(yīng)的字段名。[0054](3)對where子句的解析規(guī)則同select操作中描述。[0055]在解析出默認操作參數(shù)信息之后,在應(yīng)用自定義的參數(shù)名及類型配置信息,對其進行更新,從而獲得最終的參數(shù)信息。根據(jù)編程語言,api編程模式,數(shù)據(jù)分布模式等配置信息,生成操作對應(yīng)的函數(shù)。對于sql語句中拼寫錯誤(或者命名變化)的字段,將很容易由工具分析出,并提供相應(yīng)的報錯,以提示開發(fā)人員進行修改。[0056]第四步驟,根據(jù)基礎(chǔ)對象的關(guān)聯(lián)關(guān)系及基本信息,生成包含結(jié)構(gòu)定義,結(jié)構(gòu)聲明,全局變量定義,函數(shù)定義,函數(shù)聲明,注釋信息以及編譯信息的源文件。[0057]相關(guān)領(lǐng)域的技術(shù)人員當結(jié)合附圖閱讀前述說明書時,對本發(fā)明的前述示例性實施例的各種修改和變形對于相關(guān)領(lǐng)域的技術(shù)人員會變得明顯。因此,本發(fā)明的實施例不限于所公開的特定實施例,并且變形例和其它實施例意在涵蓋在所附權(quán)利要求的范圍內(nèi)。【主權(quán)項】1.一種生成數(shù)據(jù)庫操作代碼的方法,其特征在于,包括:第一步驟,采用抽象化描述,將數(shù)據(jù)庫信息,表信息以及數(shù)據(jù)庫操作信息在配置文件中配置,第二步驟,利用代碼生成引擎解析所述配置文件,將數(shù)據(jù)庫信息,表信息以及數(shù)據(jù)庫操作信息,轉(zhuǎn)換為具有層次結(jié)構(gòu)及關(guān)聯(lián)的基礎(chǔ)對象,第三步驟,對SQL語句進行解析,獲取其輸入輸出參數(shù)信息,并將該SQL語句轉(zhuǎn)換為特定數(shù)據(jù)庫及編程語言下的執(zhí)行語句,第四步驟,根據(jù)基礎(chǔ)對象的關(guān)聯(lián)關(guān)系,生成源文件。2.如權(quán)利要求1所述的方法,其特征在于,所述配置文件是XML配置文件,該XML配置文件包括用于生成數(shù)據(jù)庫操作代碼的元素。3.如權(quán)利要求1所述的方法,其特征在于,所述源文件包含結(jié)構(gòu)定義,結(jié)構(gòu)聲明,全局變量定義,函數(shù)定義,函數(shù)聲明,注釋信息以及編譯信息。4.如權(quán)利要求2所述的方法,其特征在于,該XML配置文件包括作為根元素的數(shù)據(jù)庫元素,該數(shù)據(jù)庫元素的屬性定義用于調(diào)用數(shù)據(jù)庫的連接API的參數(shù)和編程語言。5.如權(quán)利要求4所述的方法,其特征在于,該XML配置文件包括作為數(shù)據(jù)庫元素的子元素的表元素,該表元素的屬性定義用于調(diào)用表元數(shù)據(jù)獲取API的參數(shù)。6.-種生成數(shù)據(jù)庫操作代碼的裝置,其特征在于,包括:第一單元,采用抽象化描述,將數(shù)據(jù)庫信息,表信息以及數(shù)據(jù)庫操作信息在配置文件中配置,第二單元,利用代碼生成引擎解析所述配置文件,將數(shù)據(jù)庫信息,表信息以及數(shù)據(jù)庫操作信息,轉(zhuǎn)換為具有層次結(jié)構(gòu)及關(guān)聯(lián)的基礎(chǔ)對象,第三單元,對SQL語句進行解析,獲取其輸入輸出參數(shù)信息,并將該SQL語句轉(zhuǎn)換為特定數(shù)據(jù)庫及編程語言下的執(zhí)行語句,第四單元,根據(jù)基礎(chǔ)對象的關(guān)聯(lián)關(guān)系,生成源文件。7.如權(quán)利要求6所述的裝置,其特征在于,所述配置文件是XML配置文件,該XML配置文件包括用于生成數(shù)據(jù)庫操作代碼的元素。8.如權(quán)利要求6所述的裝置,其特征在于,所述源文件包含結(jié)構(gòu)定義,結(jié)構(gòu)聲明,全局變量定義,函數(shù)定義,函數(shù)聲明,注釋信息以及編譯信息。9.如權(quán)利要求7所述的裝置,其特征在于,該XML配置文件包括作為根元素的數(shù)據(jù)庫元素,該數(shù)據(jù)庫元素的屬性定義用于調(diào)用數(shù)據(jù)庫的連接API的參數(shù)和編程語言。10.如權(quán)利要求8所述的裝置,其特征在于,該XML配置文件包括作為數(shù)據(jù)庫元素的子元素的表元素,該表元素的屬性定義用于調(diào)用表元數(shù)據(jù)獲取API的參數(shù)?!疚臋n編號】G06F17/30GK106095792SQ201610370032【公開日】2016年11月9日【申請日】2016年5月27日【發(fā)明人】倪劍龍【申請人】中國銀聯(lián)股份有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1