欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

數(shù)據(jù)庫(kù)兼容方法與流程

文檔序號(hào):11155585閱讀:414來(lái)源:國(guó)知局
數(shù)據(jù)庫(kù)兼容方法與制造工藝

本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,具體而言,涉及一種數(shù)據(jù)庫(kù)兼容方法。



背景技術(shù):

為了滿足不同企業(yè)的要求,在應(yīng)用程序軟件設(shè)計(jì)時(shí)需要兼顧數(shù)據(jù)庫(kù)的兼容性和可移植性。由于不同數(shù)據(jù)庫(kù)中內(nèi)置存儲(chǔ)函數(shù)、系統(tǒng)表和SQL語(yǔ)法等的不同,為了滿足業(yè)務(wù)需求,很多應(yīng)用程序需要開(kāi)發(fā)多套數(shù)據(jù)操縱語(yǔ)言,這使得應(yīng)用程序開(kāi)發(fā)的效率、可維護(hù)性和兼容性降低。

現(xiàn)有技術(shù)中提供的方法支持的數(shù)據(jù)庫(kù)和存儲(chǔ)函數(shù)很少,并且由于各數(shù)據(jù)庫(kù)中均存在內(nèi)置存儲(chǔ)函數(shù),因而現(xiàn)有技術(shù)的解決方案依然不能解決數(shù)據(jù)庫(kù)通用性和兼容性差的問(wèn)題。



技術(shù)實(shí)現(xiàn)要素:

為了克服現(xiàn)有技術(shù)中的上述不足,本發(fā)明目的在于提供一種數(shù)據(jù)庫(kù)兼容方法,其能夠解決現(xiàn)有技術(shù)中需要根據(jù)不同數(shù)據(jù)庫(kù)的不同存儲(chǔ)函數(shù)而開(kāi)發(fā)多套數(shù)據(jù)操縱語(yǔ)言的技術(shù)問(wèn)題,提高了應(yīng)用程序的開(kāi)發(fā)效率和兼容性。

為了實(shí)現(xiàn)上述目的,本發(fā)明較佳實(shí)施例采用的技術(shù)方案如下:

本發(fā)明較佳實(shí)施例提供一種數(shù)據(jù)庫(kù)兼容方法,應(yīng)用于計(jì)算機(jī)設(shè)備。所述計(jì)算機(jī)設(shè)備存儲(chǔ)有數(shù)據(jù)庫(kù)、通用存儲(chǔ)函數(shù)庫(kù)及數(shù)據(jù)庫(kù)類(lèi)型與所述通用存儲(chǔ)函數(shù)庫(kù)部署方式對(duì)應(yīng)關(guān)系。所述方法包括:

接收待兼容的數(shù)據(jù)庫(kù);

判定待兼容的數(shù)據(jù)庫(kù)類(lèi)型,所述數(shù)據(jù)庫(kù)類(lèi)型包括mysql數(shù)據(jù)庫(kù)、oracle數(shù)據(jù)庫(kù)、sqlserver數(shù)據(jù)庫(kù)、postgreSQL數(shù)據(jù)庫(kù)、達(dá)夢(mèng)數(shù)據(jù)庫(kù)、人大金倉(cāng)數(shù)據(jù)庫(kù)、神通數(shù)據(jù)庫(kù)、derby數(shù)據(jù)庫(kù)或者sqlite數(shù)據(jù)庫(kù);

獲得與所述數(shù)據(jù)庫(kù)類(lèi)型對(duì)應(yīng)的部署方式及通用存儲(chǔ)函數(shù)庫(kù);

將所述通用存儲(chǔ)函數(shù)庫(kù)采用與所述數(shù)據(jù)庫(kù)類(lèi)型對(duì)應(yīng)的部署方式部署到所述待兼容的數(shù)據(jù)庫(kù)中。

在本發(fā)明較佳實(shí)施例中,所述方法還包括:

創(chuàng)建所述通用存儲(chǔ)函數(shù)庫(kù);

所述創(chuàng)建所述通用存儲(chǔ)函數(shù)庫(kù)的步驟包括:

獲取需要兼容的多個(gè)樣本數(shù)據(jù)庫(kù),每個(gè)樣本數(shù)據(jù)庫(kù)包括有內(nèi)置存儲(chǔ)函數(shù)集;

基于內(nèi)置存儲(chǔ)函數(shù)集中各內(nèi)置存儲(chǔ)函數(shù)實(shí)現(xiàn)的功能對(duì)所述內(nèi)置存儲(chǔ)函數(shù)進(jìn)行分類(lèi),得到不同類(lèi)別的內(nèi)置存儲(chǔ)函數(shù);

將各樣本數(shù)據(jù)庫(kù)中相同類(lèi)別的內(nèi)置存儲(chǔ)函數(shù)進(jìn)行合并,得到實(shí)現(xiàn)同一功能的內(nèi)置存儲(chǔ)函數(shù)集;

將各個(gè)功能的內(nèi)置存儲(chǔ)函數(shù)集基于一預(yù)設(shè)種類(lèi)數(shù)據(jù)庫(kù)對(duì)應(yīng)的功能實(shí)現(xiàn)規(guī)則進(jìn)行處理,得到通用存儲(chǔ)函數(shù)庫(kù)。

在本發(fā)明較佳實(shí)施例中,所述創(chuàng)建所述通用存儲(chǔ)函數(shù)庫(kù)的步驟還包括:

