專利名稱:一種計(jì)算機(jī)程序代碼自動(dòng)生成器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種計(jì)算機(jī)程序代碼自動(dòng)生成器,尤其是一種基于c朽吾法的,
用于訪問,修改,刪除已知的SqlServer或者Access數(shù)據(jù)庫表中數(shù)據(jù)的,或 者根據(jù)數(shù)據(jù)庫中表的結(jié)構(gòu)生成相應(yīng)數(shù)據(jù)庫存儲(chǔ)過程的計(jì)算機(jī)程序代碼自動(dòng)生 成器》
背景技術(shù):
計(jì)算機(jī)程序代碼是用來制作計(jì)算機(jī)軟件和硬件驅(qū)動(dòng),操作系統(tǒng)等工具的最 基本的組成單元。每個(gè)計(jì)算機(jī)軟件,無論是應(yīng)用軟件,硬件驅(qū)動(dòng)軟件,操作系 統(tǒng)軟件,其最終的生成形式,目前都是通過計(jì)算才幾程序代碼編寫人員在特定的 計(jì)算機(jī)程序開發(fā)工具上,按一定的語法規(guī)則手寫輸入的計(jì)算機(jī)程序代碼而形成的。
然而,隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展和更新,計(jì)算機(jī)軟件系統(tǒng)的規(guī)模在不斷 擴(kuò)大,目前,規(guī)模較大的計(jì)算機(jī)軟件的程序代碼已經(jīng)有幾億行之多,并且隨著 計(jì)算機(jī)技術(shù)繼續(xù)不斷更新和發(fā)展,計(jì)算機(jī)軟件的規(guī)模還在不斷加大。由此,目 前的手工編寫計(jì)算機(jī)程序代碼的模式已經(jīng)在一定程度上限制了計(jì)算機(jī)軟件規(guī)模 擴(kuò)大的步伐。
而在基于數(shù)據(jù)庫的計(jì)算機(jī)應(yīng)用軟件中,對(duì)于用于訪問,修改,刪除已知數(shù) 據(jù)庫表中數(shù)據(jù)的計(jì)算機(jī)程序代碼不僅代碼量在整個(gè)目標(biāo)軟件系統(tǒng)中占據(jù)了相當(dāng) 大的規(guī)模,而且該部分代碼是基于數(shù)據(jù)庫表結(jié)構(gòu)的具有一定規(guī)律性的代碼,計(jì) 算機(jī)程序代碼編寫人員在編寫這部分代碼時(shí),完全可以借用一些工具紅動(dòng)生成 這部分代碼。
發(fā)明內(nèi)容
本發(fā)明的目的在于針對(duì)以上現(xiàn)有技術(shù)存在的不足,在開發(fā)基于數(shù)據(jù)庫的 軟件系統(tǒng)時(shí),提出一種可以按照數(shù)據(jù)庫的表結(jié)構(gòu)和指定的語法C#,自動(dòng)生成甩 于訪問,修改,刪除已知數(shù)據(jù)庫表中數(shù)據(jù)的計(jì)算機(jī)程序代碼。為了達(dá)到以上目的,本發(fā)明的計(jì)算機(jī)程序代碼自動(dòng)生成器應(yīng)包含如下組件
數(shù)據(jù)庫結(jié)構(gòu)識(shí)別組件——用以訪問數(shù)據(jù)庫,識(shí)別出數(shù)據(jù)庫中表的表名及各 個(gè)字段名,字段的屬性,取值范圍等信息;
代碼生成組件——用以在內(nèi)存中,4艮據(jù)凄t據(jù)庫結(jié)構(gòu)識(shí)別組件識(shí)別出的信息, 按照CH吾法生成相應(yīng)的代碼;
存儲(chǔ)過程生成組件一一用以在內(nèi)存中,才艮據(jù)數(shù)據(jù)庫結(jié)構(gòu)識(shí)別組件識(shí)別出的 信息,按照SQL語法生成相應(yīng)的存儲(chǔ)過程代碼;
目標(biāo)代碼生成器---^個(gè)類似于記事本的可編輯工具,生成后的代碼顯示
在該編輯器中,使用者可以編輯生成后的代碼。
目前基于數(shù)據(jù)庫的計(jì)算機(jī)軟件系統(tǒng),對(duì)于數(shù)據(jù)中的每個(gè)表的操作具體為 在表中新增一條記錄,根據(jù)記錄的索引號(hào)修改一條記錄,根據(jù)記錄的索引號(hào)刪 除一條記錄,根據(jù)記錄的索引號(hào)獲取一條記錄,獲取表中的所有記錄。本發(fā)明 的計(jì)算機(jī)程序代碼自動(dòng)生成器將根據(jù)其數(shù)據(jù)庫結(jié)構(gòu)識(shí)別組件識(shí)別出表結(jié)構(gòu)后, 按照C朽吾法依次生成完成上述操作的函數(shù),以及依據(jù)SQL語法生成每個(gè)函數(shù)需 要使用的存儲(chǔ)過程。生成的結(jié)果顯示在目標(biāo)代碼生成器中。
具體的代碼生成包括如下的步驟
步驟一通過數(shù)據(jù)庫結(jié)構(gòu)識(shí)別組件調(diào)用第三方組件ADO (ActiveX Data Objects),該組件中的方法可以獲取數(shù)據(jù)庫中的表名及字段名,數(shù)據(jù)庫服務(wù)器 名通過用戶在本發(fā)明的設(shè)置數(shù)據(jù)庫服務(wù)器對(duì)話框中輸入獲取;
步驟二代碼生成組件根據(jù)獲取的表和表名及數(shù)據(jù)庫服務(wù)器名,依次生成 如下幾個(gè)函數(shù)
函數(shù)l新增一條記錄
函數(shù)名為AddRec,函數(shù)具體完成的操作為打開數(shù)據(jù)庫連接,獲取新增 記錄各個(gè)字段的值,新增記錄各個(gè)字段的值是通過函數(shù)的參數(shù)進(jìn)行傳遞的,然 后執(zhí)行SQL的Add語句,之后關(guān)閉數(shù)據(jù)庫連接,函數(shù)結(jié)束。
函數(shù)2根據(jù)記錄的索引號(hào)修改一條記錄
函數(shù)名為UpdateRec,函數(shù)具體完成的操作為打開數(shù)據(jù)庫連接,獲取修改的記錄各個(gè)字段的值,修改記錄各個(gè)字段的值是通過函數(shù)的參數(shù)進(jìn)行傳遞的,
然后執(zhí)行SQL的Update語句,之后關(guān)閉數(shù)據(jù)庫連接,函數(shù)結(jié)束。 函數(shù)3根據(jù)記錄的索引號(hào)刪除一條記錄
函數(shù)名為DelRec,函數(shù)具體完成的操二作為打開數(shù)據(jù)庫連接,然后執(zhí)行 SQL的Delete語句,搜索記錄的索引號(hào)通過函數(shù)的^lt進(jìn)行傳遞,之后關(guān)閉數(shù) 據(jù)庫連接,函數(shù)結(jié)束。
函數(shù)4根據(jù)記錄的索引號(hào)獲取一條記錄
函數(shù)名為SelOneRec,函數(shù)具體完成的操作為打開數(shù)據(jù)庫連接,然后執(zhí) 行SQL的Select語句,搜索記錄的索引號(hào)通過函數(shù)的參數(shù)進(jìn)行傳遞,之后關(guān)閉 數(shù)據(jù)庫連接,返回查詢的記錄,函數(shù)結(jié)束。
函數(shù)5獲取表中的所有記錄
函數(shù)名為SelAllRec,函數(shù)具體完成的操作為打開數(shù)據(jù)庫連接,然后執(zhí) 行SQL的Select語句,之后關(guān)閉數(shù)據(jù)庫連接,需要返回的記錄通過數(shù)組傳出, 函數(shù)結(jié)束。
如使用者選擇需要生成存儲(chǔ)過程,則代碼生成組件根據(jù)獲取的表和表名及 數(shù)據(jù)庫服務(wù)器名,依次生成如下幾個(gè)存儲(chǔ)過程
新增一條記錄的存儲(chǔ)過程,根據(jù)表名和字段名生成SQL的ADD語句;
修改一條記錄的存儲(chǔ)過程,根據(jù)表名和字段名生成SQL的Update語句,該 存儲(chǔ)過程需要傳入索引號(hào)作為參數(shù);
刪除一條記錄的存儲(chǔ)過程,根據(jù)表名和字段名生成SQL的Delete語句,該
存儲(chǔ)過程需要傳入索引號(hào)作為參數(shù);
獲取一條記錄的存儲(chǔ)過程,根據(jù)表名和字段名生成SQL的Select語句,該
存儲(chǔ)過程需要傳入索引號(hào)作為參數(shù)。
所有的代碼生成后,存儲(chǔ)在內(nèi)存中,然后寫入到目標(biāo)代碼生成器中。目標(biāo) 代碼生成器的編輯區(qū)其實(shí)就是一個(gè)臨時(shí)的記事本文件,寫入代碼生成器的過程 就是通過調(diào)用一個(gè)文件對(duì)象,使用二進(jìn)制流對(duì)象來寫入文件的。代碼全部寫入 到目標(biāo)代碼生成器中后,則完成代碼自動(dòng)生成。用戶可以根據(jù)自己的特殊需要在目標(biāo)代碼生成器中修改生成的代碼,修改完畢后使用者可以將生成的代碼直
接拷貝到使用者的開發(fā)工具里。
具體實(shí)施例方式
實(shí)施例一
本實(shí)施例包括如下步驟
步驟一使用者在電腦上安裝完本發(fā)明后,打開執(zhí)行文件,然后打開設(shè)置 數(shù)據(jù)庫服務(wù)器對(duì)話框,在該對(duì)話框中選擇需要生成代碼的目標(biāo)數(shù)據(jù)庫,輸入數(shù) 據(jù)庫服務(wù)器的用戶密碼,點(diǎn)擊確定連接凄t據(jù)庫;
步驟二連接上數(shù)據(jù)庫后,用戶選擇需要生成代碼的數(shù)據(jù)庫表;
步驟三選擇好數(shù)據(jù)庫表以后,本發(fā)明將按照用戶的設(shè)置自動(dòng)生成計(jì)算機(jī) 程序代碼,生成程序的代碼步驟如下所述
1:通過lt據(jù)庫結(jié)構(gòu)識(shí)別組件調(diào)用第三方組件ADO ( ActiveX Data Objects ), 該組件中的方法可以獲取數(shù)據(jù)庫中的表名及字段名,數(shù)據(jù)庫服務(wù)器名通過用戶 在本發(fā)明的設(shè)置數(shù)據(jù)庫服務(wù)器對(duì)話框中輸入獲?。?br>
2:代碼生成組件根據(jù)獲取的表和M及數(shù)據(jù)庫服務(wù)器名,依次生成如下幾 個(gè)函數(shù)
函數(shù)l新增一條記錄
函數(shù)名為AddRec,函數(shù)具體完成的操作為打開數(shù)據(jù)庫連接,獲取新增 記錄各個(gè)字段的值,新增記錄各個(gè)字段的值是通過函數(shù)的參數(shù)進(jìn)行傳遞的,然 后執(zhí)行SQL的Add語句,之后關(guān)閉數(shù)據(jù)庫連接,函數(shù)結(jié)束。
函數(shù)2根據(jù)記錄的索引號(hào)修改一條記錄
函數(shù)-名為UpdateRec,函數(shù)—具體完成的才乘作為打開凄t據(jù)庫連接,獲取修 改的記錄各個(gè)字段的值,修改記錄各個(gè)字段的值是通過函數(shù)的參數(shù)進(jìn)行傳遞的, 然后執(zhí)行SQL的Update語句,之后關(guān)閉數(shù)據(jù)庫連接,函H結(jié)束。
函數(shù)3根據(jù)記錄的索引號(hào)刪除一條記錄
函數(shù)名為DelRec,函數(shù)具體完成的搮:作為打開數(shù)據(jù)庫連接,然后執(zhí)行SQL的Delete語句,搜索記錄的索引號(hào)通過函數(shù)的;^lt進(jìn)行傳遞,之后關(guān)閉數(shù) 據(jù)庫連接,函數(shù)結(jié)束。
函數(shù)4根據(jù)記錄的索引號(hào)獲取一條記錄
函數(shù)名為SelOneRec,函數(shù)具體完成的操作為打開數(shù)據(jù)庫連接,然后執(zhí) 行SQL的Select語句,搜索記錄的索引號(hào)通過函數(shù)的參數(shù)進(jìn)行傳遞,之后關(guān)閉 數(shù)據(jù)庫連接,返回查詢的記錄,函數(shù)結(jié)束。
函數(shù)5獲取表中的所有記錄
函數(shù)名為SelAllRec,函數(shù)具體完成的操作為打開數(shù)據(jù)庫連接,然后執(zhí) 行SQL的Select語句,之后關(guān)閉數(shù)據(jù)庫連接,需要返回的記錄通過數(shù)組傳出, 函數(shù)結(jié)束。
如使用者選擇需要生成存儲(chǔ)過程,則代碼生成組件根據(jù)獲取的表和表名及 數(shù)據(jù)庫服務(wù)器名,依次生成如下幾個(gè)存儲(chǔ)過程
新增一條記錄的存儲(chǔ)過程,根據(jù)表名和字段名生成SQL的ADD語句;
修改一條記錄的存儲(chǔ)過程,根據(jù)表名和字段名生成SQL的Update語句,該 存儲(chǔ)過程需要傳入索引號(hào)作為參數(shù);
刪除一條記錄的存儲(chǔ)過程,根據(jù)表名和字段名生成SQL的Delete語句,該
存儲(chǔ)過程需要傳入索引號(hào)作為參數(shù);
獲取一條記錄的存儲(chǔ)過程,根據(jù)表名和字段名生成SQL的Select語句,該
存儲(chǔ)過程需要傳入索引號(hào)作為參數(shù)。
所有的代碼生成后,存儲(chǔ)在內(nèi)存中,然后寫入到目標(biāo)代碼生成器中。目標(biāo) 代碼生成器的編輯區(qū)其實(shí)就是一個(gè)臨時(shí)的記事本文件,寫入代碼生成器的過程 就是通過調(diào)用一個(gè)文件對(duì)象,4吏用二進(jìn)制流對(duì)象來寫入文件的。代碼全部寫入 到目標(biāo)代碼生成器中后,則完成代碼自動(dòng)生成。用戶可以根據(jù)自己的特殊需要 在目標(biāo)代碼生成器中修改生成的代碼,修改完畢后^^用者可以將生成的代碼直
接拷貝到使用者的開發(fā)工具里。
權(quán)利要求
1. 一種計(jì)算機(jī)程序代碼自動(dòng)生成器,可以自動(dòng)生成計(jì)算機(jī)程序代碼,其特征在于,生成的計(jì)算機(jī)程序代碼是基于C#語法的,可以用于訪問,修改,刪除已知的SqlServer或者Access數(shù)據(jù)庫表中數(shù)據(jù)的代碼,或者根據(jù)數(shù)據(jù)庫中表的結(jié)構(gòu)生成相應(yīng)數(shù)據(jù)庫存儲(chǔ)過程的代碼。
2. 根據(jù)權(quán)利要求1所述一種計(jì)算機(jī)程序代碼自動(dòng)生成器,其特征在于包含如下 組件數(shù)據(jù)庫結(jié)構(gòu)識(shí)別組件——用以訪問數(shù)據(jù)庫,識(shí)別出數(shù)據(jù)庫中表的表名及各個(gè)字 段名,字段的屬性,取值范圍等信息;代碼生成組件一一用以在內(nèi)存中,根據(jù)數(shù)據(jù)庫結(jié)構(gòu)識(shí)別組件識(shí)別出的信息,按 照CH吾法生成相應(yīng)的代碼;存儲(chǔ)過程生成組件一一用以在內(nèi)存中,根據(jù)數(shù)據(jù)庫結(jié)構(gòu)識(shí)別組件識(shí)別出的信息, 按照SQL語法生成相應(yīng)的存儲(chǔ)過程代碼;目標(biāo)^ 碼生成器---個(gè)類似于記事本的可編輯工具,生成后的代碼顯示在該編輯器中, -使用者可以編輯生成后的代碼。
3. 根據(jù)權(quán)利要求2所述計(jì)算機(jī)程序代碼自動(dòng)生成器,其特征在于生成后的計(jì) 算機(jī)程序代碼還可以被用戶編輯。
全文摘要
本發(fā)明涉及一種計(jì)算機(jī)程序代碼自動(dòng)生成器,通過識(shí)別出目標(biāo)數(shù)據(jù)庫的表結(jié)構(gòu)后,按照特定的語法自動(dòng)生成計(jì)算機(jī)程序代碼,其特征在于,生成的計(jì)算機(jī)程序代碼是基于C#語法的,可以用于訪問,修改,刪除已知的SqlServer或者Access數(shù)據(jù)庫表中數(shù)據(jù)的代碼,或者根據(jù)數(shù)據(jù)庫中表的結(jié)構(gòu)生成相應(yīng)數(shù)據(jù)庫存儲(chǔ)過程的代碼。本發(fā)明突破了傳統(tǒng)計(jì)算機(jī)軟件開發(fā)時(shí)需要程序員手寫輸入代碼的方式,提高了軟件開發(fā)的速度和效率。
文檔編號(hào)G06F9/44GK101419544SQ200710134009
公開日2009年4月29日 申請(qǐng)日期2007年10月26日 優(yōu)先權(quán)日2007年10月26日
發(fā)明者李驍淳 申請(qǐng)人:鎮(zhèn)江雅迅軟件有限責(zé)任公司