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