獲取各個(gè)數(shù)據(jù)庫(kù)對(duì)應(yīng)的內(nèi)置存儲(chǔ)函數(shù);

將各個(gè)數(shù)據(jù)庫(kù)對(duì)應(yīng)的內(nèi)置存儲(chǔ)函數(shù)與所述通用存儲(chǔ)函數(shù)庫(kù)進(jìn)行對(duì)比,查找各個(gè)數(shù)據(jù)庫(kù)中不存在的存儲(chǔ)函數(shù),或者功能、格式與所述通用存儲(chǔ)函數(shù)庫(kù)不同的存儲(chǔ)函數(shù);

響應(yīng)對(duì)查找到的存儲(chǔ)函數(shù)進(jìn)行開(kāi)發(fā)的操作,將開(kāi)發(fā)后的所述存儲(chǔ)函數(shù)添加到所述通用存儲(chǔ)函數(shù)庫(kù)中。

在本發(fā)明較佳實(shí)施例中,所述基于內(nèi)置存儲(chǔ)函數(shù)集中各內(nèi)置存儲(chǔ)函數(shù)實(shí)現(xiàn)的功能對(duì)所述內(nèi)置存儲(chǔ)函數(shù)進(jìn)行分類(lèi),得到不同類(lèi)別的內(nèi)置存儲(chǔ)函數(shù)的步驟中:

所述不同類(lèi)別的函數(shù)包括:數(shù)學(xué)函數(shù)、字符串函數(shù)、日期與時(shí)間函數(shù)、判斷函數(shù)、聚合函數(shù)、加解密函數(shù)或轉(zhuǎn)換函數(shù)中的至少一種及多種的自由組合。

在本發(fā)明較佳實(shí)施例中,所述將各樣本數(shù)據(jù)庫(kù)中相同類(lèi)別的內(nèi)置存儲(chǔ)函數(shù)進(jìn)行合并,得到實(shí)現(xiàn)同一功能的內(nèi)置存儲(chǔ)函數(shù)集的步驟包括:

將各個(gè)數(shù)據(jù)庫(kù)中相同類(lèi)別內(nèi)置存儲(chǔ)函數(shù)的名字、參數(shù)、參數(shù)類(lèi)型和返回值類(lèi)型進(jìn)行整合,得到實(shí)現(xiàn)同一功能的內(nèi)置存儲(chǔ)函數(shù)集。

在本發(fā)明較佳實(shí)施例中,所述將各個(gè)功能的內(nèi)置存儲(chǔ)函數(shù)集基于一預(yù)設(shè)種類(lèi)數(shù)據(jù)庫(kù)對(duì)應(yīng)的功能實(shí)現(xiàn)規(guī)則進(jìn)行處理,得到該預(yù)設(shè)種類(lèi)數(shù)據(jù)庫(kù)的通用存儲(chǔ)函數(shù)庫(kù)的步驟包括:

確定通用存儲(chǔ)函數(shù)庫(kù)的名字;

確定通用存儲(chǔ)函數(shù)庫(kù)的參數(shù)類(lèi)型及返回值類(lèi)型;

根據(jù)所述通用存儲(chǔ)函數(shù)庫(kù)的名字、所述通用存儲(chǔ)函數(shù)庫(kù)的參數(shù)類(lèi)型及返回值類(lèi)型確定所述通用存儲(chǔ)函數(shù)庫(kù)。

在本發(fā)明較佳實(shí)施例中,所述確定通用存儲(chǔ)函數(shù)庫(kù)的名字的方式包括:

根據(jù)各個(gè)數(shù)據(jù)庫(kù)中的內(nèi)置存儲(chǔ)函數(shù)的功能和/或格式確定通用存儲(chǔ)函數(shù)庫(kù)的名字。

在本發(fā)明較佳實(shí)施例中,所述根據(jù)各個(gè)數(shù)據(jù)庫(kù)中的內(nèi)置存儲(chǔ)函數(shù)的功能和/或格式確定通用存儲(chǔ)函數(shù)庫(kù)的名字的步驟包括:

當(dāng)各個(gè)數(shù)據(jù)庫(kù)中同一內(nèi)置存儲(chǔ)函數(shù)的功能與格式相同時(shí),所述通用存儲(chǔ)函數(shù)庫(kù)的名字不變;

當(dāng)一部分?jǐn)?shù)據(jù)庫(kù)中同一內(nèi)置存儲(chǔ)函數(shù)功能與格式相同,另一部分?jǐn)?shù)據(jù)庫(kù)中不存在所述內(nèi)置存儲(chǔ)函數(shù)時(shí),所述通用存儲(chǔ)函數(shù)庫(kù)的名字與所述內(nèi)置存儲(chǔ)函數(shù)的名字相同;

當(dāng)各個(gè)數(shù)據(jù)庫(kù)中存在同一內(nèi)置存儲(chǔ)函數(shù),但是所述內(nèi)置存儲(chǔ)函數(shù)的功能或格式不同時(shí),重新定義所述通用存儲(chǔ)函數(shù)庫(kù)名字;

當(dāng)各個(gè)數(shù)據(jù)庫(kù)中的不同內(nèi)置存儲(chǔ)函數(shù)功能相同時(shí),所述通用存儲(chǔ)函數(shù)庫(kù)名字按照通用格式定義;

