專利名稱:一種數(shù)據(jù)庫自動(dòng)轉(zhuǎn)換系統(tǒng)及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及信息技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)庫自動(dòng)轉(zhuǎn)換系統(tǒng)及方法。
背景技術(shù):
在產(chǎn)品開發(fā)中,常常會(huì)涉及到需要進(jìn)行大量數(shù)據(jù)處理的軟件產(chǎn)品,因此,在該類產(chǎn)品的開發(fā)過程中,往往都要進(jìn)行數(shù)據(jù)庫及表格設(shè)計(jì),以將數(shù)據(jù)保存在數(shù)據(jù)庫表格中,從而方便進(jìn)行增刪改查等操作。以C/C++軟件開發(fā)為例,一般根據(jù)設(shè)計(jì)文檔或數(shù)據(jù)庫表格及字段進(jìn)行同步編寫相應(yīng)的數(shù)據(jù)結(jié)構(gòu)體,以便進(jìn)行數(shù)據(jù)操作。這樣不僅工作量大,而且很容易出錯(cuò);并且在后期修改數(shù)據(jù)庫或結(jié)構(gòu)體時(shí)要嚴(yán)格保持?jǐn)?shù)據(jù)結(jié)構(gòu)體的一致,因此需要逐表逐字段的對應(yīng),否則數(shù)據(jù)庫表格與結(jié)構(gòu)體對應(yīng)不上,軟件就會(huì)出錯(cuò)。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例的目的是根據(jù)軟件產(chǎn)品開發(fā)中只能通過手工編寫相應(yīng)的數(shù)據(jù)結(jié)構(gòu)體導(dǎo)致工作量大且易出錯(cuò)的現(xiàn)狀,提供一種數(shù)據(jù)庫自動(dòng)轉(zhuǎn)換系統(tǒng)及方法,利用數(shù)據(jù)庫引擎, 分析數(shù)據(jù)表格及字段,根據(jù)其中的規(guī)律,自動(dòng)編寫對應(yīng)的結(jié)構(gòu)體名稱、類型及注釋,這樣可以自動(dòng)生成對應(yīng)的結(jié)構(gòu)體頭文件。利用本軟件及方法,只需要維護(hù)數(shù)據(jù)庫表格及字段的更新,對應(yīng)的頭文件可自動(dòng)進(jìn)行更新,重新編譯軟件即可;而不用逐表逐字段的去編寫頭文件。為了達(dá)到上述發(fā)明目的,本發(fā)明實(shí)施例提出的一種數(shù)據(jù)庫自動(dòng)轉(zhuǎn)換系統(tǒng)是通過以下的技術(shù)方案實(shí)現(xiàn)的一種數(shù)據(jù)庫自動(dòng)轉(zhuǎn)換系統(tǒng),所述系統(tǒng)包括數(shù)據(jù)庫連接模塊,用于根據(jù)數(shù)據(jù)庫IP地址、用戶名和/或密碼連接數(shù)據(jù)庫;數(shù)據(jù)庫表分析模塊,用于查詢分析指定數(shù)據(jù)庫的各表結(jié)構(gòu)信息;結(jié)構(gòu)信息生成模塊,用于根據(jù)所述各表的結(jié)構(gòu)信息生成描述結(jié)構(gòu)體的各字段類型及其大小信息;結(jié)構(gòu)體生成模塊,用于根據(jù)所述結(jié)構(gòu)體的字段及大小信息,生成各表對應(yīng)的數(shù)據(jù)結(jié)構(gòu)體。進(jìn)一步優(yōu)選地,所述系統(tǒng)還包括文件輸出模塊,用于生成最終的結(jié)構(gòu)信息文件和結(jié)構(gòu)體文件。進(jìn)一步優(yōu)選地,所述結(jié)構(gòu)體文件還包括相應(yīng)的類型聲明信息、注釋信息和頭文件 fn息ο進(jìn)一步優(yōu)選地,所述表結(jié)構(gòu)信息包括表名稱、表描述、字段名稱、字段類型、字段大小和/或字段描述。進(jìn)一步優(yōu)選地,所述結(jié)構(gòu)體的各字段類型包括結(jié)構(gòu)體名、結(jié)構(gòu)體描述、變量名稱、 變量類型、變量大小和/或變量描述。
為了實(shí)現(xiàn)前述發(fā)明目的,本發(fā)明實(shí)施例還提出了一種數(shù)據(jù)庫自動(dòng)轉(zhuǎn)換方法,所述方法是通過以下技術(shù)方案實(shí)現(xiàn)的一種數(shù)據(jù)庫自動(dòng)轉(zhuǎn)換方法,所述方法包括以下步驟根據(jù)系統(tǒng)提供的數(shù)據(jù)庫IP、用戶名和密碼連接數(shù)據(jù)庫;根據(jù)數(shù)據(jù)庫提供的查詢功能,查詢指定數(shù)據(jù)庫的所有表結(jié)構(gòu)信息,獲取表格及字段信息;根據(jù)所述表的結(jié)構(gòu)信息,生成相應(yīng)的結(jié)構(gòu)體的各字段類型及其大小信息;根據(jù)所述結(jié)構(gòu)體的各字段類型及其大小信息,生成相應(yīng)的數(shù)據(jù)表結(jié)構(gòu)體。進(jìn)一步優(yōu)選地,所述方法還包括進(jìn)行數(shù)據(jù)表及視圖的遍歷,完成全數(shù)據(jù)庫表結(jié)構(gòu)的轉(zhuǎn)換。進(jìn)一步優(yōu)選地,所述方法還包括生成和輸出結(jié)構(gòu)信息和結(jié)構(gòu)體頭文件。進(jìn)一步優(yōu)選地,所述文件還包括類型聲明文件、注釋信息和頭文件信息。進(jìn)一步優(yōu)選地,所述表結(jié)構(gòu)信息包括表名稱、表描述、字段名稱、字段類型、字段大小和/或字段描述。進(jìn)一步優(yōu)選地,所述結(jié)構(gòu)體的各字段類型包括結(jié)構(gòu)體名、結(jié)構(gòu)體描述、變量名稱、 變量類型、變量大小和/或變量描述。與現(xiàn)有技術(shù)相比,本發(fā)明實(shí)施例提供的數(shù)據(jù)庫自動(dòng)轉(zhuǎn)換系統(tǒng)及方法利用數(shù)據(jù)庫引擎,分析數(shù)據(jù)表格及字段信息,根據(jù)其中的規(guī)律,自動(dòng)編寫對應(yīng)的結(jié)構(gòu)體名稱、類型及注釋, 這樣可以快速自動(dòng)生成對應(yīng)的結(jié)構(gòu)體頭文件,便于維護(hù)減少人力成本;利用本發(fā)明的技術(shù)方案,只需要維護(hù)數(shù)據(jù)庫表格及字段的更新,對應(yīng)的頭文件可自動(dòng)進(jìn)行更新,重新編譯軟件即可,可保證代碼的規(guī)范性;而不用逐表逐字段的去編寫頭文件,保證系統(tǒng)的正確性。
通過下面結(jié)合附圖對其示例性實(shí)施例進(jìn)行的描述,本發(fā)明上述特征和優(yōu)點(diǎn)將會(huì)變得更加清楚和容易理解。圖1為本發(fā)明實(shí)施例1 一種數(shù)據(jù)庫自動(dòng)轉(zhuǎn)換系統(tǒng)的系統(tǒng)功能模塊圖;圖2為本發(fā)明實(shí)施例2另一種數(shù)據(jù)庫自動(dòng)轉(zhuǎn)換系統(tǒng)的系統(tǒng)功能模塊圖;圖3為本發(fā)明實(shí)施例3 —種數(shù)據(jù)庫自動(dòng)轉(zhuǎn)換方法的流程圖。
具體實(shí)施例方式下面結(jié)合附圖對本發(fā)明作進(jìn)一步詳細(xì)說明。如圖1所示,為本發(fā)明實(shí)施例1 一種數(shù)據(jù)庫自動(dòng)轉(zhuǎn)換系統(tǒng),所述系統(tǒng)包括數(shù)據(jù)庫連接模塊,用于根據(jù)數(shù)據(jù)庫IP地址、用戶名和/或密碼連接數(shù)據(jù)庫;數(shù)據(jù)庫表分析模塊,用于查詢分析指定數(shù)據(jù)庫的各表結(jié)構(gòu)信息;結(jié)構(gòu)信息生成模塊,用于根據(jù)所述各表的結(jié)構(gòu)信息生成描述結(jié)構(gòu)體的各字段類型及其大小信息;結(jié)構(gòu)體生成模塊,用于根據(jù)所述結(jié)構(gòu)體的字段及大小信息,生成各表對應(yīng)的數(shù)據(jù)結(jié)構(gòu)體。進(jìn)一步優(yōu)選地,所述表結(jié)構(gòu)信息包括表名稱、表描述、字段名稱、字段類型、字段大小和/或字段描述。進(jìn)一步優(yōu)選地,所述結(jié)構(gòu)體的各字段類型包括結(jié)構(gòu)體名、結(jié)構(gòu)體描述、變量名稱、 變量類型、變量大小和/或變量描述。本發(fā)明一優(yōu)選的實(shí)施例如下操作系統(tǒng)采用Windows XP或Linux,開發(fā)環(huán)境采用 C/C++,數(shù)據(jù)庫環(huán)境采用MySQL或Oracle等數(shù)據(jù)庫,數(shù)據(jù)庫操作方式采用ODBC,輸出文件的格式標(biāo)準(zhǔn)C頭文件,用來支持Iinux或windows跨平臺(tái)開發(fā)環(huán)境使用。本發(fā)明所屬領(lǐng)域的一般技術(shù)人員可以知道,本發(fā)明的技術(shù)方案可在windows或Iinux系統(tǒng)中實(shí)現(xiàn),還根據(jù)實(shí)際情況進(jìn)行選擇其它操作系統(tǒng),本發(fā)明不限制實(shí)現(xiàn)的操作系統(tǒng)類型以及數(shù)據(jù)庫類型和數(shù)據(jù)庫操作方式。如圖1所示,是本發(fā)明實(shí)施例數(shù)據(jù)轉(zhuǎn)換系統(tǒng)的功能模塊圖,以上述優(yōu)選的實(shí)施例為例,該數(shù)據(jù)轉(zhuǎn)換系統(tǒng)包括如下模塊數(shù)據(jù)庫連接模塊100、數(shù)據(jù)表結(jié)構(gòu)分析模塊102、結(jié)構(gòu)信息生成模塊104、結(jié)構(gòu)體生成模塊106。所述數(shù)據(jù)庫連接模塊100用于連接數(shù)據(jù)庫,根據(jù)數(shù)據(jù)庫IP地址、用戶名和密碼連接數(shù)據(jù)庫,同時(shí)還需要知道數(shù)據(jù)庫的驅(qū)動(dòng)和連接方式等等,連接時(shí)要處理重連機(jī)制以及數(shù)據(jù)庫字符集等信息,以確保連接的穩(wěn)定性和準(zhǔn)確性,避免出現(xiàn)亂碼等問題。所述數(shù)據(jù)庫表分析模塊102用于分析表結(jié)構(gòu)信息,即用于分析指定數(shù)據(jù)庫的各表結(jié)構(gòu)信息,根據(jù)PL/SQL提供的功能,查詢?nèi)康臄?shù)據(jù)表名稱、表的字段名稱、字段類型、唯一性、外鍵、缺省值和說明等信息。所述結(jié)構(gòu)信息生成模塊104用于生成表對應(yīng)的結(jié)構(gòu)信息,即用于生成描述結(jié)構(gòu)體的各字段類型及大小等信息,其字段大小說明便于內(nèi)部使用時(shí)可根據(jù)此結(jié)構(gòu)自動(dòng)分配對應(yīng)大小的內(nèi)存空間;既可有效利用內(nèi)存空間也可避免出現(xiàn)內(nèi)存地址異常。所述結(jié)構(gòu)體生成模塊106用于生成表對應(yīng)的數(shù)據(jù)結(jié)構(gòu)體,結(jié)構(gòu)體對應(yīng)了最終生成的C結(jié)構(gòu)體信息,使數(shù)據(jù)庫表結(jié)構(gòu)可以與C結(jié)構(gòu)體一一對應(yīng)。如字段類型轉(zhuǎn)換方式為
如 UNSIGNED-> unsigned整型數(shù)會(huì)加上有符號(hào)和無符號(hào)前
BIGINT->INT64
VARCHAR->char
CHAR->char
VARBINARY->char [],會(huì)有長度信息
BINARY->char [],會(huì)有長度信息
INTFGER->int
ENUM ->int
SMALLINT ->short
DATETIME ->unsigned int
L0NGBL0B ->void *
FLOAT ->float
DOUBLE ->double
進(jìn)一步優(yōu)選地,所述系統(tǒng)還包括
文件輸出模塊,用于生成最終的結(jié)構(gòu)信息文件和結(jié)構(gòu)體文件。
進(jìn)一步優(yōu)選地,所述結(jié)構(gòu)體文件還包括相應(yīng)的類型聲明信息、注釋信息和頭文件 fn息ο如圖2所示,所述文件輸出模塊108用于生成最終的結(jié)構(gòu)信息文件和結(jié)構(gòu)體文件, 這個(gè)是本系統(tǒng)的輸出,文件中即包括結(jié)構(gòu)信息和結(jié)構(gòu)體文件,也包括相應(yīng)的注釋信息以及必要的C/C++頭文件信息,即根據(jù)C/C++語言格式要求,完成結(jié)構(gòu)信息及結(jié)構(gòu)體的輸出;文件中不僅包括必要的信息,還包括類型聲明文件以及正常c/c++語言要求的如#ifndef、 #define、pack(1) ·€>§、。以一個(gè)實(shí)際系統(tǒng)中的表格生成結(jié)構(gòu)體信息的實(shí)際例子進(jìn)行說明Department_tbl 部門表如下
權(quán)利要求
1.一種數(shù)據(jù)庫自動(dòng)轉(zhuǎn)換系統(tǒng),其特征在于,所述系統(tǒng)包括數(shù)據(jù)庫連接模塊,用于根據(jù)數(shù)據(jù)庫IP地址、用戶名和/或密碼連接數(shù)據(jù)庫; 數(shù)據(jù)庫表分析模塊,用于查詢分析指定數(shù)據(jù)庫的各表結(jié)構(gòu)信息; 結(jié)構(gòu)信息生成模塊,用于根據(jù)所述各表的結(jié)構(gòu)信息生成描述結(jié)構(gòu)體的各字段類型及其大小信息;結(jié)構(gòu)體生成模塊,用于根據(jù)所述結(jié)構(gòu)體的字段及大小信息,生成各表對應(yīng)的數(shù)據(jù)結(jié)構(gòu)體。
2.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括 文件輸出模塊,用于生成最終的結(jié)構(gòu)信息文件和結(jié)構(gòu)體文件。
3.根據(jù)權(quán)利要求2所述的系統(tǒng),其特征在于,所述結(jié)構(gòu)體文件還包括相應(yīng)的類型聲明信息、注釋信息和頭文件信息。
4.根據(jù)權(quán)利要求1至3任意一項(xiàng)所述的系統(tǒng),其特征在于,所述表結(jié)構(gòu)信息包括表名稱、表描述、字段名稱、字段類型、字段大小和/或字段描述。
5.根據(jù)權(quán)利要求1至4任意一項(xiàng)所述的系統(tǒng),其特征在于,所述結(jié)構(gòu)體的各字段類型包括結(jié)構(gòu)體名、結(jié)構(gòu)體描述、變量名稱、變量類型、變量大小和/或變量描述。
6.一種數(shù)據(jù)庫自動(dòng)轉(zhuǎn)換方法,其特征在于,所述方法包括以下步驟 根據(jù)系統(tǒng)提供的數(shù)據(jù)庫IP、用戶名和密碼連接數(shù)據(jù)庫;根據(jù)數(shù)據(jù)庫提供的查詢功能,查詢指定數(shù)據(jù)庫的所有表結(jié)構(gòu)信息,獲取表格及字段信息;根據(jù)所述表結(jié)構(gòu)信息,生成為相應(yīng)的結(jié)構(gòu)體的各字段類型及其大小信息; 根據(jù)所述結(jié)構(gòu)體的各字段類型及其大小信息,生成相應(yīng)的數(shù)據(jù)表結(jié)構(gòu)體。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述方法還包括生成和輸出結(jié)構(gòu)信息和結(jié)構(gòu)體頭文件,其中,所述文件還包括類型聲明文件、注釋信息和頭文件信息。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述文件還包括類型聲明文件、注釋信息和頭文件信息。
9.根據(jù)權(quán)利要求6至8任意一項(xiàng)所述的方法,其特征在于,所述表結(jié)構(gòu)信息包括表名稱、表描述、字段名稱、字段類型、字段大小和/或字段描述。
10.根據(jù)權(quán)利要求6至9任意一項(xiàng)所述的方法,其特征在于,所述結(jié)構(gòu)體的各字段類型包括結(jié)構(gòu)體名、結(jié)構(gòu)體描述、變量名稱、變量類型、變量大小和/或變量描述。
全文摘要
本發(fā)明公開了一種數(shù)據(jù)庫自動(dòng)轉(zhuǎn)換系統(tǒng)和方法,所述系統(tǒng)包括數(shù)據(jù)庫連接模塊,用于根據(jù)數(shù)據(jù)庫IP地址、用戶名和/或密碼連接數(shù)據(jù)庫;數(shù)據(jù)庫表分析模塊,用于查詢分析指定數(shù)據(jù)庫的各表結(jié)構(gòu)信息;結(jié)構(gòu)信息生成模塊,用于根據(jù)所述各表的結(jié)構(gòu)信息生成描述結(jié)構(gòu)體的各字段類型及其大小信息;結(jié)構(gòu)體生成模塊,用于根據(jù)所述結(jié)構(gòu)體的字段及大小信息,生成各表對應(yīng)的數(shù)據(jù)結(jié)構(gòu)體。本發(fā)明實(shí)施利用數(shù)據(jù)庫引擎,分析數(shù)據(jù)表格及字段信息,根據(jù)其中的規(guī)律,自動(dòng)編寫對應(yīng)的結(jié)構(gòu)體名稱、類型及注釋,可快速自動(dòng)生成對應(yīng)的結(jié)構(gòu)體頭文件,便于維護(hù)和減少人力成本,只需要維護(hù)數(shù)據(jù)庫表格及字段的更新,對應(yīng)的頭文件可自動(dòng)進(jìn)行更新,可保證代碼的規(guī)范性,無需逐表逐字段地編寫頭文件,保證系統(tǒng)的正確性。
文檔編號(hào)G06F17/30GK102253975SQ20111016325
公開日2011年11月23日 申請日期2011年6月16日 優(yōu)先權(quán)日2011年6月16日
發(fā)明者梁龍飛, 田廣, 金志中 申請人:上海博康智能網(wǎng)絡(luò)科技有限公司