本申請(qǐng)涉及計(jì)算機(jī)
技術(shù)領(lǐng)域:
:,尤其涉及一種創(chuàng)建數(shù)據(jù)庫(kù)接口的方法及裝置、數(shù)據(jù)庫(kù)操作方法及裝置。
背景技術(shù):
::隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展,計(jì)算機(jī)已經(jīng)廣泛地應(yīng)用于人們的日常生活和工作中,極大地方便了人們的生活,這與計(jì)算機(jī)應(yīng)用程序功能的多樣化密不可分。在應(yīng)用程序運(yùn)行時(shí),往往會(huì)使用數(shù)據(jù)庫(kù)來(lái)對(duì)應(yīng)用程序的數(shù)據(jù)進(jìn)行管理。應(yīng)用程序在使用數(shù)據(jù)庫(kù)時(shí),需要通過(guò)數(shù)據(jù)庫(kù)接口來(lái)執(zhí)行數(shù)據(jù)的寫(xiě)入、查找、刪除等數(shù)據(jù)操作。在現(xiàn)有技術(shù)中,應(yīng)用程序會(huì)利用應(yīng)用程序中的代碼創(chuàng)建數(shù)據(jù)庫(kù)接口,這樣,在接收到針對(duì)數(shù)據(jù)庫(kù)的操作指令后,便可以利用創(chuàng)建的數(shù)據(jù)庫(kù)接口執(zhí)行相應(yīng)的數(shù)據(jù)庫(kù)操作。那么開(kāi)發(fā)人員在對(duì)應(yīng)用程序進(jìn)行開(kāi)發(fā)時(shí),需要在程序的源代碼中寫(xiě)入實(shí)現(xiàn)數(shù)據(jù)庫(kù)接口功能的所有代碼,該數(shù)據(jù)庫(kù)接口的功能包括打開(kāi)數(shù)據(jù)庫(kù)、操作數(shù)據(jù)庫(kù)中數(shù)據(jù)、關(guān)閉數(shù)據(jù)庫(kù)、更新數(shù)據(jù)庫(kù)等。隨著應(yīng)用程序功能的增多,單個(gè)應(yīng)用程序可能會(huì)對(duì)多個(gè)數(shù)據(jù)庫(kù)進(jìn)行操作,單個(gè)數(shù)據(jù)庫(kù)中往往包含多個(gè)數(shù)據(jù)表,每個(gè)數(shù)據(jù)表中往往也包含多個(gè)字段,這就需要開(kāi)發(fā)人員在程序的源代碼中,分別為各字段寫(xiě)入實(shí)現(xiàn)數(shù)據(jù)庫(kù)接口功能的所有代碼,其代碼量是相當(dāng)大的。在開(kāi)發(fā)人員將應(yīng)用程序的源代碼編寫(xiě)完成后,需要經(jīng)過(guò)編譯過(guò)程,才能將利用源代碼編寫(xiě)的源程序轉(zhuǎn)換為計(jì)算機(jī)可執(zhí)行的目標(biāo)程序。那么,由于現(xiàn)有的創(chuàng)建數(shù)據(jù)庫(kù)接口的方法需要在源程序中部署大量的源代碼,導(dǎo)致在對(duì)源代碼進(jìn)行編譯時(shí),耗費(fèi)的資源較高。技術(shù)實(shí)現(xiàn)要素:本申請(qǐng)實(shí)施例提供一種創(chuàng)建數(shù)據(jù)庫(kù)接口的方法,用以解決現(xiàn)有技術(shù)中實(shí)現(xiàn)數(shù)據(jù)庫(kù)接口的功能時(shí)需要在源程序中部署大量的源代碼,導(dǎo)致在對(duì)源代碼進(jìn)行編譯時(shí)耗費(fèi)資源較高的問(wèn)題。本申請(qǐng)實(shí)施例采用下述技術(shù)方案:一種創(chuàng)建數(shù)據(jù)庫(kù)接口的方法,包括:從預(yù)設(shè)的配置文件中確定用于創(chuàng)建數(shù)據(jù)庫(kù)接口的至少一個(gè)操作語(yǔ)句模板;根據(jù)所述至少一個(gè)操作語(yǔ)句模板,創(chuàng)建所述操作語(yǔ)句模板對(duì)應(yīng)的數(shù)據(jù)庫(kù)接口,所述數(shù)據(jù)庫(kù)接口用于在接收到操作指令時(shí)確定操作語(yǔ)句模板并根據(jù)所述操作語(yǔ)句模板對(duì)數(shù)據(jù)庫(kù)執(zhí)行操作。本申請(qǐng)實(shí)施例還提供一種數(shù)據(jù)庫(kù)操作方法,用以解決現(xiàn)有技術(shù)中實(shí)現(xiàn)數(shù)據(jù)庫(kù)接口的功能時(shí)需要在源程序中部署大量的源代碼,導(dǎo)致在對(duì)源代碼進(jìn)行編譯時(shí)耗費(fèi)資源較高的問(wèn)題。本申請(qǐng)實(shí)施例采用下述技術(shù)方案:一種數(shù)據(jù)庫(kù)操作方法,包括:接收針對(duì)數(shù)據(jù)庫(kù)的操作指令;根據(jù)預(yù)先創(chuàng)建的數(shù)據(jù)庫(kù)接口,從配置文件中確定與所述操作指令對(duì)應(yīng)的操作語(yǔ)句模板,所述數(shù)據(jù)庫(kù)接口,是通過(guò)本申請(qǐng)?zhí)峁┑膭?chuàng)建數(shù)據(jù)庫(kù)接口的方法創(chuàng)建的;根據(jù)所述操作語(yǔ)句模板和所述操作指令中包含的實(shí)參,得到針對(duì)所述數(shù)據(jù)庫(kù)的操作語(yǔ)句;根據(jù)所述操作語(yǔ)句,對(duì)所述數(shù)據(jù)庫(kù)執(zhí)行數(shù)據(jù)庫(kù)操作。本申請(qǐng)實(shí)施例采用的上述至少一個(gè)技術(shù)方案能夠達(dá)到以下有益效果:通過(guò)從預(yù)設(shè)的配置文件中確定用于創(chuàng)建數(shù)據(jù)庫(kù)接口的至少一個(gè)操作語(yǔ)句模板,然后根據(jù)所述至少一個(gè)操作語(yǔ)句模板,創(chuàng)建所述操作語(yǔ)句模板對(duì)應(yīng)的數(shù)據(jù)庫(kù)接口,即可在后續(xù)利用創(chuàng)建的數(shù)據(jù)庫(kù)接口進(jìn)行數(shù)據(jù)庫(kù)操作。這樣,即可以從配置文件中獲取用于實(shí)現(xiàn)數(shù)據(jù)庫(kù)接口功能的代碼,該部分代碼便無(wú)需保存在應(yīng)用程序源代碼中,減少了應(yīng)用程序源代碼的代碼量,由于無(wú)需對(duì)配置文件中的代碼進(jìn)行編譯,因此降低了對(duì)應(yīng)用程序源代碼進(jìn)行編譯時(shí)耗費(fèi)的資源。附圖說(shuō)明此處所說(shuō)明的附圖用來(lái)提供對(duì)本申請(qǐng)的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本申請(qǐng)的示意性實(shí)施例及其說(shuō)明用于解釋本申請(qǐng),并不構(gòu)成對(duì)本申請(qǐng)的不當(dāng)限定。在附圖中:圖1為本申請(qǐng)實(shí)施例提供的一種創(chuàng)建數(shù)據(jù)庫(kù)接口的方法的實(shí)現(xiàn)流程示意圖;圖2為本申請(qǐng)實(shí)施例提供的一種創(chuàng)建數(shù)據(jù)庫(kù)接口的方法的實(shí)現(xiàn)流程示意圖;圖3為本申請(qǐng)實(shí)施例提供的一種數(shù)據(jù)庫(kù)操作方法的實(shí)現(xiàn)流程示意圖;圖4為本申請(qǐng)實(shí)施例提供的數(shù)據(jù)表升級(jí)方法的實(shí)現(xiàn)流程示意圖;圖5為本申請(qǐng)實(shí)施例提供的并行操作數(shù)據(jù)庫(kù)的方法的實(shí)現(xiàn)流程示意圖;圖6為本申請(qǐng)實(shí)施例提供的數(shù)據(jù)加密過(guò)程的實(shí)現(xiàn)流程示意圖;圖7為本申請(qǐng)實(shí)施例提供的數(shù)據(jù)解密過(guò)程的實(shí)現(xiàn)流程示意圖;圖8為本申請(qǐng)實(shí)施例提供的一種創(chuàng)建數(shù)據(jù)庫(kù)接口的裝置的具體結(jié)構(gòu)示意圖;圖9為本申請(qǐng)實(shí)施例提供的一種數(shù)據(jù)庫(kù)操作裝置的具體結(jié)構(gòu)示意圖。具體實(shí)施方式為使本申請(qǐng)的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本申請(qǐng)具體實(shí)施例及相應(yīng)的附圖對(duì)本申請(qǐng)技術(shù)方案進(jìn)行清楚、完整地描述。顯然,所描述的實(shí)施例僅是本申請(qǐng)一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾?qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本申請(qǐng)保護(hù)的范圍。以下結(jié)合附圖,詳細(xì)說(shuō)明本申請(qǐng)各實(shí)施例提供的技術(shù)方案。為解決現(xiàn)有技術(shù)中,實(shí)現(xiàn)數(shù)據(jù)庫(kù)接口的功能時(shí),需要在源程序中部署大量的源代碼,導(dǎo)致在對(duì)源代碼進(jìn)行編譯時(shí)耗費(fèi)資源較高的問(wèn)題,本申請(qǐng)實(shí)施例提供一種創(chuàng)建數(shù)據(jù)庫(kù)接口的方法。本申請(qǐng)實(shí)施例提供的創(chuàng)建數(shù)據(jù)庫(kù)接口的方法的執(zhí)行主體可以是終端設(shè)備,例如,智能手機(jī)、平板電腦、個(gè)人計(jì)算機(jī),等等。此外,該方法的執(zhí)行主體還可以是應(yīng)用程序本身。為便于描述,下文以該方法的執(zhí)行主體為應(yīng)用程序?yàn)槔?,?duì)該方法的實(shí)施方式進(jìn)行介紹??梢岳斫猓摲椒ǖ膱?zhí)行主體為應(yīng)用程序只是一種示例性的說(shuō)明,并不應(yīng)理解為對(duì)該方法的限定。如
背景技術(shù):
:中所描述的,應(yīng)用程序在進(jìn)行數(shù)據(jù)庫(kù)操作時(shí),會(huì)通過(guò)數(shù)據(jù)庫(kù)接口來(lái)進(jìn)行數(shù)據(jù)操作。在面向?qū)ο髴?yīng)用程序中,數(shù)據(jù)庫(kù)接口是以數(shù)據(jù)訪問(wèn)對(duì)象(dataaccessobject,dao)的形式存在的。dao中可以包含多種數(shù)據(jù)庫(kù)操作方法,即一個(gè)dao中可以包含多個(gè)數(shù)據(jù)庫(kù)接口。那么應(yīng)用程序在調(diào)用數(shù)據(jù)庫(kù)接口進(jìn)行數(shù)據(jù)庫(kù)操作時(shí),會(huì)調(diào)用dao中的數(shù)據(jù)庫(kù)操作方法,來(lái)執(zhí)行數(shù)據(jù)庫(kù)操作。需要說(shuō)明的是,在面向?qū)ο髴?yīng)用程序中,方法指的是類別或者是對(duì)象的一種子程序,如同過(guò)程化編程語(yǔ)言的程序,一個(gè)方法通常由一系列的語(yǔ)句所組成。在面向?qū)ο蟮膽?yīng)用程序中,是利用源代碼中數(shù)據(jù)庫(kù)接口的定義和數(shù)據(jù)庫(kù)接口的實(shí)現(xiàn)方法,來(lái)創(chuàng)建數(shù)據(jù)庫(kù)接口。其中,接口的定義只是對(duì)接口的說(shuō)明,接口的定義往往會(huì)包含接口的名稱、接口參數(shù)、參數(shù)類型等內(nèi)容。而接口的實(shí)現(xiàn)方法是指用于實(shí)現(xiàn)接口功能的具體方法,接口的實(shí)現(xiàn)方法中會(huì)包含實(shí)現(xiàn)接口功能的具體操作步驟,其代碼量較大。在現(xiàn)有技術(shù)中,對(duì)于數(shù)據(jù)庫(kù)接口的定義和實(shí)現(xiàn)方法都會(huì)在應(yīng)用程序的源代碼中進(jìn)行完整的編寫(xiě),以便應(yīng)用程序可以根據(jù)編寫(xiě)的代碼創(chuàng)建數(shù)據(jù)庫(kù)接口。這樣,源代碼的代碼量往往會(huì)很大,那么,在對(duì)源代碼進(jìn)行編譯時(shí),消耗的硬件資源會(huì)較高。所述數(shù)據(jù)庫(kù)可以是應(yīng)用程序所在終端本地的數(shù)據(jù)庫(kù),例如sqlite數(shù)據(jù)庫(kù)等。為了解決該問(wèn)題,對(duì)于基于動(dòng)態(tài)編程語(yǔ)言編寫(xiě)的應(yīng)用程序,可以僅在應(yīng)用程序源代碼中聲明數(shù)據(jù)庫(kù)接口的定義,然后將數(shù)據(jù)庫(kù)接口的具體實(shí)現(xiàn)方法保存在配置文件中。配置文件中的代碼無(wú)需進(jìn)行編譯,在應(yīng)用程序運(yùn)行時(shí),應(yīng)用程序可以解析配置文件,然后根據(jù)配置文件中的代碼創(chuàng)建數(shù)據(jù)庫(kù)接口,那么在進(jìn)行數(shù)據(jù)庫(kù)接口調(diào)用時(shí),即可調(diào)用配置文件中保存的數(shù)據(jù)庫(kù)接口的實(shí)現(xiàn)方法,完成數(shù)據(jù)庫(kù)操作。所謂動(dòng)態(tài)編程語(yǔ)言,指在應(yīng)用程序運(yùn)行時(shí)可以改變應(yīng)用程序結(jié)構(gòu)的語(yǔ)言,應(yīng)用程序結(jié)構(gòu)的改變比如可以是新的函數(shù)被引入應(yīng)用程序、應(yīng)用程序中已有的函數(shù)被刪除等應(yīng)用程序結(jié)構(gòu)上的變化。常見(jiàn)的動(dòng)態(tài)編程語(yǔ)言比如可以是ecmascript(javascript)語(yǔ)言、ruby語(yǔ)言、python語(yǔ)言等。此外objective-c語(yǔ)言可以憑借其消息發(fā)送機(jī)制,實(shí)現(xiàn)方法的調(diào)用。同時(shí),objective-c也可以在運(yùn)行時(shí)為指定類動(dòng)態(tài)添加方法,實(shí)現(xiàn)動(dòng)態(tài)調(diào)用的功能。基于動(dòng)態(tài)編程語(yǔ)言的動(dòng)態(tài)特性,應(yīng)用程序即可根據(jù)配置文件中保存的數(shù)據(jù)庫(kù)接口的實(shí)現(xiàn)方法,進(jìn)行數(shù)據(jù)庫(kù)操作。在利用數(shù)據(jù)庫(kù)接口進(jìn)行數(shù)據(jù)庫(kù)操作前,會(huì)預(yù)先創(chuàng)建數(shù)據(jù)庫(kù)接口。那么,在描述如何利用數(shù)據(jù)庫(kù)接口進(jìn)行數(shù)據(jù)庫(kù)操作之前,首先對(duì)本申請(qǐng)中創(chuàng)建數(shù)據(jù)庫(kù)接口的方法進(jìn)行詳細(xì)介紹。該方法的實(shí)現(xiàn)流程示意圖如圖1所示,包括下述步驟:步驟s101:從預(yù)設(shè)的配置文件中確定用于創(chuàng)建數(shù)據(jù)庫(kù)接口的至少一個(gè)操作語(yǔ)句模板;其中,預(yù)設(shè)的配置文件中保存有至少一個(gè)操作語(yǔ)句模板,操作語(yǔ)句模板具體包括對(duì)數(shù)據(jù)庫(kù)執(zhí)行各種操作的數(shù)據(jù)庫(kù)操作語(yǔ)句,各操作語(yǔ)句模板即為各數(shù)據(jù)庫(kù)接口的具體實(shí)現(xiàn)方法。配置文件可以是由開(kāi)發(fā)人員預(yù)先編寫(xiě)的,為了增強(qiáng)配置文件的通用性,在實(shí)際應(yīng)用中,該配置文件可以是利用可擴(kuò)展標(biāo)記語(yǔ)言(extensiblemarkuplanguage,xml)編寫(xiě)的,由于xml語(yǔ)言符合萬(wàn)維網(wǎng)聯(lián)盟(worldwidewebconsortium,w3c)標(biāo)準(zhǔn),其通用性較強(qiáng)。為了減少配置文件中的代碼量,對(duì)于數(shù)據(jù)庫(kù)操作的方法相同,但是表名和/或字段名等參數(shù)值不同的數(shù)據(jù)庫(kù)操作語(yǔ)句,可以將操作語(yǔ)句模板中的數(shù)據(jù)庫(kù)操作語(yǔ)句中的表名、字段名等參數(shù)設(shè)置為形參。在sql語(yǔ)句中,形參可以用占位符“?”表示,在使用包含形參的操作語(yǔ)句時(shí),可以將操作語(yǔ)句和參數(shù)進(jìn)行參數(shù)綁定,然后執(zhí)行數(shù)據(jù)庫(kù)操作。參數(shù)綁定是指將實(shí)參與預(yù)處理過(guò)的操作語(yǔ)句中相應(yīng)的占位符建立關(guān)聯(lián)關(guān)系的操作,在執(zhí)行參數(shù)綁定操作后,數(shù)據(jù)庫(kù)便可以利用綁定有參數(shù)的操作語(yǔ)句執(zhí)行數(shù)據(jù)庫(kù)操作。這樣在配置文件中,便可以將僅僅是表名和/或字段名等參數(shù)值不同的數(shù)據(jù)庫(kù)操作語(yǔ)句,寫(xiě)作同一個(gè)包含形參的數(shù)據(jù)庫(kù)操作語(yǔ)句。那么在實(shí)際對(duì)數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)庫(kù)操作時(shí),通過(guò)將實(shí)參賦值給該操作語(yǔ)句中的形參,即可得到實(shí)際執(zhí)行操作時(shí)的數(shù)據(jù)庫(kù)操作語(yǔ)句,利用綁定參數(shù)的數(shù)據(jù)庫(kù)操作語(yǔ)句,即可執(zhí)行數(shù)據(jù)庫(kù)操作。這樣,開(kāi)發(fā)人員便可以不必為數(shù)據(jù)庫(kù)中不同表名和/或不同字段的相同數(shù)據(jù)庫(kù)操作,單獨(dú)寫(xiě)數(shù)據(jù)庫(kù)操作語(yǔ)句。需要說(shuō)明的是,實(shí)現(xiàn)一個(gè)完整的數(shù)據(jù)庫(kù)接口所使用的操作語(yǔ)句,會(huì)包括個(gè)性化的操作語(yǔ)句和必要且通用的操作語(yǔ)句。個(gè)性化的操作語(yǔ)句指不同的數(shù)據(jù)庫(kù)接口中可以不同的操作語(yǔ)句,比如查找類操作語(yǔ)句、存儲(chǔ)類操作語(yǔ)句、刪除類操作語(yǔ)句等等。所謂查找類操作語(yǔ)句為對(duì)數(shù)據(jù)進(jìn)行查找的操作語(yǔ)句,比如結(jié)構(gòu)化查詢語(yǔ)言(structuredquerylanguage,sql)中的select語(yǔ)句;所謂存儲(chǔ)類操作語(yǔ)句,為將數(shù)據(jù)存儲(chǔ)至數(shù)據(jù)庫(kù)的語(yǔ)句,比如sql中的insert語(yǔ)句和update語(yǔ)句;所謂刪除類操作語(yǔ)句,指將數(shù)據(jù)從數(shù)據(jù)庫(kù)中刪除的語(yǔ)句,比如sql中的delet語(yǔ)句。必要且通用的操作語(yǔ)句指每個(gè)數(shù)據(jù)接口都需要執(zhí)行的操作,比如數(shù)據(jù)庫(kù)開(kāi)啟語(yǔ)句、數(shù)據(jù)庫(kù)關(guān)閉語(yǔ)句等等。為了便于后續(xù)描述,這里將數(shù)據(jù)庫(kù)操作中個(gè)性化的操作語(yǔ)句稱為第一操作語(yǔ)句,將數(shù)據(jù)庫(kù)操作中必要且通用的操作語(yǔ)句稱為第二操作語(yǔ)句。那么,可以只在配置文件中,實(shí)現(xiàn)第一操作語(yǔ)句的操作語(yǔ)句模板,對(duì)于第二操作語(yǔ)句,可以將其從配置文件中分離出來(lái)。這樣,配置文件中的代碼量將會(huì)大大減少,降低了應(yīng)用程序復(fù)雜度,這樣開(kāi)發(fā)人員在編寫(xiě)配置文件時(shí),只需編寫(xiě)第一操作語(yǔ)句的操作語(yǔ)句模板即可。需要說(shuō)明的是,為了在后續(xù)接收到針對(duì)數(shù)據(jù)庫(kù)的操作指令時(shí),能夠快速響應(yīng)于該指令執(zhí)行數(shù)據(jù)操作,最好是在應(yīng)用程序啟動(dòng)后便立刻生成數(shù)據(jù)庫(kù)接口。在應(yīng)用程序的代碼中,開(kāi)發(fā)人員在聲明數(shù)據(jù)庫(kù)接口定義的同時(shí),還會(huì)設(shè)置配置文件的路徑。這樣,在應(yīng)用程序啟動(dòng)后,即可以根據(jù)應(yīng)用程序代碼中的配置文件路徑,讀取配置文件,并對(duì)配置文件進(jìn)行解析,便可以得到配置文件中定義的各數(shù)據(jù)庫(kù)接口的操作語(yǔ)句模板。以便后續(xù)根據(jù)數(shù)據(jù)庫(kù)接口定義和解析得到的操作語(yǔ)句模板生成數(shù)據(jù)庫(kù)接口。步驟s102:根據(jù)所述至少一個(gè)操作語(yǔ)句模板,創(chuàng)建所述操作語(yǔ)句模板對(duì)應(yīng)的數(shù)據(jù)庫(kù)接口。所述數(shù)據(jù)庫(kù)接口用于在接收到操作指令時(shí)確定操作語(yǔ)句模板并根據(jù)所述操作語(yǔ)句模板對(duì)數(shù)據(jù)庫(kù)執(zhí)行操作。在面向?qū)ο髴?yīng)用程序中,在創(chuàng)建用于實(shí)現(xiàn)數(shù)據(jù)庫(kù)接口功能的數(shù)據(jù)訪問(wèn)對(duì)象時(shí),會(huì)預(yù)先生成用于生成該對(duì)象的類,然后再將生成的類中的方法指定為對(duì)各操作語(yǔ)句模板進(jìn)行處理的模板處理函數(shù)。模板處理函數(shù)用于根據(jù)操作語(yǔ)句模板和實(shí)參得到操作語(yǔ)句;由于各操作語(yǔ)句模板的實(shí)際操作語(yǔ)句不同,操作語(yǔ)句模板中的參數(shù)個(gè)數(shù)也不同,那么對(duì)于不同的操作語(yǔ)句模板,可以確定與之對(duì)應(yīng)模板處理函數(shù),并將類中的方法指定為確定的模板處理函數(shù)。最后根據(jù)生成的類創(chuàng)建對(duì)象,即為數(shù)據(jù)訪問(wèn)對(duì)象,需要說(shuō)明的是,可以為創(chuàng)建的數(shù)據(jù)訪問(wèn)對(duì)象與配置文件建立關(guān)聯(lián)關(guān)系,以便在調(diào)用數(shù)據(jù)訪問(wèn)對(duì)象時(shí),可以根據(jù)該關(guān)聯(lián)關(guān)系確定配置文件中的操作語(yǔ)句模板。需要說(shuō)明的是,在生成數(shù)據(jù)訪問(wèn)對(duì)象時(shí),可以僅為該接口定義中聲明的所有接口創(chuàng)建一個(gè)數(shù)據(jù)訪問(wèn)對(duì)象,也可以分別為該接口定義中聲明的各個(gè)接口分別創(chuàng)建數(shù)據(jù)訪問(wèn)對(duì)象,本申請(qǐng)實(shí)施例對(duì)此不做限定,下面以為接口定義中聲明的所有接口創(chuàng)建一個(gè)數(shù)據(jù)訪問(wèn)對(duì)象為例,對(duì)數(shù)據(jù)訪問(wèn)對(duì)象的創(chuàng)建過(guò)程進(jìn)行描述。下面以objective-c語(yǔ)言為例,詳細(xì)說(shuō)明本申請(qǐng)?zhí)峁┑膭?chuàng)建數(shù)據(jù)庫(kù)接口的方法,在以objective-c語(yǔ)言編寫(xiě)的應(yīng)用程序中的具體實(shí)現(xiàn)過(guò)程。在以objective-c語(yǔ)言編寫(xiě)的應(yīng)用程序中,開(kāi)發(fā)人員在應(yīng)用程序代碼中預(yù)先編寫(xiě)了數(shù)據(jù)庫(kù)接口定義。由于接口定義中已經(jīng)聲明了接口的名稱、接口參數(shù)、參數(shù)類型等屬性,那么為了提高生成數(shù)據(jù)訪問(wèn)對(duì)象的效率,可以借助應(yīng)用程序代碼中的接口定義,來(lái)生成數(shù)據(jù)訪問(wèn)對(duì)象。通過(guò)應(yīng)用程序代碼中的接口定義和配置文件,生成數(shù)據(jù)訪問(wèn)對(duì)象的實(shí)現(xiàn)流程示意圖如圖2所示,具體包括如下步驟:步驟s201:解析配置文件和接口定義;在對(duì)配置文件進(jìn)行解析時(shí),可以根據(jù)應(yīng)用程序代碼中定義的配置文件的路徑,確定配置文件,然后對(duì)配置文件進(jìn)行解析,即可得到配置文件中的操作語(yǔ)句模板。同樣,在對(duì)接口定義進(jìn)行解析后,即可得到接口定義中聲明的各個(gè)接口,即得到接口列表。例如,在xml格式的配置文件中,對(duì)某業(yè)務(wù)的某個(gè)select操作語(yǔ)句的操作語(yǔ)句模板的定義如下:<selectid=”querymsgswithuserid”arguments=”userid”result=”[apnewfindcontactmsg]”parallel=”true”>select*from$(t)whereuserid=#{uerid}orderbycreattimedesc</select>其中id部分為該操作語(yǔ)句模板的名稱,即為方法名,arguments部分為操作語(yǔ)句模板中的參數(shù),result部分定義了生成的數(shù)據(jù)對(duì)象的類,parallel部分用于指定該方法是否可以自動(dòng)并發(fā)?!皊elect*from$(t)whereuserid=#{uerid}orderbycreattimedesc”部分為操作語(yǔ)句模板,其本質(zhì)也是數(shù)據(jù)庫(kù)操作語(yǔ)句。與該操作語(yǔ)句模板對(duì)應(yīng)的objective-c應(yīng)用程序源代碼中的接口定義如下:@protocolcontactdaoproxy<apdaoprotocol>-(apnewfindcontactmsg*)querymsgswithuserid:(nsstring*)userid;@end其中,querymsgswithuserid即為接口的名稱,即該源代碼中定義的接口為querymsgswithuserid。步驟s202:判斷是否已經(jīng)存在與接口定義中聲明的各接口對(duì)應(yīng)的類;步驟s203:如果判斷結(jié)果為是,則證明已經(jīng)預(yù)先生成過(guò)與該接口定義中聲明的接口對(duì)應(yīng)的類。則可以直接利用已經(jīng)生成的該類,創(chuàng)建數(shù)據(jù)訪問(wèn)對(duì)象。步驟s204:如果判斷結(jié)果為否,則生成用于創(chuàng)建訪問(wèn)對(duì)象的類;生成的類的名字可以和根據(jù)接口定義創(chuàng)建的接口對(duì)象名字相同,以便后續(xù)可以根據(jù)接口對(duì)象的名字,判斷是否已為某接口對(duì)象生成了類。步驟s205:將各接口定義中的所有方法添加到生成的類中;步驟s206:將類中的各方法的實(shí)現(xiàn)綁定為與各方法對(duì)應(yīng)的模板處理函數(shù);其中,模板處理函數(shù)用于根據(jù)操作語(yǔ)句模板和實(shí)參得到操作語(yǔ)句。各個(gè)接口對(duì)應(yīng)的模板處理函數(shù),可以根據(jù)各操作語(yǔ)句模板中包含的形參來(lái)確定。模板處理函數(shù)具體可以由接口包含的形參的個(gè)數(shù)確定,即可以將各接口的模板處理函數(shù)指定為,能夠接收的參數(shù)的數(shù)量與接口包含的形參的數(shù)量相同的模板處理函數(shù)。步驟s207:利用已經(jīng)添加所有方法的類,生成數(shù)據(jù)訪問(wèn)對(duì)象,并為創(chuàng)建的數(shù)據(jù)訪問(wèn)對(duì)象與配置文件建立關(guān)聯(lián)關(guān)系。在得到數(shù)據(jù)訪問(wèn)對(duì)象后,還可以將該數(shù)據(jù)訪問(wèn)對(duì)象轉(zhuǎn)換為指向接口中方法的指針,通過(guò)該指針,可以直接調(diào)用接口中定義的方法。本申請(qǐng)?zhí)峁┑膭?chuàng)建數(shù)據(jù)庫(kù)接口的方法,通過(guò)從預(yù)設(shè)的配置文件中確定用于創(chuàng)建數(shù)據(jù)庫(kù)接口的至少一個(gè)操作語(yǔ)句模板,然后根據(jù)所述至少一個(gè)操作語(yǔ)句模板,創(chuàng)建所述操作語(yǔ)句模板對(duì)應(yīng)的數(shù)據(jù)庫(kù)接口,即可在后續(xù)利用創(chuàng)建的數(shù)據(jù)庫(kù)接口進(jìn)行數(shù)據(jù)庫(kù)操作。這樣,即可以從配置文件中獲取用于實(shí)現(xiàn)數(shù)據(jù)庫(kù)接口功能的代碼,該部分代碼便無(wú)需保存在應(yīng)用程序源代碼中,減少了應(yīng)用程序源代碼的代碼量,由于無(wú)需對(duì)配置文件中的代碼進(jìn)行編譯,因此降低了對(duì)應(yīng)用程序源代碼進(jìn)行編譯時(shí)耗費(fèi)的資源。同時(shí),通過(guò)本申請(qǐng)?zhí)峁┑膭?chuàng)建數(shù)據(jù)庫(kù)接口的方法,開(kāi)發(fā)人員不必在代碼中為每一個(gè)數(shù)據(jù)庫(kù)接口編寫(xiě)完整的實(shí)現(xiàn)方法,而只需在配置文件中,編寫(xiě)數(shù)據(jù)庫(kù)操作中個(gè)性化的操作語(yǔ)句對(duì)應(yīng)的操作語(yǔ)句模板、接口名稱和參數(shù),并且在源代碼中定義接口說(shuō)明,從而降低了應(yīng)用開(kāi)發(fā)的復(fù)雜度,方便開(kāi)發(fā)人員對(duì)數(shù)據(jù)庫(kù)接口的實(shí)現(xiàn),提高了編寫(xiě)數(shù)據(jù)庫(kù)接口的實(shí)現(xiàn)方法時(shí)的便利性。在創(chuàng)建數(shù)據(jù)庫(kù)接口后,便可以在接收到針對(duì)該數(shù)據(jù)庫(kù)接口的操作指令后,根據(jù)創(chuàng)建的數(shù)據(jù)庫(kù)接口,從配置文件中確定操作語(yǔ)句模板,并利用確定的操作語(yǔ)句模板和操作指令中的實(shí)參,得到操作語(yǔ)句,對(duì)所述數(shù)據(jù)庫(kù)執(zhí)行數(shù)據(jù)庫(kù)操作。下面將對(duì)利用得到的數(shù)據(jù)庫(kù)接口進(jìn)行數(shù)據(jù)庫(kù)操作的方法,進(jìn)行詳細(xì)描述。該方法的實(shí)現(xiàn)流程示意圖如圖3所示,包括下述步驟:步驟s301:接收針對(duì)數(shù)據(jù)庫(kù)的操作指令;步驟s302:根據(jù)預(yù)先創(chuàng)建的數(shù)據(jù)庫(kù)接口,從配置文件中確定與所述操作指令對(duì)應(yīng)的操作語(yǔ)句模板,所述數(shù)據(jù)庫(kù)接口,是通過(guò)本申請(qǐng)實(shí)施例提供的創(chuàng)建數(shù)據(jù)庫(kù)接口的方法創(chuàng)建的。在接收到針對(duì)數(shù)據(jù)庫(kù)的操作指令后,可以根據(jù)預(yù)先生成的數(shù)據(jù)庫(kù)接口,確定與該操作指令對(duì)應(yīng)的模板處理函數(shù),然后從配置文件中確定與確定的模板處理函數(shù)對(duì)應(yīng)的操作語(yǔ)句模板。模板處理函數(shù)可以確定配置文件中與該模板處理函數(shù)對(duì)應(yīng)的操作語(yǔ)句模板,即為與接收到的操作指令對(duì)應(yīng)的操作語(yǔ)句模板。在面向?qū)ο蟮膽?yīng)用程序中,在接收到針對(duì)數(shù)據(jù)庫(kù)的操作指令后,會(huì)調(diào)用數(shù)據(jù)訪問(wèn)對(duì)象中的方法。由于數(shù)據(jù)訪問(wèn)對(duì)象中的方法的實(shí)現(xiàn)為模板處理函數(shù),那么在調(diào)用數(shù)據(jù)訪問(wèn)對(duì)象中與數(shù)據(jù)庫(kù)的操作指令對(duì)應(yīng)的方法時(shí),會(huì)執(zhí)行與該方法對(duì)應(yīng)的模板處理函數(shù)。需要說(shuō)明的是,在面向?qū)ο髴?yīng)用程序中,應(yīng)用程序?qū)ε渲梦募馕鐾旰?,?huì)根據(jù)配置文件中編寫(xiě)的每個(gè)操作語(yǔ)句模板,生成相應(yīng)的接口方法對(duì)象,那么具體地確定操作語(yǔ)句模板的過(guò)程,即為確定操作語(yǔ)句模板對(duì)應(yīng)的接口方法對(duì)象的過(guò)程。為了方便目標(biāo)處理函數(shù)從配置文件中確定對(duì)應(yīng)的操作語(yǔ)句模板,可以在給接口中的方法綁定模板處理函數(shù)時(shí),將模板處理函數(shù)的函數(shù)名命名為對(duì)應(yīng)的操作語(yǔ)句模板的名稱。那么,模板處理函數(shù)即可根據(jù)自身的函數(shù)名,去配置文件中查找相同名稱的操作語(yǔ)句模板。步驟s303:根據(jù)所述操作語(yǔ)句模板和所述操作指令中包含的實(shí)參,得到針對(duì)所述數(shù)據(jù)庫(kù)的操作語(yǔ)句;在從配置文件中確定與操作指令對(duì)應(yīng)的操作語(yǔ)句模板后,可以將所述操作指令中包含的實(shí)參,與所述操作語(yǔ)句模板中對(duì)應(yīng)的形參相關(guān)聯(lián),得到針對(duì)所述數(shù)據(jù)庫(kù)的操作語(yǔ)句。在實(shí)際應(yīng)用中,可以將操作指令中包含的實(shí)參,與所述操作語(yǔ)句模板進(jìn)行參數(shù)綁定,即可得到針對(duì)數(shù)據(jù)庫(kù)的操作語(yǔ)句。步驟s304:根據(jù)所述操作語(yǔ)句,對(duì)所述數(shù)據(jù)庫(kù)執(zhí)行數(shù)據(jù)庫(kù)操作。在得到針對(duì)數(shù)據(jù)庫(kù)的操作語(yǔ)句后,即可利用該操作語(yǔ)句執(zhí)行數(shù)據(jù)庫(kù)操作。需要說(shuō)明的是,如果操作語(yǔ)句模板中實(shí)現(xiàn)的操作語(yǔ)句,具體包括第一操作語(yǔ)句和第二操作語(yǔ)句,那么,可以根據(jù)操作語(yǔ)句模板和操作指令中包含的實(shí)參,得到針對(duì)數(shù)據(jù)庫(kù)的第一操作語(yǔ)句,然后利用得到的第一操作語(yǔ)句和預(yù)設(shè)的第二操作語(yǔ)句,來(lái)執(zhí)行針對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)操作。在執(zhí)行數(shù)據(jù)庫(kù)操作后,在面向?qū)ο蟮膽?yīng)用程序中,當(dāng)數(shù)據(jù)庫(kù)操作為查找類操作時(shí),可以利用從數(shù)據(jù)庫(kù)中查找到的數(shù)據(jù),得到數(shù)據(jù)對(duì)象。進(jìn)而可以利用得到的數(shù)據(jù)對(duì)象,進(jìn)行后續(xù)操作。在進(jìn)行數(shù)據(jù)庫(kù)操作時(shí),如果數(shù)據(jù)庫(kù)中的數(shù)據(jù)表不是最新版本的表,可能導(dǎo)致某些數(shù)據(jù)庫(kù)操作無(wú)法進(jìn)行。那么可以在根據(jù)操作語(yǔ)句,對(duì)數(shù)據(jù)庫(kù)執(zhí)行數(shù)據(jù)庫(kù)操作前,判斷所述操作指令針對(duì)的數(shù)據(jù)庫(kù)的數(shù)據(jù)表是否需要升級(jí),如果數(shù)據(jù)表需要升級(jí),則從配置文件中確定將數(shù)據(jù)表從當(dāng)前版本更新至目標(biāo)版本所需執(zhí)行的升級(jí)操作,并執(zhí)行確定的升級(jí)操作。下面將詳細(xì)描述本申請(qǐng)實(shí)施例提供的數(shù)據(jù)表升級(jí)方法,該方法的實(shí)現(xiàn)流程示意圖如圖4所示,包括下述步驟:步驟s401:接收數(shù)據(jù)表標(biāo)識(shí);數(shù)據(jù)表標(biāo)識(shí)用于對(duì)數(shù)據(jù)表進(jìn)行標(biāo)識(shí),數(shù)據(jù)表標(biāo)識(shí)比如可以是數(shù)據(jù)表的名稱。步驟s402:根據(jù)接收到的數(shù)據(jù)表標(biāo)識(shí),判斷該數(shù)據(jù)表標(biāo)識(shí)對(duì)應(yīng)的數(shù)據(jù)表,在應(yīng)用程序本次啟動(dòng)后,是否已經(jīng)被執(zhí)行過(guò)初始化操作;其中,這里所說(shuō)的初始化操作,指數(shù)據(jù)表在應(yīng)用程序啟動(dòng)后,已經(jīng)被執(zhí)行過(guò)升級(jí)操作或已經(jīng)被確定無(wú)需執(zhí)行升級(jí)操作。在對(duì)數(shù)據(jù)表執(zhí)行完升級(jí)操作,或確定數(shù)據(jù)表無(wú)需執(zhí)行升級(jí)操作后,可以將數(shù)據(jù)表的數(shù)據(jù)表標(biāo)識(shí)記錄在預(yù)定的存儲(chǔ)空間中,該預(yù)定的存儲(chǔ)空間比如可以是內(nèi)存。那么判斷數(shù)據(jù)表標(biāo)識(shí)對(duì)應(yīng)的數(shù)據(jù)表是否已被執(zhí)行過(guò)初始化操作時(shí),便可以查詢預(yù)定的存儲(chǔ)空間中,是否保存有該數(shù)據(jù)表標(biāo)識(shí),如果有,則說(shuō)明該數(shù)據(jù)表標(biāo)識(shí)對(duì)應(yīng)的數(shù)據(jù)表已經(jīng)被執(zhí)行過(guò)初始化操作了。步驟s403:如果數(shù)據(jù)表已被執(zhí)行過(guò)初始化操作,則結(jié)束本次升級(jí)過(guò)程。步驟s404:如果數(shù)據(jù)表未被執(zhí)行過(guò)初始化操作,則判斷數(shù)據(jù)表是否存在。接收到的數(shù)據(jù)表標(biāo)識(shí)是從操作指令中得到的,該數(shù)據(jù)表標(biāo)識(shí)對(duì)應(yīng)的數(shù)據(jù)表并不一定存在,那么可以判定該數(shù)據(jù)表是否已存在于該指令對(duì)應(yīng)的數(shù)據(jù)庫(kù)中。在每次創(chuàng)建表或升級(jí)表后,都可以將數(shù)據(jù)表的數(shù)據(jù)表標(biāo)識(shí)和版本號(hào)記錄到預(yù)設(shè)的數(shù)據(jù)表中,如果預(yù)設(shè)的數(shù)據(jù)表中沒(méi)有記錄某個(gè)數(shù)據(jù)表的版本號(hào),則說(shuō)明該數(shù)據(jù)表不存在。步驟s405:如果數(shù)據(jù)表不存在,則根據(jù)接收到的數(shù)據(jù)表標(biāo)識(shí),新建數(shù)據(jù)表;新建的數(shù)據(jù)表即為與接收到的數(shù)據(jù)表標(biāo)識(shí)對(duì)應(yīng)的數(shù)據(jù)表。步驟s406:在新建數(shù)據(jù)表后,則在預(yù)設(shè)的數(shù)據(jù)表中,記錄該數(shù)據(jù)表的數(shù)據(jù)表標(biāo)識(shí)和版本號(hào);步驟s407:如果數(shù)據(jù)表存在,則根據(jù)接收到的數(shù)據(jù)庫(kù)表標(biāo)識(shí),從預(yù)設(shè)的數(shù)據(jù)表中確定該數(shù)據(jù)表的版本號(hào);步驟s408:判斷確定的數(shù)據(jù)表的版本號(hào),是否小于配置文件中設(shè)定的目標(biāo)版本的版本號(hào);步驟s409:如果不小于,則結(jié)束本次升級(jí)過(guò)程;確定的數(shù)據(jù)表的版本號(hào)如果不小于配置文件中設(shè)定的目標(biāo)版本的版本號(hào),則表明該數(shù)據(jù)庫(kù)當(dāng)前版本已經(jīng)是目標(biāo)版本。步驟s410:如果小于,則判斷該數(shù)據(jù)表是否可以在升級(jí)時(shí)重置;數(shù)據(jù)表可以在升級(jí)時(shí)重置,指可以在升級(jí)時(shí)直接刪除數(shù)據(jù)表,然后新建目標(biāo)版本的數(shù)據(jù)表。在實(shí)際應(yīng)用中,判斷該數(shù)據(jù)表是否可以在升級(jí)時(shí)重置,可以根據(jù)配置文件中的設(shè)置來(lái)確定。步驟s411:如果該數(shù)據(jù)表可以在升級(jí)時(shí)重置,則直接重置該數(shù)據(jù)表,并在預(yù)設(shè)的數(shù)據(jù)表中,記錄該數(shù)據(jù)表的數(shù)據(jù)表標(biāo)識(shí)和版本號(hào),然后結(jié)束本次升級(jí)過(guò)程;步驟s412:如果該數(shù)據(jù)表不可以在升級(jí)時(shí)重置,則從配置文件中確定將所述數(shù)據(jù)表從當(dāng)前版本更新至目標(biāo)版本所需執(zhí)行的升級(jí)操作;開(kāi)發(fā)人員可以預(yù)先在配置文件中,定義將數(shù)據(jù)表從當(dāng)前版本更新至目標(biāo)版本所需執(zhí)行的升級(jí)操作。例如,下述代碼定義了將數(shù)據(jù)表升級(jí)至3.1版本以及升級(jí)至3.2版本時(shí),所需執(zhí)行的升級(jí)操作,其中“toversion”屬性的值,聲明了“upgrade”標(biāo)簽中的升級(jí)操作對(duì)應(yīng)的目標(biāo)版本,“altertable”語(yǔ)句用于在已有的表中添加、修改或刪除列,“${t}”為形參,用于綁定數(shù)據(jù)表名。步驟s413:執(zhí)行從配置文件中確定的升級(jí)操作;步驟s414:判斷升級(jí)是否成功;步驟s415:若升級(jí)操作成功,則在預(yù)設(shè)的數(shù)據(jù)表中,記錄該數(shù)據(jù)表的數(shù)據(jù)表標(biāo)識(shí)和版本號(hào),然后結(jié)束本次升級(jí)過(guò)程;步驟s416:若升級(jí)失敗,則結(jié)束本次升級(jí)過(guò)程。需要說(shuō)明的是,在結(jié)束本次升級(jí)過(guò)程時(shí),可以將數(shù)據(jù)表的數(shù)據(jù)表標(biāo)識(shí)記錄在預(yù)定的存儲(chǔ)空間中,以便后續(xù)可以根據(jù)預(yù)定的存儲(chǔ)空間中記錄的數(shù)據(jù)表標(biāo)識(shí),判斷接收到的數(shù)據(jù)表標(biāo)識(shí)對(duì)應(yīng)的數(shù)據(jù)表,在應(yīng)用程序本次啟動(dòng)后,是否已經(jīng)被執(zhí)行過(guò)初始化操作。本申請(qǐng)?zhí)峁┑臄?shù)據(jù)庫(kù)升級(jí)方法,相對(duì)于現(xiàn)有技術(shù)的數(shù)據(jù)庫(kù)升級(jí)方法,應(yīng)用程序的代碼量大大減少,并且通過(guò)將數(shù)據(jù)表的具體升級(jí)操作保存在配置文件中,減少了應(yīng)用程序的代碼量,進(jìn)而減少了對(duì)源代碼進(jìn)行編譯時(shí)耗費(fèi)的資源。最后編譯生成的目標(biāo)程序的大小也會(huì)小于現(xiàn)有技術(shù)中目標(biāo)程序的大小,進(jìn)而減少了對(duì)存儲(chǔ)空間的占用。這里所說(shuō)的目標(biāo)程序,為通過(guò)編譯過(guò)程生成的計(jì)算機(jī)可執(zhí)行程序,目標(biāo)程序中代碼的形式往往是二進(jìn)制形式。同時(shí),相對(duì)于現(xiàn)有技術(shù)中將數(shù)據(jù)表的版本號(hào)單獨(dú)保存到其它存儲(chǔ)位置,本申請(qǐng)?zhí)峁┑臄?shù)據(jù)庫(kù)升級(jí)方法,通過(guò)將數(shù)據(jù)表的版本號(hào)記錄到預(yù)設(shè)的數(shù)據(jù)表中,來(lái)記錄數(shù)據(jù)表的當(dāng)前版本,數(shù)據(jù)不易丟失,數(shù)據(jù)安全性較高。在實(shí)際應(yīng)用中,某些數(shù)據(jù)庫(kù)操作可能會(huì)期望與其它數(shù)據(jù)庫(kù)操作并發(fā)執(zhí)行,比如,在連續(xù)接收消息時(shí),數(shù)據(jù)庫(kù)會(huì)執(zhí)行大量的消息寫(xiě)入操作,為了避免會(huì)話界面延遲顯示消息,最好在執(zhí)行消息寫(xiě)入操作的同時(shí),并行執(zhí)行讀取消息的數(shù)據(jù)庫(kù)操作。因此,本申請(qǐng)?zhí)峁┑臄?shù)據(jù)庫(kù)操作方法還可以支持對(duì)數(shù)據(jù)庫(kù)的并行操作。本申請(qǐng)實(shí)施例提供的對(duì)數(shù)據(jù)庫(kù)并行操作的方法包括,根據(jù)配置文件中預(yù)先設(shè)定的與操作語(yǔ)句對(duì)應(yīng)的執(zhí)行方式,判斷該操作語(yǔ)句對(duì)應(yīng)的數(shù)據(jù)庫(kù)操作是否允許與其它數(shù)據(jù)庫(kù)操作并行執(zhí)行,在判斷結(jié)果為是,且數(shù)據(jù)庫(kù)主連接被占用時(shí),根據(jù)該操作語(yǔ)句,利用創(chuàng)建的數(shù)據(jù)庫(kù)子連接,對(duì)數(shù)據(jù)庫(kù)執(zhí)行數(shù)據(jù)庫(kù)操作。下面將詳細(xì)描述本申請(qǐng)?zhí)峁┑牟⑿胁僮鲾?shù)據(jù)庫(kù)的方法的具體實(shí)現(xiàn)過(guò)程,其實(shí)現(xiàn)流程示意圖如圖5所示,包括下述步驟:步驟s501:接收針對(duì)數(shù)據(jù)庫(kù)的操作指令;步驟s502:判斷數(shù)據(jù)庫(kù)主連接是否被占用;步驟s503:如果數(shù)據(jù)庫(kù)主連接沒(méi)有被占用,則直接通過(guò)數(shù)據(jù)庫(kù)主連接執(zhí)行數(shù)據(jù)庫(kù)操作;步驟s504:如果數(shù)據(jù)庫(kù)主連接已被占用,則判斷該操作指令對(duì)應(yīng)的數(shù)據(jù)庫(kù)操作是否可并行;所謂可并行,即可以與其它數(shù)據(jù)庫(kù)操作并行執(zhí)行。在實(shí)際應(yīng)用中,某個(gè)數(shù)據(jù)庫(kù)操作是否可并行,可以由開(kāi)發(fā)人員在配置文件中預(yù)先進(jìn)行設(shè)置。當(dāng)應(yīng)用運(yùn)行時(shí),即可通過(guò)配置文件中對(duì)數(shù)據(jù)庫(kù)操作是否可并行的設(shè)置,來(lái)確定某個(gè)數(shù)據(jù)庫(kù)操作是否可以與其它操作并行執(zhí)行。具體在配置文件中設(shè)置某個(gè)數(shù)據(jù)庫(kù)操作是否可并行的方式,可以是在該數(shù)據(jù)庫(kù)操作對(duì)應(yīng)的操作語(yǔ)句模板所在的標(biāo)簽中,通過(guò)定義某個(gè)屬性的值,來(lái)定義該標(biāo)簽中的操作語(yǔ)句模板對(duì)應(yīng)的數(shù)據(jù)庫(kù)操作是否可并行。例如,定義屬性“parallel”,如果該屬性的值是“true”,則該標(biāo)簽中的操作語(yǔ)句模板對(duì)應(yīng)的數(shù)據(jù)庫(kù)操作可以并行,如果該屬性的值是“false”,則該標(biāo)簽中的操作語(yǔ)句模板對(duì)應(yīng)的數(shù)據(jù)庫(kù)操作不可以并行。需要說(shuō)明的是,如果該標(biāo)簽中沒(méi)有“parallel”屬性,則默認(rèn)為該標(biāo)簽中的操作語(yǔ)句模板對(duì)應(yīng)的數(shù)據(jù)庫(kù)操作不可以并行。步驟s505:如果該數(shù)據(jù)庫(kù)操作不可并行,則可以等待數(shù)據(jù)庫(kù)主連接被釋放后,再利用數(shù)據(jù)庫(kù)主連接執(zhí)行數(shù)據(jù)庫(kù)操作;步驟s506:如果該數(shù)據(jù)庫(kù)操作可以并行執(zhí)行,則判斷當(dāng)前是否有空閑的數(shù)據(jù)庫(kù)子連接;本申請(qǐng)實(shí)施例中,數(shù)據(jù)庫(kù)子連接可以是在有需要并行執(zhí)行的數(shù)據(jù)庫(kù)操作時(shí)創(chuàng)建的,當(dāng)并行執(zhí)行的數(shù)據(jù)庫(kù)操作結(jié)束后,為了防止數(shù)據(jù)庫(kù)子連接在沒(méi)有執(zhí)行操作任務(wù)時(shí)耗費(fèi)資源,則可以在數(shù)據(jù)庫(kù)子連接空閑時(shí),將數(shù)據(jù)庫(kù)子連接關(guān)閉。具體關(guān)閉方式可以是,定時(shí)檢測(cè)數(shù)據(jù)庫(kù)子連接的空閑時(shí)長(zhǎng),如果數(shù)據(jù)庫(kù)子連接的空閑時(shí)長(zhǎng)超過(guò)了預(yù)設(shè)的時(shí)間閾值,則關(guān)閉空閑的數(shù)據(jù)庫(kù)子連接。空閑時(shí)長(zhǎng)指數(shù)據(jù)庫(kù)子連接從結(jié)束上次操作的時(shí)刻到當(dāng)前時(shí)刻的時(shí)間長(zhǎng)度。步驟s507:如果沒(méi)有空閑的數(shù)據(jù)庫(kù)子連接,則新建數(shù)據(jù)庫(kù)子連接,并利用新建的數(shù)據(jù)庫(kù)子連接執(zhí)行數(shù)據(jù)庫(kù)操作;對(duì)于一個(gè)以上的并發(fā)操作而言,均可以在判斷主連接被占用,以及沒(méi)有空閑的子連接時(shí),新建數(shù)據(jù)庫(kù)子連接,并利用新建的數(shù)據(jù)庫(kù)子連接執(zhí)行數(shù)據(jù)庫(kù)操作。步驟s508:如果有空閑的數(shù)據(jù)庫(kù)子連接,則直接利用空閑的數(shù)據(jù)庫(kù)子連接執(zhí)行數(shù)據(jù)庫(kù)操作。本申請(qǐng)實(shí)施例中,在初始化操作完成后,執(zhí)行的數(shù)據(jù)庫(kù)操作的具體步驟,請(qǐng)參閱步驟s101~s103,此處不再贅述。需要說(shuō)明的是,這里所說(shuō)的數(shù)據(jù)庫(kù)主連接和數(shù)據(jù)庫(kù)子連接均為數(shù)據(jù)庫(kù)連接,用于為數(shù)據(jù)庫(kù)操作提供操作通道。在現(xiàn)有技術(shù)中,在實(shí)現(xiàn)數(shù)據(jù)庫(kù)接口的并發(fā)調(diào)用功能時(shí),需要開(kāi)發(fā)人員單獨(dú)為每個(gè)并發(fā)調(diào)用數(shù)據(jù)庫(kù)的實(shí)現(xiàn)邏輯編寫(xiě)代碼。當(dāng)需要并發(fā)調(diào)用的操作非常多時(shí),應(yīng)用程序的代碼量會(huì)非常大。而本申請(qǐng)?zhí)峁┑臄?shù)據(jù)庫(kù)接口的并發(fā)調(diào)用方法,可以動(dòng)態(tài)地創(chuàng)建數(shù)據(jù)庫(kù)子連接,無(wú)需開(kāi)發(fā)人員在程序源代碼中為每個(gè)并發(fā)調(diào)用的實(shí)現(xiàn)邏輯編寫(xiě)代碼。那么,源代碼中的代碼數(shù)量會(huì)大大減少,進(jìn)而減少了對(duì)源代碼進(jìn)行編譯時(shí)耗費(fèi)的資源,同時(shí)減小了編譯生成的目標(biāo)程序的大小,減少了對(duì)存儲(chǔ)空間的占用。在實(shí)際應(yīng)用中,為了保證數(shù)據(jù)庫(kù)中數(shù)據(jù)的安全,可以對(duì)存儲(chǔ)到數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行加密。那么,在根據(jù)所述操作語(yǔ)句,對(duì)所述數(shù)據(jù)庫(kù)執(zhí)行數(shù)據(jù)庫(kù)操作前,還可以根據(jù)配置文件中預(yù)設(shè)的加密方式,判斷待存儲(chǔ)的數(shù)據(jù)是否需要進(jìn)行加密操作。在判定結(jié)果為是時(shí),對(duì)待存儲(chǔ)的數(shù)據(jù)執(zhí)行加密操作,并根據(jù)所述操作語(yǔ)句,將加密后的數(shù)據(jù)存儲(chǔ)到所述數(shù)據(jù)庫(kù)中。下面將詳細(xì)描述本申請(qǐng)?zhí)峁┑臄?shù)據(jù)加密的方法的具體實(shí)現(xiàn)過(guò)程,其實(shí)現(xiàn)流程示意圖如圖6所示,包括下述步驟:步驟s601:確定包含待存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)對(duì)象;在面向?qū)ο蟮膽?yīng)用程序中,對(duì)數(shù)據(jù)進(jìn)行接收是以接收數(shù)據(jù)對(duì)象的方式實(shí)現(xiàn)的。數(shù)據(jù)對(duì)象中的屬性的屬性值,即為待存儲(chǔ)的數(shù)據(jù)。步驟s602:確定該數(shù)據(jù)對(duì)象的屬性;步驟s603:判斷該屬性是否為加密屬性;在實(shí)際應(yīng)用中,可以在配置文件中,預(yù)先定義期望被加密的數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)對(duì)象的對(duì)象名,以及該對(duì)象的屬性名。已經(jīng)在配置文件中定義的、期望被加密的數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)對(duì)象的屬性,即為加密屬性。那么,在執(zhí)行數(shù)據(jù)存儲(chǔ)操作前,便可以根據(jù)配置文件的定義,確定可以對(duì)數(shù)據(jù)對(duì)象中的數(shù)據(jù)進(jìn)行加密。步驟s604:如果該屬性不是加密屬性,則將該數(shù)據(jù)對(duì)象中的數(shù)據(jù)綁定給操作語(yǔ)句模板,然后執(zhí)行數(shù)據(jù)存儲(chǔ)操作;步驟s605:如果該屬性是加密屬性,則判斷配置文件中是否定義了針對(duì)該屬性的數(shù)據(jù)的加密方式;對(duì)于不同屬性的數(shù)據(jù),對(duì)其進(jìn)行加密的加密方式可能會(huì)不同,那么,可以在配置文件中,預(yù)先定義針對(duì)某屬性的數(shù)據(jù)的加密方式。步驟s606:如果配置文件中沒(méi)有定義針對(duì)該屬性的加密方式,則使用默認(rèn)加密方式對(duì)數(shù)據(jù)執(zhí)行加密操作;所謂默認(rèn)加密方式,為預(yù)先設(shè)定的,用于對(duì)期望進(jìn)行加密,但是沒(méi)有在配置文件中定義加密方式的數(shù)據(jù)進(jìn)行加密的方式。步驟s607:如果配置文件中定義了針對(duì)該屬性的加密方式,則根據(jù)配置文件中定義的加密方式對(duì)數(shù)據(jù)執(zhí)行加密操作;步驟s608:將加密后的數(shù)據(jù)賦值給操作語(yǔ)句模板,并執(zhí)行數(shù)據(jù)存儲(chǔ)操作。當(dāng)從數(shù)據(jù)庫(kù)中獲取到加密的數(shù)據(jù)時(shí),可以對(duì)獲取到的加密的數(shù)據(jù)進(jìn)行解密。那么當(dāng)操作語(yǔ)句為查找類操作語(yǔ)句時(shí),在根據(jù)操作語(yǔ)句,對(duì)數(shù)據(jù)庫(kù)執(zhí)行數(shù)據(jù)庫(kù)操作后,還可以根據(jù)配置文件中預(yù)設(shè)的解密方式,判斷查找到的數(shù)據(jù)是否需要進(jìn)行解密操作,在判斷結(jié)果為是時(shí),對(duì)查找到的數(shù)據(jù)執(zhí)行解密操作。具體數(shù)據(jù)解密過(guò)程的實(shí)現(xiàn)流程示意圖如圖7所示,包括下述步驟:步驟s701:從數(shù)據(jù)庫(kù)中讀取待賦值給數(shù)據(jù)對(duì)象的數(shù)據(jù);步驟s702:確定待賦值的數(shù)據(jù)對(duì)象的屬性;步驟s703:判斷該屬性是否為加密屬性;步驟s704:如果該屬性不是加密屬性,則將讀取到的數(shù)據(jù)賦值給待賦值的數(shù)據(jù)對(duì)象;步驟s705:如果該屬性是加密屬性,則判斷配置文件中是否定義了針對(duì)該屬性的數(shù)據(jù)解密方式;對(duì)于不同屬性的數(shù)據(jù),對(duì)其進(jìn)行解密的解密方式可能會(huì)不同,那么,可以在配置文件中,預(yù)先定義針對(duì)某屬性的數(shù)據(jù)的解密方式。步驟s706:如果配置文件中沒(méi)有定義針對(duì)該屬性的解密方式,則使用默認(rèn)解密方式對(duì)數(shù)據(jù)執(zhí)行解密操作;所謂默認(rèn)解密方式,為預(yù)先設(shè)定的,用于對(duì)期望進(jìn)行解密,但是沒(méi)有在配置文件中定義解密方式的數(shù)據(jù)進(jìn)行解密的方式。步驟s707:如果配置文件中定義了針對(duì)該屬性的解密方式,則根據(jù)配置文件中定義的解密方式對(duì)數(shù)據(jù)執(zhí)行解密操作;步驟s708:將解密后的數(shù)據(jù),賦值給數(shù)據(jù)對(duì)象。本申請(qǐng)實(shí)施例提供的加密方式,可以在數(shù)據(jù)庫(kù)接口中實(shí)現(xiàn),在對(duì)待加密數(shù)據(jù)進(jìn)行存儲(chǔ)時(shí),無(wú)需在調(diào)用數(shù)據(jù)庫(kù)接口前自行加密;同樣在對(duì)數(shù)據(jù)庫(kù)中的加密數(shù)據(jù)進(jìn)行讀取時(shí),無(wú)需在調(diào)用數(shù)據(jù)庫(kù)接口后自行解密,提高了對(duì)數(shù)據(jù)進(jìn)行加密或解密的效率。此外,相對(duì)于相應(yīng)技術(shù)中,在進(jìn)行加密或解密時(shí)需要使用額外的第三方數(shù)據(jù)庫(kù)的方式,減少了對(duì)資源的消耗。同時(shí),相對(duì)于現(xiàn)有技術(shù)中對(duì)數(shù)據(jù)庫(kù)全庫(kù)加密的方式,提高了數(shù)據(jù)庫(kù)的訪問(wèn)效率。本申請(qǐng)實(shí)施例中,通過(guò)將數(shù)據(jù)庫(kù)操作的具體實(shí)現(xiàn)保存在配置文件中,在調(diào)用數(shù)據(jù)庫(kù)接口時(shí),動(dòng)態(tài)調(diào)用配置文件中數(shù)據(jù)庫(kù)接口的實(shí)現(xiàn)方法,那么應(yīng)用程序的源代碼的量會(huì)大大減少。由于配置文件無(wú)需編譯,那么在對(duì)源代碼進(jìn)行編譯時(shí),便減少了資源的耗費(fèi)。需要說(shuō)明的是,本申請(qǐng)中所說(shuō)的編譯,為將利用源代碼編寫(xiě)的源程序轉(zhuǎn)換為計(jì)算機(jī)可執(zhí)行的目標(biāo)程序的過(guò)程。同時(shí),對(duì)于數(shù)據(jù)庫(kù)開(kāi)發(fā)人員而言,在期望修改數(shù)據(jù)庫(kù)的具體實(shí)現(xiàn)方法時(shí),可以通過(guò)修改配置文件,來(lái)修改數(shù)據(jù)庫(kù)的具體實(shí)現(xiàn)方法。由于修改過(guò)程中沒(méi)有對(duì)程序源代碼進(jìn)行修改,無(wú)需在修改后重新編譯應(yīng)用程序源代碼,進(jìn)一步節(jié)省了資源。同時(shí),可以對(duì)目標(biāo)程序中的數(shù)據(jù)庫(kù)接口的具體實(shí)現(xiàn)方法進(jìn)行動(dòng)態(tài)修改。以上為本申請(qǐng)實(shí)施例提供的創(chuàng)建數(shù)據(jù)庫(kù)接口的方法和數(shù)據(jù)庫(kù)操作方法,基于同樣的思路,本申請(qǐng)實(shí)施例還提供相應(yīng)的創(chuàng)建數(shù)據(jù)庫(kù)接口的裝置,如圖8所示,本申請(qǐng)實(shí)施例還提供相應(yīng)的數(shù)據(jù)庫(kù)操作裝置,如圖9所示。圖8為本申請(qǐng)實(shí)施例提供的創(chuàng)建數(shù)據(jù)庫(kù)接口的裝置的結(jié)構(gòu)示意圖,具體包括:確定單元801,從預(yù)設(shè)的配置文件中確定用于創(chuàng)建數(shù)據(jù)庫(kù)接口的至少一個(gè)操作語(yǔ)句模板;創(chuàng)建單元802,根據(jù)所述至少一個(gè)操作語(yǔ)句模板,創(chuàng)建所述操作語(yǔ)句模板對(duì)應(yīng)的數(shù)據(jù)庫(kù)接口,所述數(shù)據(jù)庫(kù)接口用于在接收到操作指令時(shí)確定操作語(yǔ)句模板并根據(jù)所述操作語(yǔ)句模板對(duì)數(shù)據(jù)庫(kù)執(zhí)行操作。在一種實(shí)施方式中,所述創(chuàng)建單元802,針對(duì)確定的至少一個(gè)操作語(yǔ)句模板,執(zhí)行以下操作:確定與操作語(yǔ)句模板對(duì)應(yīng)的模板處理函數(shù),所述模板處理函數(shù)用于根據(jù)所述操作語(yǔ)句模板和實(shí)參得到操作語(yǔ)句;根據(jù)確定的操作語(yǔ)句模板,以及與該操作語(yǔ)句模板對(duì)應(yīng)的模板處理函數(shù),創(chuàng)建所述操作語(yǔ)句模板對(duì)應(yīng)的數(shù)據(jù)庫(kù)接口。在一種實(shí)施方式中,所述創(chuàng)建單元802,確定所述操作語(yǔ)句模板中包含的形參;根據(jù)所述操作語(yǔ)句模板中的形參,確定所述操作語(yǔ)句模板對(duì)應(yīng)的模板處理函數(shù)。圖9為本申請(qǐng)實(shí)施例提供的數(shù)據(jù)庫(kù)操作裝置的結(jié)構(gòu)示意圖,具體包括:接收單元901,接收針對(duì)數(shù)據(jù)庫(kù)的操作指令;確定單元902,根據(jù)預(yù)先創(chuàng)建的數(shù)據(jù)庫(kù)接口,從配置文件中確定與所述操作指令對(duì)應(yīng)的操作語(yǔ)句模板。所述數(shù)據(jù)庫(kù)接口,是通過(guò)本申請(qǐng)?zhí)峁┑膭?chuàng)建數(shù)據(jù)庫(kù)接口的方法創(chuàng)建的;獲得單元903,根據(jù)所述操作語(yǔ)句模板和所述操作指令中包含的實(shí)參,得到針對(duì)所述數(shù)據(jù)庫(kù)的操作語(yǔ)句;執(zhí)行單元904,根據(jù)所述操作語(yǔ)句,對(duì)所述數(shù)據(jù)庫(kù)執(zhí)行數(shù)據(jù)庫(kù)操作。在一種實(shí)施方式中,確定單元902,根據(jù)預(yù)先生成的數(shù)據(jù)庫(kù)接口,確定與所述操作指令對(duì)應(yīng)的模板處理函數(shù);從配置文件中確定與確定的模板處理函數(shù)對(duì)應(yīng)的操作語(yǔ)句模板。在一種實(shí)施方式中,獲得單元903,將所述操作指令中包含的實(shí)參,與所述操作語(yǔ)句模板中對(duì)應(yīng)的形參相關(guān)聯(lián),得到針對(duì)所述數(shù)據(jù)庫(kù)的操作語(yǔ)句。在一種實(shí)施方式中,所述裝置還包括升級(jí)單元905,在判定所述操作指令針對(duì)的數(shù)據(jù)庫(kù)的數(shù)據(jù)表需要升級(jí)時(shí),從配置文件中確定將所述數(shù)據(jù)表從當(dāng)前版本更新至目標(biāo)版本所需執(zhí)行的升級(jí)操作;執(zhí)行所述升級(jí)操作。在一種實(shí)施方式中,所述操作語(yǔ)句具體包括第一操作語(yǔ)句和第二操作語(yǔ)句,其中,所述第一操作語(yǔ)句為數(shù)據(jù)庫(kù)操作中個(gè)性化的操作語(yǔ)句,所述第二操作語(yǔ)句為數(shù)據(jù)庫(kù)操作中必要且通用的操作語(yǔ)句;獲得單元903,根據(jù)所述操作語(yǔ)句模板和所述操作指令中包含的實(shí)參,得到針對(duì)所述數(shù)據(jù)庫(kù)的第一操作語(yǔ)句;執(zhí)行單元904,利用所述第一操作語(yǔ)句和預(yù)設(shè)的第二操作語(yǔ)句,執(zhí)行針對(duì)所述數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)操作。在一種實(shí)施方式中,所述第一操作語(yǔ)句包括查找類操作語(yǔ)句、存儲(chǔ)類操作語(yǔ)句、刪除類操作語(yǔ)句中的至少一種或者多種:所述第二操作語(yǔ)句包括以下至少一種或者多種:數(shù)據(jù)庫(kù)開(kāi)啟語(yǔ)句;數(shù)據(jù)庫(kù)關(guān)閉語(yǔ)句。在一種實(shí)施方式中,所述裝置還包括加密單元906,當(dāng)所述操作語(yǔ)句為存儲(chǔ)類操作語(yǔ)句時(shí),在根據(jù)所述操作語(yǔ)句,對(duì)所述數(shù)據(jù)庫(kù)執(zhí)行數(shù)據(jù)庫(kù)操作前,根據(jù)配置文件中預(yù)設(shè)的加密方式,判斷待存儲(chǔ)的數(shù)據(jù)是否需要進(jìn)行加密操作;執(zhí)行單元904,在判定結(jié)果為是時(shí),對(duì)待存儲(chǔ)的數(shù)據(jù)執(zhí)行加密操作,并根據(jù)所述操作語(yǔ)句,將加密后的數(shù)據(jù)存儲(chǔ)到所述數(shù)據(jù)庫(kù)中。在一種實(shí)施方式中,所述裝置還包括解密單元907,當(dāng)所述操作語(yǔ)句為查找類操作語(yǔ)句時(shí),在根據(jù)所述操作語(yǔ)句,對(duì)所述數(shù)據(jù)庫(kù)執(zhí)行數(shù)據(jù)庫(kù)操作后,根據(jù)配置文件中預(yù)設(shè)的解密方式,判斷查找到的數(shù)據(jù)是否需要進(jìn)行解密操作;在判斷結(jié)果為是時(shí),對(duì)查找到的數(shù)據(jù)執(zhí)行解密操作。在一種實(shí)施方式中,執(zhí)行單元904,根據(jù)配置文件中預(yù)先設(shè)定的與所述操作語(yǔ)句對(duì)應(yīng)的執(zhí)行方式,判斷所述操作語(yǔ)句對(duì)應(yīng)的數(shù)據(jù)庫(kù)操作是否允許與其它數(shù)據(jù)庫(kù)操作并行執(zhí)行;在判斷結(jié)果為是,且數(shù)據(jù)庫(kù)主連接被占用時(shí),根據(jù)所述操作語(yǔ)句,利用創(chuàng)建的數(shù)據(jù)庫(kù)子連接,對(duì)所述數(shù)據(jù)庫(kù)執(zhí)行數(shù)據(jù)庫(kù)操作。在一種實(shí)施方式中,所述裝置還包括關(guān)閉單元908,當(dāng)檢測(cè)到所述數(shù)據(jù)庫(kù)子連接的空閑時(shí)長(zhǎng)超過(guò)預(yù)設(shè)的時(shí)長(zhǎng)閾值時(shí),關(guān)閉所述數(shù)據(jù)庫(kù)子連接。在一種實(shí)施方式中,所述數(shù)據(jù)庫(kù)接口為面向?qū)ο蟮臄?shù)據(jù)庫(kù)接口。在一種實(shí)施方式中,數(shù)據(jù)對(duì)象獲得單元,當(dāng)所述數(shù)據(jù)庫(kù)操作為查找操作時(shí),在對(duì)所述數(shù)據(jù)庫(kù)執(zhí)行數(shù)據(jù)庫(kù)操作后,利用從所述數(shù)據(jù)庫(kù)中查找到的數(shù)據(jù),得到數(shù)據(jù)對(duì)象。本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤(pán)存儲(chǔ)器、cd-rom、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來(lái)描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過(guò)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。在一個(gè)典型的配置中,計(jì)算設(shè)備包括一個(gè)或多個(gè)處理器(cpu)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。內(nèi)存可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲(chǔ)器,隨機(jī)存取存儲(chǔ)器(ram)和/或非易失性內(nèi)存等形式,如只讀存儲(chǔ)器(rom)或閃存(flashram)。內(nèi)存是計(jì)算機(jī)可讀介質(zhì)的示例。計(jì)算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動(dòng)和非可移動(dòng)媒體可以由任何方法或技術(shù)來(lái)實(shí)現(xiàn)信息存儲(chǔ)。信息可以是計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計(jì)算機(jī)的存儲(chǔ)介質(zhì)的例子包括,但不限于相變內(nèi)存(pram)、靜態(tài)隨機(jī)存取存儲(chǔ)器(sram)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dram)、其他類型的隨機(jī)存取存儲(chǔ)器(ram)、只讀存儲(chǔ)器(rom)、電可擦除可編程只讀存儲(chǔ)器(eeprom)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤(pán)只讀存儲(chǔ)器(cd-rom)、數(shù)字多功能光盤(pán)(dvd)或其他光學(xué)存儲(chǔ)、磁盒式磁帶,磁帶磁磁盤(pán)存儲(chǔ)或其他磁性存儲(chǔ)設(shè)備或任何其他非傳輸介質(zhì),可用于存儲(chǔ)可以被計(jì)算設(shè)備訪問(wèn)的信息。按照本文中的界定,計(jì)算機(jī)可讀介質(zhì)不包括暫存電腦可讀媒體(transitorymedia),如調(diào)制的數(shù)據(jù)信號(hào)和載波。還需要說(shuō)明的是,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、商品或者設(shè)備不僅包括那些要素,而且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、商品或者設(shè)備所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過(guò)程、方法、商品或者設(shè)備中還存在另外的相同要素。本領(lǐng)域技術(shù)人員應(yīng)明白,本申請(qǐng)的實(shí)施例可提供為方法、系統(tǒng)或計(jì)算機(jī)程序產(chǎn)品。因此,本申請(qǐng)可采用完全硬件實(shí)施例、完全軟件實(shí)施例或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本申請(qǐng)可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤(pán)存儲(chǔ)器、cd-rom、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。以上所述僅為本申請(qǐng)的實(shí)施例而已,并不用于限制本申請(qǐng)。對(duì)于本領(lǐng)域技術(shù)人員來(lái)說(shuō),本申請(qǐng)可以有各種更改和變化。凡在本申請(qǐng)的精神和原理之內(nèi)所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本申請(qǐng)的權(quán)利要求范圍之內(nèi)。當(dāng)前第1頁(yè)12當(dāng)前第1頁(yè)12