當(dāng)各個(gè)數(shù)據(jù)庫(kù)中不存在同一功能的內(nèi)置存儲(chǔ)函數(shù)時(shí),所述通用存儲(chǔ)函數(shù)庫(kù)為數(shù)據(jù)庫(kù)的關(guān)鍵字或保留字之外的任意自定義名字。

在本發(fā)明較佳實(shí)施例中,所述確定通用存儲(chǔ)函數(shù)庫(kù)的參數(shù)類(lèi)型及返回值類(lèi)型的步驟包括:

響應(yīng)基于預(yù)設(shè)數(shù)據(jù)庫(kù)對(duì)通用存儲(chǔ)函數(shù)庫(kù)的參數(shù)類(lèi)型和返回值類(lèi)型進(jìn)行設(shè)計(jì)的操作;

根據(jù)確定的通用存儲(chǔ)函數(shù)庫(kù)的參數(shù)類(lèi)型和返回值類(lèi)型,通過(guò)通用類(lèi)型轉(zhuǎn)換函數(shù)對(duì)未經(jīng)過(guò)設(shè)計(jì)的參數(shù)類(lèi)型和返回值類(lèi)型進(jìn)行轉(zhuǎn)換。

在本發(fā)明較佳實(shí)施例中,所述將所述通用存儲(chǔ)函數(shù)庫(kù)采用與所述數(shù)據(jù)庫(kù)類(lèi)型對(duì)應(yīng)的部署方式部署到所述待兼容的數(shù)據(jù)庫(kù)中的步驟包括:

通過(guò)所述通用存儲(chǔ)函數(shù)庫(kù)的配置文件獲取所述待兼容的數(shù)據(jù)庫(kù)類(lèi)型,執(zhí)行與所述數(shù)據(jù)庫(kù)類(lèi)型對(duì)應(yīng)的腳本將所述通用存儲(chǔ)函數(shù)庫(kù)應(yīng)用到所述數(shù)據(jù)庫(kù)中。其中,所述配置文件包括用于配置連接數(shù)據(jù)庫(kù)所需的數(shù)據(jù)庫(kù)連接參數(shù)信息,所述參數(shù)信息包括url、driverClassName、username以及password;

當(dāng)所述數(shù)據(jù)庫(kù)為mysql數(shù)據(jù)庫(kù)、oracle數(shù)據(jù)庫(kù)、sqlserver數(shù)據(jù)庫(kù)、postgreSQL數(shù)據(jù)庫(kù)、達(dá)夢(mèng)數(shù)據(jù)庫(kù)、人大金倉(cāng)數(shù)據(jù)庫(kù)或神通數(shù)據(jù)庫(kù)時(shí),所述通用存儲(chǔ)函數(shù)庫(kù)以sql腳本的形式執(zhí)行到對(duì)應(yīng)的數(shù)據(jù)庫(kù)中;

當(dāng)所述數(shù)據(jù)庫(kù)類(lèi)型為derby數(shù)據(jù)庫(kù)時(shí),所述通用存儲(chǔ)函數(shù)庫(kù)在所述數(shù)據(jù)庫(kù)中為jar包和sql腳本,則引入所述jar包,并將所述sql腳本執(zhí)行到對(duì)應(yīng)的數(shù)據(jù)庫(kù)中;

當(dāng)所述數(shù)據(jù)庫(kù)類(lèi)型為sqlite數(shù)據(jù)庫(kù)時(shí),所述通用存儲(chǔ)函數(shù)庫(kù)在所述數(shù)據(jù)庫(kù)中為編譯后的庫(kù)文件,通過(guò)引用所述庫(kù)文件執(zhí)行到對(duì)應(yīng)的應(yīng)用程序中。

相對(duì)于現(xiàn)有技術(shù)而言,本發(fā)明具有以下有益效果:

本發(fā)明提供的數(shù)據(jù)庫(kù)兼容方法,通過(guò)對(duì)所述通用存儲(chǔ)函數(shù)庫(kù)的開(kāi)發(fā),只需要完成一套數(shù)據(jù)操縱語(yǔ)言就可以兼容不同的數(shù)據(jù)庫(kù)環(huán)境,提高了應(yīng)用程序的開(kāi)發(fā)效率和兼容性。即使在業(yè)務(wù)邏輯比較復(fù)雜,需要添加新的通用存儲(chǔ)函數(shù)庫(kù)時(shí),只需要在各數(shù)據(jù)庫(kù)中添加所述通用存儲(chǔ)函數(shù)庫(kù)即可,具有良好的擴(kuò)展性。

附圖說(shuō)明

為了更清楚地說(shuō)明本發(fā)明實(shí)施例的技術(shù)方案,下面將對(duì)實(shí)施例中所需要使用的附圖作簡(jiǎn)單地介紹,應(yīng)當(dāng)理解,以下附圖僅示出了本發(fā)明的某些實(shí)施例,因此不應(yīng)被看作是對(duì)范圍的限定,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他相關(guān)的附圖。

圖1為本發(fā)明較佳實(shí)施例提供的計(jì)算機(jī)設(shè)備的結(jié)構(gòu)框圖;

圖2為本發(fā)明較佳實(shí)施例提供的數(shù)據(jù)庫(kù)兼容方法的一種流程示意圖;

圖3為本發(fā)明較佳實(shí)施例提供的數(shù)據(jù)庫(kù)兼容方法的另一種流程示意圖;

圖4為圖3中步驟S209包括的子步驟的一種流程示意圖;

圖5為圖4中子步驟S2094包括的子步驟的流程示意圖;

