本發(fā)明涉及數(shù)據(jù)庫
技術(shù)領(lǐng)域:
:,尤其涉及的是一種數(shù)據(jù)庫的升級方法及其系統(tǒng)。
背景技術(shù):
::現(xiàn)有技術(shù)中,進(jìn)行數(shù)據(jù)庫升級時(shí),當(dāng)有新表添加、舊表中字段更新等需求時(shí),只能通過修改原代碼數(shù)據(jù)庫,重新編譯最后更新apk來實(shí)現(xiàn),因此不僅過程復(fù)雜,工作量大,而且制作過程長,不利于應(yīng)用及軟件平臺的長期開發(fā)。因此,現(xiàn)有技術(shù)有待于進(jìn)一步的改進(jìn)。技術(shù)實(shí)現(xiàn)要素:鑒于上述現(xiàn)有技術(shù)中的不足之處,本發(fā)明的目的在于為用戶提供一種數(shù)據(jù)庫的升級方法及系統(tǒng),克服現(xiàn)有技術(shù)中數(shù)據(jù)庫的升級時(shí),操作過程復(fù)雜、工作量大,而且效率低的缺陷。本發(fā)明解決技術(shù)問題所采用的技術(shù)方案如下:一種數(shù)據(jù)庫的升級方法,其中,所述方法應(yīng)用在Android系統(tǒng)的OSGI框架,其包括以下步驟:步驟A、從云端獲取數(shù)據(jù)bundle文件的配置文件版本號;步驟B、判斷本地?cái)?shù)據(jù)庫中數(shù)據(jù)bundle文件的配置文件版本號是否低于云端配置文件的版本號,若是,則執(zhí)行步驟C,否則結(jié)束本次操作;步驟C、從云端下載數(shù)據(jù)bundle文件及其配置文件,并從云端下載的配置文件中解析出數(shù)據(jù)更新信息;步驟D、根據(jù)下載的數(shù)據(jù)bundle文件和所述數(shù)據(jù)更新信息對本地?cái)?shù)據(jù)庫進(jìn)行升級。所述的數(shù)據(jù)庫的升級方法,其中,所述步驟A之前還包括:步驟A01、將應(yīng)用按照邏輯劃分為數(shù)據(jù)類和業(yè)務(wù)類,并分別將數(shù)據(jù)類對應(yīng)的java文件和業(yè)務(wù)類對應(yīng)的java文件編譯成數(shù)據(jù)bundle文件和業(yè)務(wù)bundle文件;步驟A02、數(shù)據(jù)bundle文件和業(yè)務(wù)bundle文件在OSGI框架中獲取BundleContext,并通過調(diào)用BundleContext安裝指令對數(shù)據(jù)bundle文件和業(yè)務(wù)bundle文件進(jìn)行安裝;步驟A03、獲取已安裝的數(shù)據(jù)bundle文件和業(yè)務(wù)bundle文件信息,同時(shí)啟動(dòng)后的數(shù)據(jù)bundle文件根據(jù)數(shù)據(jù)bundle應(yīng)用包名、數(shù)據(jù)bundle文件安裝返回的bundleID建立本地?cái)?shù)據(jù)庫。所述的數(shù)據(jù)庫的升級方法,其中,所述步驟D還包括:D1、卸載本地?cái)?shù)據(jù)庫中與從云端下載的數(shù)據(jù)bundle文件名稱相同的bundle文件,安裝云端下載的數(shù)據(jù)bundle文件并啟動(dòng)。所述的數(shù)據(jù)庫的升級方法,其中,所述步驟D1中數(shù)據(jù)bundle文件的啟動(dòng)包括步驟:步驟D11、判斷數(shù)據(jù)更新信息所對應(yīng)的操作是否包括添加表或/和更新表字段,若包括添加表,則執(zhí)行步驟D12,若包括更新表字段,則執(zhí)行步驟D13;步驟D12、獲取數(shù)據(jù)更新信息中添加表的表名,根據(jù)所述表名獲取表字段名,并根據(jù)表字段名和表名創(chuàng)建表;步驟D13、獲取更新數(shù)據(jù)信息中增加表字段的表名,根據(jù)所述表名獲取更新的字段名,并根據(jù)所述表名更新表中的字段;步驟D14、執(zhí)行本地?cái)?shù)據(jù)庫升級操作,并更新本地?cái)?shù)據(jù)庫版本號。所述的數(shù)據(jù)庫的升級方法,其中,所述步驟A03包括步驟:步驟A031、業(yè)務(wù)bundle向數(shù)據(jù)bundle輸入預(yù)設(shè)參數(shù),啟動(dòng)數(shù)據(jù)bundle文件執(zhí)行所述數(shù)據(jù)bundle文件所對應(yīng)模塊的功能。一種數(shù)據(jù)庫的升級系統(tǒng),其中,包括:云端數(shù)據(jù)獲取模塊,用于從云端獲取數(shù)據(jù)bundle文件的配置文件版本號;;版本判斷模塊,用于、判斷本地?cái)?shù)據(jù)庫中數(shù)據(jù)bundle文件的配置文件版本號是否低于云端配置文件版本號;配置解析模塊,用于當(dāng)本地?cái)?shù)據(jù)庫中數(shù)據(jù)bundle文件的配置文件版本號低于云端數(shù)據(jù)bundle文件的配置文件版本號時(shí),從云端下載數(shù)據(jù)bundle文件及其配置文件,并從云端下載的配置文件中解析出數(shù)據(jù)更新信息;數(shù)據(jù)庫升級模塊,用于根據(jù)下載的數(shù)據(jù)bundle文件和所述數(shù)據(jù)更新信息對本地?cái)?shù)據(jù)庫進(jìn)行升級。所述的數(shù)據(jù)庫的升級系統(tǒng),其中,所述系統(tǒng)還包括:應(yīng)用劃分模塊,用于將應(yīng)用按照邏輯劃分為數(shù)據(jù)類和業(yè)務(wù)類,并分別將數(shù)據(jù)類對應(yīng)的java文件和業(yè)務(wù)類對應(yīng)的java文件編譯成數(shù)據(jù)bundle文件和業(yè)務(wù)bundle文件;安裝文件模塊,用于數(shù)據(jù)bundle文件和業(yè)務(wù)bundle文件在OSGI框架中獲取BundleContext,并通過調(diào)用BundleContext安裝指令對數(shù)據(jù)bundle文件和業(yè)務(wù)bundle文件進(jìn)行安裝;建立數(shù)據(jù)庫模塊,用于獲取已安裝的數(shù)據(jù)bundle文件和業(yè)務(wù)bundle文件信息,同時(shí)啟動(dòng)后的數(shù)據(jù)bundle文件根據(jù)數(shù)據(jù)bundle應(yīng)用包名、數(shù)據(jù)bundle文件安裝返回的bundleID建立本地?cái)?shù)據(jù)庫。所述的數(shù)據(jù)庫的升級系統(tǒng),其中,所述數(shù)據(jù)庫升級模塊還用于:卸載本地?cái)?shù)據(jù)庫中與從云端下載的數(shù)據(jù)bundle文件名稱相同的bundle文件,安裝云端下載的數(shù)據(jù)bundle文件并啟動(dòng)。所述的數(shù)據(jù)庫的升級系統(tǒng),其中,所述數(shù)據(jù)庫升級模塊包括:判斷動(dòng)作單元,用于判斷數(shù)據(jù)更新信息所對應(yīng)的操作是否包括添加表或/和更新表字段;表創(chuàng)建單元,用于獲取數(shù)據(jù)更新信息中添加表的表名,根據(jù)所述表名獲取表字段名,并根據(jù)表字段名和表名創(chuàng)建表;更新表字段單元,用于獲取更新數(shù)據(jù)信息中增加表字段的表名,根據(jù)所述表名獲取更新的字段名,并根據(jù)所述表名更新表中的字段;更新數(shù)據(jù)庫單元,用于執(zhí)行本地?cái)?shù)據(jù)庫升級操作,并更新本地?cái)?shù)據(jù)庫版本號。所述的數(shù)據(jù)庫的升級系統(tǒng),其中,安裝文件模塊包括:數(shù)據(jù)bundle啟動(dòng)單元,用于業(yè)務(wù)bundle向數(shù)據(jù)bundle輸入預(yù)設(shè)參數(shù),啟動(dòng)數(shù)據(jù)bundle文件執(zhí)行所述數(shù)據(jù)bundle文件所對應(yīng)模塊的功能。有益效果,本發(fā)明提供了一種數(shù)據(jù)庫的升級方法及其系統(tǒng),通過從云端獲取數(shù)據(jù)bundle文件的配置文件版本號,判斷本地?cái)?shù)據(jù)庫中數(shù)據(jù)bundle文件的配置文件版本號是否低于云端配置文件的版本號,若是,則從云端下載數(shù)據(jù)bundle文件及其配置文件,并從云端下載的配置文件中解析出數(shù)據(jù)更新信息,根據(jù)下載的數(shù)據(jù)bundle文件和所述數(shù)據(jù)更新信息對本地?cái)?shù)據(jù)庫進(jìn)行升級。本發(fā)明所提供方法和系統(tǒng),由于將應(yīng)用分成數(shù)據(jù)部分與業(yè)務(wù)部分,降低兩者耦合性,因此可實(shí)現(xiàn)在不影響業(yè)務(wù)的情況下,實(shí)現(xiàn)數(shù)據(jù)庫的升級與更新,為人員的工作帶來便利。附圖說明圖1是本發(fā)明所提供的數(shù)據(jù)庫的升級方法的步驟流程圖。圖2是本發(fā)明所述方法具體實(shí)施例中本地?cái)?shù)據(jù)庫構(gòu)建原理示意圖。圖3是本發(fā)明的所述方法的具體實(shí)施例的步驟流程圖。圖4是本發(fā)明所提供的數(shù)據(jù)庫的升級系統(tǒng)的原理結(jié)構(gòu)示意圖。具體實(shí)施方式為使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚、明確,以下參照附圖并舉實(shí)施例對本發(fā)明進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用于解釋本發(fā)明,并不用于限定本發(fā)明。OSGI(OpenServiceGatewayInitiative)技術(shù)是Java動(dòng)態(tài)化模塊化系統(tǒng)的一系列規(guī)范。OSGI一方面指維護(hù)OSGI規(guī)范的OSGI官方聯(lián)盟,另一方面指的是該組織維護(hù)的基于Java語言的服務(wù)(業(yè)務(wù))規(guī)范。簡單來說,OSGi可以認(rèn)為是Java平臺的模塊層。OSGI服務(wù)平臺向Java提供服務(wù),這些服務(wù)使Java成為軟件集成和軟件開發(fā)的首選環(huán)境。Java提供在多個(gè)平臺支持產(chǎn)品的可移植性。OSGI技術(shù)提供允許應(yīng)用程序使用精煉、可重用和可協(xié)作的組件構(gòu)建的標(biāo)準(zhǔn)化原語。這些組件能夠組裝進(jìn)一個(gè)應(yīng)用和部署中。OSGI服務(wù)平臺由兩部分組成:OSGI框架和OSGI標(biāo)準(zhǔn)服務(wù)。OSGI框架是實(shí)現(xiàn)并提供OSGI功能的運(yùn)行環(huán)境,OSGI標(biāo)準(zhǔn)服務(wù)定義了很多用于執(zhí)行常見任務(wù)的可重用API。OSGI框架和標(biāo)準(zhǔn)服務(wù)的規(guī)范由OSGI聯(lián)盟管理。bundle是OSGi中的模塊模型。標(biāo)準(zhǔn)Java平臺的jar包中包含有class文件以及相應(yīng)的資源文件,bundle可以簡單地理解為是增加了元數(shù)據(jù)的jar包。一個(gè)bundle中包含了java類和一些其他的數(shù)據(jù)資源,這些數(shù)據(jù)可以是HTML文件、幫助文檔以及圖標(biāo)等。從用戶層可以把bundle理解為一個(gè)功能模塊。bundle可以從項(xiàng)目中導(dǎo)入導(dǎo)出,并且能夠與項(xiàng)目中的其他bundle共享jar文件。bundle為OSGi框架提供服務(wù),是OSGi服務(wù)框架中唯一需要部署的實(shí)體。bundle一旦開始運(yùn)行,就會通過OSGi框架向框架中其他bundle提供功能和服務(wù)。便于描述,本發(fā)明中將bundle定義為:一個(gè)模塊化的物理單元,以jar文件形式包含代碼、資源和元數(shù)據(jù),其中jar文件的邊界也作為執(zhí)行時(shí)邏輯模塊化的封裝邊界。由于現(xiàn)有技術(shù)中對數(shù)據(jù)庫進(jìn)行升級時(shí),需要通過修改原代碼數(shù)據(jù)庫,重新編譯最后更新apk來實(shí)現(xiàn),因此不僅過程復(fù)雜,工作量大,本發(fā)明采用的方法為將應(yīng)用分成數(shù)據(jù)bundle文件和業(yè)務(wù)bundle文件,通過業(yè)務(wù)bundle文件啟動(dòng)數(shù)據(jù)bundle文件從云端獲取升級版的配置文件,從而實(shí)現(xiàn)對數(shù)據(jù)庫的升級。本發(fā)明提供的一種數(shù)據(jù)庫的升級方法,如圖1所述,所述方法應(yīng)用在Android系統(tǒng)的OSGI框架,其包括以下步驟:步驟S1、從云端獲取數(shù)據(jù)bundle文件的配置文件版本號。系統(tǒng)在開始數(shù)據(jù)庫升級時(shí),通過啟動(dòng)數(shù)據(jù)bundle文件,從云端獲取存儲在云端數(shù)據(jù)庫中的數(shù)據(jù)bundle文件的配置文件版本號,通過獲取到的版本號與本地?cái)?shù)據(jù)庫中數(shù)據(jù)bundle文件的配置文件版本號的比較來判斷是否進(jìn)行升級操作。具體的,為了實(shí)現(xiàn)減少本地?cái)?shù)據(jù)庫中數(shù)據(jù)部分與業(yè)務(wù)部分的耦合性,在本步驟之前通過以下步驟建立本地?cái)?shù)據(jù)庫,結(jié)合圖2所述,其包括:步驟S01、將應(yīng)用按照邏輯劃分為數(shù)據(jù)類和業(yè)務(wù)類,并分別將數(shù)據(jù)類對應(yīng)的java文件和業(yè)務(wù)類對應(yīng)的java文件編譯成數(shù)據(jù)bundle文件和業(yè)務(wù)bundle文件。首先將應(yīng)用按照邏輯劃分為數(shù)據(jù)部分和業(yè)務(wù)部分,分別對這兩個(gè)部分所對應(yīng)的java文件進(jìn)行編譯,得到數(shù)據(jù)部分對應(yīng)的數(shù)據(jù)bundle文件和業(yè)務(wù)bundle文件。步驟S02、數(shù)據(jù)bundle文件和業(yè)務(wù)bundle文件在OSGI框架中獲取BundleContext,并通過調(diào)用BundleContext的安裝指令對數(shù)據(jù)bundle文件和業(yè)務(wù)bundle文件進(jìn)行安裝,所述BundleContext的安裝指令通過函數(shù)BundleContext.install()實(shí)現(xiàn)。步驟S03、獲取已安裝的數(shù)據(jù)bundle文件和業(yè)務(wù)bundle文件信息,同時(shí)啟動(dòng)后的數(shù)據(jù)bundle文件根據(jù)數(shù)據(jù)bundle應(yīng)用包名、數(shù)據(jù)bundle文件安裝返回的bundleID建立本地?cái)?shù)據(jù)庫。由于建立的本地是數(shù)據(jù)庫是將應(yīng)用分成數(shù)據(jù)部分和業(yè)務(wù)部分,且通過bundle來相互調(diào)用,因此可以根據(jù)獲取的數(shù)據(jù)bundle文件的更新信息,對數(shù)據(jù)庫進(jìn)行升級,避免了需要重新修改代碼和重新編譯最后更新apk的方法來升級數(shù)據(jù)庫。步驟S2、判斷本地?cái)?shù)據(jù)庫中數(shù)據(jù)bundle文件的配置文件版本號是否低于云端配置文件的版本號,若是,則執(zhí)行步驟S3,否則結(jié)束本次操作。將從云端獲取的配置文件版本號與本地配置文件的版本號進(jìn)行比較,若本地配置文件的版本號低于云端,則判定本地?cái)?shù)據(jù)庫中的數(shù)據(jù)bundle文件非最新版本,則需要對其進(jìn)行進(jìn)一步的升級操作。若版本號相同,本次升級操作結(jié)束。步驟S3、從云端下載數(shù)據(jù)bundle文件及其配置文件,并從云端下載的配置文件中解析出數(shù)據(jù)更新信息。若需要升級操作,則從云端下載最新版本的數(shù)據(jù)bundle文件和其配置文件,從其配置文件中解析出本次新版本的數(shù)據(jù)bundle文件中更新的部分為增加了表還是對舊表中表字段的更新。步驟S4、根據(jù)下載的數(shù)據(jù)bundle文件和所述數(shù)據(jù)更新信息對本地?cái)?shù)據(jù)庫進(jìn)行升級。根據(jù)下載的數(shù)據(jù)bundle文件和配置文件中解析出的數(shù)據(jù)更新信息對數(shù)據(jù)庫進(jìn)行升級操作。具體的,所述步驟S4還包括:S41、卸載本地?cái)?shù)據(jù)庫中與從云端下載的數(shù)據(jù)bundle文件名稱相同的bundle文件,安裝云端下載的數(shù)據(jù)bundle文件并啟動(dòng)。由于下載到了最新版本,因此可以想到的是,將舊版本刪除,并對最新版本進(jìn)行安裝操作。為了實(shí)現(xiàn)對數(shù)據(jù)更新信息的快速獲取和根據(jù)獲取的信息進(jìn)行數(shù)據(jù)庫升級,在所述步驟S41中數(shù)據(jù)bundle文件的啟動(dòng)包括步驟:步驟S411、判斷數(shù)據(jù)更新信息所對應(yīng)的操作是否包括添加表或/和更新表字段,若包括添加表,則執(zhí)行步驟S412,若包括更新表字段,則執(zhí)行步驟S413;步驟S412、獲取數(shù)據(jù)更新信息中添加表的表名,根據(jù)所述表名獲取表字段名,并根據(jù)表字段名和表名創(chuàng)建表;步驟S413、獲取更新數(shù)據(jù)信息中增加表字段的表名,根據(jù)所述表名獲取更新的字段名,并根據(jù)所述表名更新表中的字段;步驟S414、執(zhí)行本地?cái)?shù)據(jù)庫升級操作,并更新本地?cái)?shù)據(jù)庫版本號。具體的,業(yè)務(wù)bundle文件與數(shù)據(jù)bundle文件之間互相調(diào)用的協(xié)議如下:數(shù)據(jù)bundle文件提供增、刪、改、查四個(gè)接口供業(yè)務(wù)bundle文件訪問數(shù)據(jù)庫中數(shù)據(jù),其中業(yè)務(wù)bundle向數(shù)據(jù)bundle輸入預(yù)設(shè)參數(shù),啟動(dòng)數(shù)據(jù)bundle以執(zhí)行該bundle模塊對應(yīng)的功能。數(shù)據(jù)bundle文件啟動(dòng)后,根據(jù)表名以及表結(jié)構(gòu)建立數(shù)據(jù)庫。在這里,接口協(xié)議中包括輸入部分和輸出部分。其中,輸入部分定義了業(yè)務(wù)bundle要向數(shù)據(jù)bundle模塊輸入的參數(shù),如輸入?yún)?shù)uri、查詢條件、查詢結(jié)果數(shù)據(jù)排序方式等。輸出部分定義了數(shù)據(jù)bundle向業(yè)務(wù)部分返回的結(jié)果。增加數(shù)據(jù)接口可如下定義:booleaninsert(Uriuri,ContentValuesvalues)該方法用于供業(yè)務(wù)部分往數(shù)據(jù)庫添加數(shù)據(jù)。如果成功,返回true,否則,返回false.uri參數(shù)是Uri.parse("content://"+AUTHORITY+"/items")格式,AUTHORITY與items可從數(shù)據(jù)bundle配置文件中獲取。Values是需要增加的數(shù)據(jù)。刪除數(shù)據(jù)接口可如下定義:Booleandelete(Uriuri,Stringselection,String[]selectionArgs)該方法用于供業(yè)務(wù)部分從數(shù)據(jù)庫中刪除數(shù)據(jù)。如果成功,返回true,否則,返回false.uri參數(shù)是Uri.parse("content://"+AUTHORITY+"/items")格式,AUTHORITY與items可從數(shù)據(jù)bundle配置文件中獲取。selection和selectionArgs參數(shù)是設(shè)置條件。更新數(shù)據(jù)接口可如下定義:booleanupdate(Uriuri,ContentValuesvalues,Stringselection,String[]selectionArgs)該方法用于供業(yè)務(wù)部分更新數(shù)據(jù)庫中的數(shù)據(jù)。如果成功,返回true,否則,返回false.uri參數(shù)是Uri.parse("content://"+AUTHORITY+"/items")格式,AUTHORITY與items可從數(shù)據(jù)bundle配置文件中獲取。Values是需要更新的數(shù)據(jù)。selection和selectionArgs參數(shù)是設(shè)置條件。查詢數(shù)據(jù)接口可如下定義:Cursorquery(Uriuri,String[]projection,Stringselection,String[]selectionArgs,StringsortOrder)該方法用于供業(yè)務(wù)部分從數(shù)據(jù)庫中獲取數(shù)據(jù)。如果成功,返回待查詢的數(shù)據(jù),否則,返回空。uri參數(shù)是Uri.parse("content://"+AUTHORITY+"/items")格式,AUTHORITY與items可從數(shù)據(jù)bundle配置文件中獲取。selection參數(shù)是設(shè)置條件。projection參數(shù)是通過數(shù)據(jù)庫查詢的數(shù)控要返回的列。selection和selectionArgs參數(shù)是設(shè)置條件。sortOrder參數(shù)是返回結(jié)果排序的方式。在嵌入OSGI框架的Android系統(tǒng)中啟動(dòng)應(yīng)用步驟如下:1.通過GetFrameworkService服務(wù)的代理GetFrameworkServiceProxy,獲取到OSGI框架實(shí)例。如getFrameworkInstance()方法。2.通過調(diào)用Framework.getBundleContext()方法獲取BundleContext。3.通過調(diào)用BundleContext.install(Stringlocation)方法安裝bundle文件,直至所有bundle文件安裝完畢。其中參數(shù)location是該bundle文件存放路徑。當(dāng)安裝成功后,會返回已安裝的Bundle的BundleID(BundleIdentifier)。BundleID是運(yùn)行期最常用的標(biāo)識符。它是由OSGI框架自動(dòng)分配的一個(gè)長整型數(shù)字,在Bundle整個(gè)生命周期內(nèi)(包括Bundle更新、卸載之后)都不會改變,甚至在OSGI框架重啟后都能保留下來。BundleID是在Bundle安裝過程中由OSGI框架根據(jù)Bundle安裝時(shí)間的先后次序,由小到大進(jìn)行分配的??梢酝ㄟ^Bundle接口的getBundleId()方法來獲取當(dāng)前Bundle的ID。4通過調(diào)用安裝成功返回的Bundle的getBundleId()方法來獲取當(dāng)前Bundle的ID。并通過調(diào)用Bundle的getSymbolicName()方法和getVersion()分別獲取到該bundle的符號名稱和版本號5.建立數(shù)據(jù)庫存儲每一個(gè)bundleID、bundle文件包名、bunlde的符號名稱版本號、Import-Package和Export-Package屬性。6.通過BundleContext.start()方法啟動(dòng)bundle文件。7.至此,應(yīng)用啟動(dòng)起來,會獲取本地配置文件版本號,以及從云端獲取云端配置文件版本號,并比較兩者,如果本地配置文件版本號不低于云端獲取的配置文件版本號,則應(yīng)用正常進(jìn)行,否則,執(zhí)行更新模塊功能。經(jīng)過上述的設(shè)置之后,如圖3所示,在具體實(shí)施數(shù)據(jù)庫的升級操作時(shí),包括以下步驟:步驟H1、獲取云端配置文件,具體的所述數(shù)據(jù)bundle文件的配置文件格式如下:數(shù)據(jù)bundle配置文件:配置文件版本號:動(dòng)作action:增加新表add_newTableName:新表1:表字段1,表字段2,….,表字段n,新表2:表字段1,表字段2,….,表字段n,…新表n:表字段1,表字段2,….,表字段n,增加表字段add_tableName_newSeg:舊表1:表字段1,表字段2,….,表字段n,舊表2:表字段1,表字段2,….,表字段n,…舊表n:表字段1,表字段2,….,表字段n,步驟H2、判斷本地配置文件版本號是否低于云端配置文件版本號,如果是,則執(zhí)行步驟H3,否則結(jié)束;步驟H3、更新本地配置文件版本號;步驟H4、根據(jù)配置文件中的url地址,下載新的數(shù)據(jù)bundle文件;步驟H5、解析配置文件;步驟H6、判斷動(dòng)作為增加表還是增加表字段,如果配置文件中的動(dòng)作是增加表:add_newTableName,則執(zhí)行步驟H7,如果配置文件中的動(dòng)作是增加表字段:add_tableName_newSeg,則執(zhí)行步驟12,否則結(jié)束;步驟H7、從配置文件中獲取增加的表名;步驟H8、從配置文件中根據(jù)增加的表名,獲取該表字段名;步驟H9、根據(jù)表字段名和表名創(chuàng)建該表;步驟H10、執(zhí)行數(shù)據(jù)庫升級操作;步驟H11、數(shù)據(jù)庫版本號更新,跳至步驟16;步驟H12、從配置文件中獲取更新表字段的表名;步驟H13、根據(jù)上述步驟中表名獲取該表待更新的字段名;步驟H14、根據(jù)表名更新該表中字段,跳至步驟H10;步驟H15、結(jié)束。本發(fā)明所述的方法應(yīng)用在Android的智能設(shè)備中,通過將應(yīng)用分成數(shù)據(jù)部分與業(yè)務(wù)部分,降低數(shù)據(jù)部分和業(yè)務(wù)部分之間的耦合性,因此可以僅僅通過從云端獲取到數(shù)據(jù)bundle文件及其配置文件,便可以輕松實(shí)現(xiàn)數(shù)據(jù)庫的升級和更新,為人員的工作帶來便利。在上述方法的前提下,本發(fā)明還提供了一種數(shù)據(jù)庫的升級系統(tǒng),如圖4所示,包括:云端數(shù)據(jù)獲取模塊100,用于從云端獲取數(shù)據(jù)bundle文件的配置文件版本號;其功能如步驟S1所述。版本判斷模塊200,用于判斷本地?cái)?shù)據(jù)庫中數(shù)據(jù)bundle文件的配置文件版本號是否低于云端配置文件版本號;其功能如步驟S2所述。配置解析模塊300,用于當(dāng)本地?cái)?shù)據(jù)庫中數(shù)據(jù)bundle文件的配置文件版本號低于云端數(shù)據(jù)bundle文件的配置文件版本號時(shí),從從云端下載數(shù)據(jù)bundle文件及其配置文件,并從云端下載的配置文件中解析出數(shù)據(jù)更新信息;其功能如步驟S3所述。數(shù)據(jù)庫升級模塊400,用于根據(jù)下載的數(shù)據(jù)bundle文件和所述數(shù)據(jù)更新信息對本地?cái)?shù)據(jù)庫進(jìn)行升級。其功能如步驟S4所述。所述系統(tǒng)還包括:應(yīng)用劃分模塊,用于將應(yīng)用按照邏輯劃分為數(shù)據(jù)類和業(yè)務(wù)類,并分別將數(shù)據(jù)類對應(yīng)的java文件和業(yè)務(wù)類對應(yīng)的java文件編譯成數(shù)據(jù)bundle文件和業(yè)務(wù)bundle文件;安裝文件模塊,用于數(shù)據(jù)bundle文件和業(yè)務(wù)bundle文件在OSGI框架中獲取BundleContext,并通過調(diào)用BundleContext安裝指令對數(shù)據(jù)bundle文件和業(yè)務(wù)bundle文件進(jìn)行安裝;建立數(shù)據(jù)庫模塊,用于獲取已安裝的數(shù)據(jù)bundle文件和業(yè)務(wù)bundle文件信息,同時(shí)啟動(dòng)后的數(shù)據(jù)bundle文件根據(jù)數(shù)據(jù)bundle應(yīng)用包名、數(shù)據(jù)bundle文件安裝返回的bundleID建立本地?cái)?shù)據(jù)庫。所述數(shù)據(jù)庫升級模塊還用于:卸載本地?cái)?shù)據(jù)庫中與從云端下載的數(shù)據(jù)bundle文件名稱相同的bundle文件,安裝云端下載的數(shù)據(jù)bundle文件并啟動(dòng)。所述數(shù)據(jù)庫升級模塊包括:判斷動(dòng)作單元,用于判斷數(shù)據(jù)更新信息所對應(yīng)的操作是否包括添加表或/和更新表字段;表創(chuàng)建單元,用于獲取數(shù)據(jù)更新信息中添加表的表名,根據(jù)所述表名獲取表字段名,并根據(jù)表字段名和表名創(chuàng)建表;更新表字段單元,用于獲取更新數(shù)據(jù)信息中增加表字段的表名,根據(jù)所述表名獲取更新的字段名,并根據(jù)所述表名更新表中的字段;更新數(shù)據(jù)庫單元,用于執(zhí)行本地?cái)?shù)據(jù)庫升級操作,并更新本地?cái)?shù)據(jù)庫版本號。安裝文件模塊包括:數(shù)據(jù)bundle啟動(dòng)單元,用于業(yè)務(wù)bundle向數(shù)據(jù)bundle輸入預(yù)設(shè)參數(shù),啟動(dòng)數(shù)據(jù)bundle文件執(zhí)行所述數(shù)據(jù)bundle文件所對應(yīng)模塊的功能。本發(fā)明提供了一種數(shù)據(jù)庫的升級方法及其系統(tǒng),通過從云端獲取數(shù)據(jù)bundle文件的配置文件版本號,判斷本地?cái)?shù)據(jù)庫中數(shù)據(jù)bundle文件的配置文件版本號是否低于云端配置文件的版本號,若是,則從云端下載數(shù)據(jù)bundle文件及其配置文件,并從云端下載的配置文件中解析出數(shù)據(jù)更新信息,根據(jù)下載的數(shù)據(jù)bundle文件和所述數(shù)據(jù)更新信息對本地?cái)?shù)據(jù)庫進(jìn)行升級。本發(fā)明所提供方法和系統(tǒng),由于將應(yīng)用分成數(shù)據(jù)部分與業(yè)務(wù)部分,降低兩者耦合性,因此可實(shí)現(xiàn)在不影響業(yè)務(wù)的情況下,實(shí)現(xiàn)數(shù)據(jù)庫的升級與更新,為人員的工作帶來便利??梢岳斫獾氖?,對本領(lǐng)域普通技術(shù)人員來說,可以根據(jù)本發(fā)明的技術(shù)方案及其發(fā)明構(gòu)思加以等同替換或改變,而所有這些改變或替換都應(yīng)屬于本發(fā)明所附的權(quán)利要求的保護(hù)范圍。當(dāng)前第1頁1 2 3 當(dāng)前第1頁1 2 3