圖6為圖3中步驟S209包括的子步驟的另一種流程示意圖。

圖標(biāo):100-計(jì)算機(jī)設(shè)備;110-存儲(chǔ)器;120-處理器;130-存儲(chǔ)控制器。

具體實(shí)施方式

下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。通常在此處附圖中描述和示出的本發(fā)明實(shí)施例的組件可以以各種不同的配置來(lái)布置和設(shè)計(jì)。因此,以下對(duì)在附圖中提供的本發(fā)明的實(shí)施例的詳細(xì)描述并非旨在限制要求保護(hù)的本發(fā)明的范圍,而是僅僅表示本發(fā)明的選定實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。

應(yīng)注意到:相似的標(biāo)號(hào)和字母在下面的附圖中表示類(lèi)似項(xiàng),因此,一旦某一項(xiàng)在一個(gè)附圖中被定義,則在隨后的附圖中不需要對(duì)其進(jìn)行進(jìn)一步定義和解釋。同時(shí),在本發(fā)明的描述中,術(shù)語(yǔ)“第一”、“第二”等僅用于區(qū)分描述,而不能理解為指示或暗示相對(duì)重要性。

下面結(jié)合附圖,對(duì)本發(fā)明的一些實(shí)施方式作詳細(xì)說(shuō)明。在不沖突的情況下,下述的實(shí)施例及實(shí)施例中的特征可以相互組合。

請(qǐng)參照?qǐng)D1,圖1是本發(fā)明較佳實(shí)施例提供的計(jì)算機(jī)設(shè)備100的結(jié)構(gòu)框圖。本發(fā)明實(shí)施例中的計(jì)算機(jī)設(shè)備100可以為用于實(shí)現(xiàn)本發(fā)明實(shí)施例的數(shù)據(jù)處理和存儲(chǔ)的任意設(shè)備(例如,個(gè)人電腦(Personal Computer,PC))。

所述計(jì)算機(jī)設(shè)備100包括存儲(chǔ)器110、處理器120及存儲(chǔ)控制器130。其中,所述存儲(chǔ)器110中存儲(chǔ)有數(shù)據(jù)庫(kù)、通用存儲(chǔ)函數(shù)庫(kù)及數(shù)據(jù)庫(kù)類(lèi)型與所述通用存儲(chǔ)函數(shù)庫(kù)部署方式對(duì)應(yīng)關(guān)系。在本實(shí)施例中,所述數(shù)據(jù)庫(kù)類(lèi)型包括,但不限于mysql數(shù)據(jù)庫(kù)、oracle數(shù)據(jù)庫(kù)、sqlserver數(shù)據(jù)庫(kù)、postgreSQL數(shù)據(jù)庫(kù)、達(dá)夢(mèng)數(shù)據(jù)庫(kù)、人大金倉(cāng)數(shù)據(jù)庫(kù)、神通數(shù)據(jù)庫(kù)、derby數(shù)據(jù)庫(kù)或者sqlite數(shù)據(jù)庫(kù)。

所述存儲(chǔ)器110、處理器120及存儲(chǔ)控制器130相互之間直接或間接地電性連接,以實(shí)現(xiàn)數(shù)據(jù)的傳輸或交互。例如,這些元件相互之間可通過(guò)一條或多條通訊總線或信號(hào)線實(shí)現(xiàn)電性連接。

其中,所述存儲(chǔ)器110可以是,但不限于,隨機(jī)存取存儲(chǔ)器(Random Access Memory,RAM),只讀存儲(chǔ)器(Read Only Memory,ROM),可編程只讀存儲(chǔ)器(Programmable Read-Only Memory,PROM),可擦除只讀存儲(chǔ)器(Erasable Programmable Read-Only Memory,EPROM),電可擦除只讀存儲(chǔ)器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。其中,存儲(chǔ)器110用于存儲(chǔ)程序,所述處理器120在接收到執(zhí)行指令后,執(zhí)行所述程序。進(jìn)一步地,上述存儲(chǔ)器110內(nèi)的軟件程序以及模塊還可包括操作系統(tǒng),其可包括各種用于管理系統(tǒng)任務(wù)(例如內(nèi)存管理、存儲(chǔ)設(shè)備控制、電源管理等)的軟件組件和/或驅(qū)動(dòng),并可與各種硬件或軟件組件相互通訊,從而提供其他軟件組件的運(yùn)行環(huán)境。

所述處理器120可能是一種集成電路芯片,具有信號(hào)的處理能力。上述的處理器120可以是通用處理器,包括中央處理器(Central Processing Unit,CPU)、網(wǎng)絡(luò)處理器(Network Processor,NP)等。還可以是數(shù)字信號(hào)處理器(DSP))、專(zhuān)用集成電路(ASIC)、現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)或者其他可編程邏輯器件、分立門(mén)或者晶體管邏輯器件、分立硬件組件??梢詫?shí)現(xiàn)或者執(zhí)行本發(fā)明實(shí)施例中的公開(kāi)的各方法、步驟及邏輯框圖。通用處理器可以是微處理器或者該處理器也可以是任何常規(guī)處理器等。

可以理解,圖1所述的結(jié)構(gòu)僅為示意,所述計(jì)算機(jī)設(shè)備100還可包括比圖1中所示更多或者更少的組件,或者具有與圖1所示不同的配置。圖1中所示的各組件可以采用硬件、軟件或其組合實(shí)現(xiàn)。

請(qǐng)參閱圖2,圖2為本發(fā)明較佳實(shí)施例提供的數(shù)據(jù)庫(kù)兼容方法的流程示意圖。所述方法的具體流程如下:

步驟S210,接收待兼容的數(shù)據(jù)庫(kù)。

所述待兼容的數(shù)據(jù)庫(kù)可以是開(kāi)發(fā)應(yīng)用程序中需要兼容的任意數(shù)據(jù)庫(kù)。在本實(shí)施例的一種實(shí)施方式中,所述待兼容的數(shù)據(jù)庫(kù)中的內(nèi)置存儲(chǔ)函數(shù)未通過(guò)通用存儲(chǔ)函數(shù)庫(kù)兼容。

請(qǐng)參閱圖3,所述數(shù)據(jù)庫(kù)兼容方法還包括:

步驟S209,創(chuàng)建通用存儲(chǔ)函數(shù)庫(kù)。

所述通用存儲(chǔ)函數(shù)庫(kù)用于在不同數(shù)據(jù)庫(kù)中提供功能和格式相同的通用存儲(chǔ)函數(shù)庫(kù)。

具體地,請(qǐng)參閱圖4,所述步驟S209包括子步驟S2091、子步驟S2092、子步驟S2093、子步驟S2094。所述步驟S209包括的子步驟的具體流程如下:

子步驟S2091,獲取需要兼容的多個(gè)樣本數(shù)據(jù)庫(kù),每個(gè)樣本數(shù)據(jù)庫(kù)包括有內(nèi)置存儲(chǔ)函數(shù)集。

在本實(shí)施例中,所述計(jì)算機(jī)設(shè)備100響應(yīng)獲取樣本數(shù)據(jù)庫(kù)的操作指令。所述樣本數(shù)據(jù)庫(kù)可以根據(jù)預(yù)開(kāi)發(fā)的應(yīng)用程序或者其它需要兼容的數(shù)據(jù)庫(kù)進(jìn)行確定,可以包括目前常用的數(shù)據(jù)庫(kù),例如,所述樣本數(shù)據(jù)庫(kù)可以包括mysql數(shù)據(jù)庫(kù)、oracle數(shù)據(jù)庫(kù)、sqlserver數(shù)據(jù)庫(kù)、postgreSQL數(shù)據(jù)庫(kù)、達(dá)夢(mèng)數(shù)據(jù)庫(kù)、人大金倉(cāng)數(shù)據(jù)庫(kù)、神通數(shù)據(jù)庫(kù)、derby數(shù)據(jù)庫(kù)或者sqlite數(shù)據(jù)庫(kù)等。

所述每個(gè)樣本數(shù)據(jù)庫(kù)中都包括有存儲(chǔ)在所述樣本數(shù)據(jù)庫(kù)中供所有用戶(hù)程序調(diào)用的子程序。所述子程序可以執(zhí)行多個(gè)不同的功能,即為本發(fā)明實(shí)施例的內(nèi)置存儲(chǔ)函數(shù)集,所述內(nèi)置存儲(chǔ)函數(shù)集包括有多個(gè)不同功能的內(nèi)置存儲(chǔ)函數(shù)。

子步驟S2092,基于內(nèi)置存儲(chǔ)函數(shù)集中各內(nèi)置存儲(chǔ)函數(shù)實(shí)現(xiàn)的功能對(duì)所述內(nèi)置存儲(chǔ)函數(shù)進(jìn)行分類(lèi),得到不同類(lèi)別的內(nèi)置存儲(chǔ)函數(shù)。

具體地,根據(jù)所述內(nèi)置存儲(chǔ)函數(shù)實(shí)現(xiàn)的功能,可以將所述內(nèi)置存儲(chǔ)函數(shù)集中的各內(nèi)置函數(shù)分為數(shù)學(xué)函數(shù)、字符串函數(shù)、日期與時(shí)間函數(shù)、判斷函數(shù)、聚合函數(shù)、加解密函數(shù)、轉(zhuǎn)換函數(shù)或其它功能函數(shù),從而可以得到不同類(lèi)別的內(nèi)置存儲(chǔ)函數(shù)。

子步驟S2093,將各樣本數(shù)據(jù)庫(kù)中相同類(lèi)別的內(nèi)置存儲(chǔ)函數(shù)進(jìn)行合并,得到實(shí)現(xiàn)同一功能的內(nèi)置存儲(chǔ)函數(shù)集。

在本實(shí)施例中,相同類(lèi)別的內(nèi)置存儲(chǔ)函數(shù)(例如,數(shù)學(xué)函數(shù))由功能不同的一系列函數(shù)組成。通過(guò)對(duì)各個(gè)相同類(lèi)別的內(nèi)置存儲(chǔ)函數(shù)進(jìn)行分析,得到每個(gè)類(lèi)別的內(nèi)置存儲(chǔ)函數(shù)實(shí)現(xiàn)的所有功能,按照功能的不同對(duì)所有數(shù)據(jù)庫(kù)中的內(nèi)置存儲(chǔ)函數(shù)進(jìn)行整理,得到各個(gè)實(shí)現(xiàn)同一功能的內(nèi)置存儲(chǔ)函數(shù)集。其中,整理的內(nèi)容包括內(nèi)置存儲(chǔ)函數(shù)的名字、參數(shù)、參數(shù)類(lèi)型以及返回值類(lèi)型。

子步驟S2094,將各個(gè)功能的內(nèi)置存儲(chǔ)函數(shù)集基于一預(yù)設(shè)種類(lèi)數(shù)據(jù)庫(kù)對(duì)應(yīng)的功能實(shí)現(xiàn)規(guī)則進(jìn)行處理,得到通用存儲(chǔ)函數(shù)庫(kù)。

在本實(shí)施例中,所述預(yù)設(shè)種類(lèi)數(shù)據(jù)庫(kù)可以采用mySQL數(shù)據(jù)庫(kù)。具體地,請(qǐng)參閱圖5,所述子步驟S2094包括子步驟S20941、子步驟S20942以及子步驟S20943。所述子步驟S2094包括的子步驟的具體流程如下:

子步驟S20941,確定通用存儲(chǔ)函數(shù)庫(kù)的名字。

具體地,通用存儲(chǔ)函數(shù)庫(kù)的名字可以根據(jù)各個(gè)數(shù)據(jù)庫(kù)中的內(nèi)置存儲(chǔ)函數(shù)的功能和/或格式來(lái)確定。具體確定方式如下:

當(dāng)各個(gè)數(shù)據(jù)庫(kù)中同一內(nèi)置存儲(chǔ)函數(shù)的功能與格式相同時(shí),所述通用存儲(chǔ)函數(shù)庫(kù)的名字不變。

當(dāng)一部分?jǐn)?shù)據(jù)庫(kù)中同一內(nèi)置存儲(chǔ)函數(shù)功能與格式相同,另一部分?jǐn)?shù)據(jù)庫(kù)中不存在所述內(nèi)置存儲(chǔ)函數(shù)時(shí),所述通用存儲(chǔ)函數(shù)庫(kù)的名字與所述內(nèi)置存儲(chǔ)函數(shù)的名字相同。

當(dāng)各個(gè)數(shù)據(jù)庫(kù)中存在同一內(nèi)置存儲(chǔ)函數(shù),但是所述內(nèi)置存儲(chǔ)函數(shù)的功能或格式不同時(shí),重新定義所述通用存儲(chǔ)函數(shù)庫(kù)名字。重新定義規(guī)則可以為在所述內(nèi)置存儲(chǔ)函數(shù)名字后添加“gfl”,或者其它通用的格式。

當(dāng)各個(gè)數(shù)據(jù)庫(kù)中的不同內(nèi)置存儲(chǔ)函數(shù)功能相同時(shí),所述通用存儲(chǔ)函數(shù)庫(kù)名字按照通用格式定義。定義規(guī)則可以為mySQL中內(nèi)置存儲(chǔ)函數(shù)名字后添加“gfl”,或者其它通用的格式。

當(dāng)各個(gè)數(shù)據(jù)庫(kù)中不存在同一功能的內(nèi)置存儲(chǔ)函數(shù)時(shí),所述通用存儲(chǔ)函數(shù)庫(kù)為數(shù)據(jù)庫(kù)的關(guān)鍵字或保留字之外的任意自定義名字,即所述任意自定義名字中不可以為數(shù)據(jù)庫(kù)的關(guān)鍵字或保留字。

子步驟S20942,確定通用存儲(chǔ)函數(shù)庫(kù)的參數(shù)類(lèi)型及返回值類(lèi)型。

具體地,在本實(shí)施例中,所述計(jì)算機(jī)設(shè)備100相應(yīng)基于所述預(yù)設(shè)數(shù)據(jù)庫(kù)對(duì)通用存儲(chǔ)函數(shù)庫(kù)的參數(shù)類(lèi)型和返回值類(lèi)型進(jìn)行設(shè)計(jì)的操作。所述預(yù)設(shè)數(shù)據(jù)庫(kù)可以采用數(shù)據(jù)類(lèi)型要求嚴(yán)格的數(shù)據(jù)庫(kù),例如,所述預(yù)設(shè)數(shù)據(jù)庫(kù)可以是derby數(shù)據(jù)庫(kù)。根據(jù)所述預(yù)設(shè)數(shù)據(jù)庫(kù)確定的通用存儲(chǔ)函數(shù)庫(kù)的參數(shù)類(lèi)型和返回值類(lèi)型,通過(guò)通用類(lèi)型轉(zhuǎn)換函數(shù)對(duì)未經(jīng)過(guò)設(shè)計(jì)的其它內(nèi)置存儲(chǔ)函數(shù)的參數(shù)類(lèi)型和返回值進(jìn)行轉(zhuǎn)換。

具體地,所述數(shù)據(jù)類(lèi)型轉(zhuǎn)換函數(shù)包括字符串轉(zhuǎn)換成數(shù)字(to_number)函數(shù)、數(shù)字轉(zhuǎn)換成字符串(to_char)函數(shù)、日期轉(zhuǎn)換成時(shí)間戳(date_to_timestamp)函數(shù)、時(shí)間戳轉(zhuǎn)換成日期(timestamp_to_date)函數(shù)、日期轉(zhuǎn)換成字符串(dateformat_gfl)函數(shù)、字符串轉(zhuǎn)換成日期(date_gfl)函數(shù)。

通過(guò)上述設(shè)計(jì),所述通用存儲(chǔ)函數(shù)庫(kù)的參數(shù)類(lèi)型和返回值類(lèi)型可以進(jìn)行確定。

子步驟S20943,根據(jù)所述通用存儲(chǔ)函數(shù)庫(kù)的名字、所述通用存儲(chǔ)函數(shù)庫(kù)的參數(shù)類(lèi)型及返回值類(lèi)型確定所述通用存儲(chǔ)函數(shù)庫(kù)。

通過(guò)對(duì)所述通用存儲(chǔ)函數(shù)庫(kù)的名字的確定以及對(duì)所述通用存儲(chǔ)函數(shù)庫(kù)的參數(shù)類(lèi)型及返回值類(lèi)型的確定可以得到基于一預(yù)設(shè)種類(lèi)數(shù)據(jù)庫(kù)看的通用存儲(chǔ)函數(shù)庫(kù)。

請(qǐng)參閱圖6,所述步驟S209還包括子步驟S2095、子步驟S2096及子步驟S2097。所述子步驟的具體流程如下:

子步驟S2095,獲取各個(gè)數(shù)據(jù)庫(kù)對(duì)應(yīng)的內(nèi)置存儲(chǔ)函數(shù)。

子步驟S2096,將各個(gè)數(shù)據(jù)庫(kù)對(duì)應(yīng)的內(nèi)置存儲(chǔ)函數(shù)與所述通用存儲(chǔ)函數(shù)庫(kù)進(jìn)行對(duì)比,查找各個(gè)數(shù)據(jù)庫(kù)中不存在的存儲(chǔ)函數(shù),或者功能、格式與所述通用存儲(chǔ)函數(shù)庫(kù)不同的存儲(chǔ)函數(shù)。

子步驟S2097,響應(yīng)對(duì)查找到的存儲(chǔ)函數(shù)進(jìn)行開(kāi)發(fā)的操作,將開(kāi)發(fā)后的所述存儲(chǔ)函數(shù)添加到所述通用存儲(chǔ)數(shù)據(jù)庫(kù)中。

在本實(shí)施例中,通過(guò)將各個(gè)數(shù)據(jù)庫(kù)中的內(nèi)置存儲(chǔ)函數(shù)與所述通用存儲(chǔ)函數(shù)庫(kù)進(jìn)行對(duì)比,在查找到各個(gè)數(shù)據(jù)庫(kù)中不存在的存儲(chǔ)函數(shù)時(shí)對(duì)該存儲(chǔ)函數(shù)進(jìn)行開(kāi)發(fā),并添加到該存儲(chǔ)函數(shù)對(duì)應(yīng)數(shù)據(jù)庫(kù)中的對(duì)應(yīng)的功能的內(nèi)置存儲(chǔ)函數(shù)集中,實(shí)現(xiàn)了通用存儲(chǔ)函數(shù)庫(kù)對(duì)各個(gè)數(shù)據(jù)庫(kù)的兼容。

請(qǐng)?jiān)俅螀㈤唸D2,步驟S220,判定待兼容的數(shù)據(jù)庫(kù)類(lèi)型。

具體地,在本實(shí)施例中,所述數(shù)據(jù)庫(kù)類(lèi)型可以是,但不限于mysql數(shù)據(jù)庫(kù)、oracle數(shù)據(jù)庫(kù)、sqlserver數(shù)據(jù)庫(kù)、postgreSQL數(shù)據(jù)庫(kù)、達(dá)夢(mèng)數(shù)據(jù)庫(kù)、人大金倉(cāng)數(shù)據(jù)庫(kù)、神通數(shù)據(jù)庫(kù)、derby數(shù)據(jù)庫(kù)或者sqlite數(shù)據(jù)庫(kù)等。根據(jù)所述通用存儲(chǔ)函數(shù)庫(kù)的配置文件判斷所述待兼容的數(shù)據(jù)庫(kù)環(huán)境。所述配置文件為用于配置所述通用存儲(chǔ)函數(shù)庫(kù)連接所述待兼容的數(shù)據(jù)庫(kù)所需要的參數(shù)信息,具體地,所述參數(shù)信息可以是java數(shù)據(jù)庫(kù)連接參數(shù)信息。其中,所述參數(shù)信息包括url、driverClassName、username以及password。

所述url指定擬連接的待兼容的數(shù)據(jù)庫(kù)的ip地址、端口、數(shù)據(jù)庫(kù)實(shí)例名稱(chēng)等信息。

所述DriverClassName為待兼容數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序的名字。

所述username和password分別為待兼容數(shù)據(jù)庫(kù)用戶(hù)及該用戶(hù)對(duì)應(yīng)的密碼。

步驟S230,獲取與所述數(shù)據(jù)庫(kù)類(lèi)型對(duì)應(yīng)的部署方式及通用存儲(chǔ)函數(shù)庫(kù)。

具體地,由于通用存儲(chǔ)函數(shù)庫(kù)在不同種類(lèi)的數(shù)據(jù)庫(kù)中各不相同,在將所述通用存儲(chǔ)函數(shù)庫(kù)部署到數(shù)據(jù)庫(kù)時(shí)即有不同的部署方式,本實(shí)施例通過(guò)所述計(jì)算機(jī)設(shè)備100的存儲(chǔ)器110中存儲(chǔ)的上述通用存儲(chǔ)函數(shù)庫(kù)以及數(shù)據(jù)庫(kù)類(lèi)型與所述通用存儲(chǔ)函數(shù)庫(kù)部署方式對(duì)應(yīng)關(guān)系,獲取到所述待兼容的數(shù)據(jù)庫(kù)類(lèi)型對(duì)應(yīng)的部署方式。

步驟S240,將所述通用存儲(chǔ)函數(shù)庫(kù)采用與所述數(shù)據(jù)庫(kù)類(lèi)型對(duì)應(yīng)的部署方式部署到所述待兼容的數(shù)據(jù)庫(kù)中。

具體地,當(dāng)所述待兼容的數(shù)據(jù)庫(kù)為mysql數(shù)據(jù)庫(kù)、oracle數(shù)據(jù)庫(kù)、sqlserver數(shù)據(jù)庫(kù)、postgreSQL數(shù)據(jù)庫(kù)、達(dá)夢(mèng)數(shù)據(jù)庫(kù)、人大金倉(cāng)數(shù)據(jù)庫(kù)或神通數(shù)據(jù)庫(kù)時(shí),所述通用存儲(chǔ)函數(shù)庫(kù)以sql腳本的形式執(zhí)行到對(duì)應(yīng)的數(shù)據(jù)庫(kù)中;

當(dāng)所述待兼容的數(shù)據(jù)庫(kù)類(lèi)型為derby數(shù)據(jù)庫(kù)時(shí),所述通用存儲(chǔ)函數(shù)庫(kù)在所述數(shù)據(jù)庫(kù)中為jar包和sql腳本,則引入所述jar包,并將所述sql腳本執(zhí)行到對(duì)應(yīng)的數(shù)據(jù)庫(kù)中;

當(dāng)所述待兼容的數(shù)據(jù)庫(kù)類(lèi)型為sqlite數(shù)據(jù)庫(kù)時(shí),所述通用存儲(chǔ)函數(shù)庫(kù)在所述數(shù)據(jù)庫(kù)中為編譯后的庫(kù)文件,通過(guò)引用所述庫(kù)文件執(zhí)行到對(duì)應(yīng)的應(yīng)用程序中。

綜上所述,本發(fā)明提供的數(shù)據(jù)庫(kù)兼容方法,通過(guò)對(duì)所述通用存儲(chǔ)函數(shù)庫(kù)的開(kāi)發(fā),只需要完成一套數(shù)據(jù)操縱語(yǔ)言就可以兼容不同的數(shù)據(jù)庫(kù)環(huán)境,提高了應(yīng)用程序的開(kāi)發(fā)效率和兼容性。即使在業(yè)務(wù)邏輯比較復(fù)雜,需要添加新的通用存儲(chǔ)函數(shù)庫(kù)時(shí),只需要在各數(shù)據(jù)庫(kù)中添加所述通用存儲(chǔ)函數(shù)庫(kù)即可,具有良好的擴(kuò)展性。

在本發(fā)明實(shí)施例所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的方法,也可以通過(guò)其它的方式實(shí)現(xiàn)。以上所描述的方法實(shí)施例僅僅是示意性的,例如,附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個(gè)實(shí)施例的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品的可能實(shí)現(xiàn)的體系架構(gòu)、功能和操作。在這點(diǎn)上,流程圖或框圖中的每個(gè)方框可以代表一個(gè)模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個(gè)或多個(gè)用于實(shí)現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實(shí)現(xiàn)方式中,方框中所標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個(gè)連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時(shí)也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個(gè)方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或動(dòng)作的專(zhuān)用的基于硬件的系統(tǒng)來(lái)實(shí)現(xiàn),或者可以用專(zhuān)用硬件與計(jì)算機(jī)指令的組合來(lái)實(shí)現(xiàn)。

另外,在本發(fā)明各個(gè)實(shí)施例中的各功能模塊可以集成在一起形成一個(gè)獨(dú)立的部分,也可以是各個(gè)模塊單獨(dú)存在,也可以?xún)蓚€(gè)或兩個(gè)以上模塊集成形成一個(gè)獨(dú)立的部分。

所述功能如果以軟件功能模塊的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷(xiāo)售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算設(shè)備(可以是個(gè)人計(jì)算機(jī),電子設(shè)備,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。

需要說(shuō)明的是,在本文中,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、物品或者設(shè)備所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過(guò)程、方法、物品或者設(shè)備中還存在另外的相同要素。

以上所述,僅為本發(fā)明的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)所述以權(quán)利要求的保護(hù)范圍為準(zhǔn)。

對(duì)于本領(lǐng)域技術(shù)人員而言,顯然本發(fā)明不限于上述示范性實(shí)施例的細(xì)節(jié),而且在不背離本發(fā)明的精神或基本特征的情況下,能夠以其他的具體形式實(shí)現(xiàn)本發(fā)明。因此,無(wú)論從哪一點(diǎn)來(lái)看,均應(yīng)將實(shí)施例看作是示范性的,而且是非限制性的,本發(fā)明的范圍由所附權(quán)利要求而不是上述說(shuō)明限定,因此旨在將落在權(quán)利要求的等同要件的含義和范圍內(nèi)的所有變化囊括在本發(fā)明內(nèi)。不應(yīng)將權(quán)利要求中的任何附圖標(biāo)記視為限制所涉及的權(quán)利要求。

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
读书| 弥渡县| 攀枝花市| 苍南县| 秦皇岛市| 莆田市| 微博| 彭泽县| 丁青县| 巴林右旗| 会东县| 明水县| 石首市| 镇原县| 伊通| 梨树县| 武邑县| 革吉县| 安岳县| 屏南县| 浑源县| 温州市| 大兴区| 五华县| 盐津县| 甘孜| 山东| 兴国县| 滦南县| 南通市| 大竹县| 南投市| 巩留县| 腾冲县| 富裕县| 西林县| 禄劝| 明溪县| 临汾市| 恩施市| 南阳市|