馮亞麗,蔡金武 (大慶石油學(xué)院計(jì)算機(jī)與信息技術(shù)學(xué)院,黑龍江大慶163318)
馮正利 (大慶油田有限責(zé)任公司第四采油廠,黑龍江大慶163511)
數(shù)據(jù)庫是數(shù)據(jù)管理技術(shù),是計(jì)算機(jī)科學(xué)的一個(gè)重要分支,它的發(fā)展十分迅速[1]。數(shù)據(jù)查詢和插入是數(shù)據(jù)庫最主要的功能。如何能更加快速、準(zhǔn)確的查詢到目標(biāo)數(shù)據(jù),或者把數(shù)據(jù)插入到目標(biāo)位置成為亟待解決的問題。隨著B/S技術(shù)的興起和完善,使得用簡單的網(wǎng)頁來實(shí)現(xiàn)數(shù)據(jù)庫的操作成為可能[2]?;诖?筆者應(yīng)用C#來完成了多庫操作。
圖1 系統(tǒng)體系結(jié)構(gòu)圖
系統(tǒng)體系結(jié)構(gòu) (見圖1)由3部分組成:數(shù)據(jù)庫A、數(shù)據(jù)庫B、及A與B數(shù)據(jù)庫之間的接口部分。當(dāng)數(shù)據(jù)庫A、B選定后,數(shù)據(jù)庫接口部分將執(zhí)行數(shù)據(jù)庫類型判斷,同時(shí)進(jìn)行連接的建立。用戶可以通過一定的按鈕選擇,令系統(tǒng)完成一系列任務(wù)。系統(tǒng)在接口部分主要能夠完成從確定的庫中選擇表、執(zhí)行對(duì)記錄和屬性值的查詢、對(duì)選定的記錄進(jìn)行提取、將提取的數(shù)據(jù)插入到指定表、進(jìn)行過期記錄的更新等數(shù)據(jù)庫操作。
根據(jù)系統(tǒng)體系結(jié)構(gòu),把系統(tǒng)組織成3層功能模塊,上層模塊調(diào)用相鄰的下層模塊從而完成一個(gè)子功能,最下層的模塊完成最具體的功能。該系統(tǒng)主要是5個(gè)子功能,分別是數(shù)據(jù)庫的連接功能、表格的查詢功能、記錄提取功能、記錄插入工能、記錄更新功能,其具體功能如下:
1)數(shù)據(jù)庫連接功能 通過目標(biāo)數(shù)據(jù)庫的選擇,確定數(shù)據(jù)庫的類型,再通過內(nèi)嵌的代碼進(jìn)行數(shù)據(jù)庫的連接,并能夠連接到指定的表。
2)表格信息查詢功能 通過學(xué)習(xí)樣本的訓(xùn)練,用戶可以通過各種查詢語句來實(shí)現(xiàn)各種查詢結(jié)果。此功能允許查詢一列或幾列,也可以查詢單個(gè)記錄。
3)記錄提取功能 當(dāng)用戶通過查詢選出要找的記錄,可以通過此功能將記錄提取出來。這里允許提取單個(gè)或多個(gè)記錄。
4)數(shù)據(jù)插入功能 用戶可以利用記錄提取功能得到的記錄,插入到指定的表中,在插入時(shí)需將目的插入位置的列名、主鍵列、主鍵值設(shè)置好,參數(shù)設(shè)置準(zhǔn)備就緒后點(diǎn)擊插入按鈕就可將值插入指定表中。
5)數(shù)據(jù)更新功能 在目標(biāo)表中,如果已有目標(biāo)ID的記錄,但其值已經(jīng)過期,需將其更換,則可在SQL語句編輯框中輸入更新語句,將需要更新的值和新值輸入即可實(shí)現(xiàn)目標(biāo)表中記錄的更新功能。
1)數(shù)據(jù)動(dòng)態(tài)查詢的實(shí)現(xiàn) 數(shù)據(jù)動(dòng)態(tài)查詢[3]功能對(duì)于確定表中的數(shù)據(jù)有著重要的作用。一方面,用戶可以通過查詢來瀏覽整個(gè)表的信息內(nèi)容,系統(tǒng)中所使用的控件不僅可以顯示文字信息,而且還可以顯示圖像信息,非常直觀。另一方面,還可以通過各種約束查詢來實(shí)現(xiàn)有特定約束的查詢,并且可以將查詢的結(jié)果顯示在控件上。
2)各類型數(shù)據(jù)庫的連接 數(shù)據(jù)庫連接是要完成A數(shù)據(jù)庫向B數(shù)據(jù)庫導(dǎo)庫和傳值等。A、B數(shù)據(jù)庫可以是相同或不同種類,筆者的設(shè)計(jì)思路如下:數(shù)據(jù)讀取的過程,通過這個(gè)過程可以從不同的數(shù)據(jù)庫中讀取數(shù)據(jù);構(gòu)造內(nèi)存數(shù)據(jù)庫的過程,數(shù)據(jù)通過數(shù)據(jù)讀取過程從數(shù)據(jù)庫中讀取出來后,需要為其提供數(shù)據(jù)結(jié)構(gòu)并且分配內(nèi)存空間以供應(yīng)用程序使用這些數(shù)據(jù);數(shù)據(jù)傳入的過程,通過這個(gè)過程,把內(nèi)存數(shù)據(jù)庫中的數(shù)據(jù),傳到目標(biāo)數(shù)據(jù)庫中。
3)記錄或?qū)傩灾档牟迦?插入的功能實(shí)現(xiàn)主要是依靠把SQL語句鑲嵌在程序內(nèi)部來完成的。一方面可以使軟件的操作更靈活,另一方面可以減少用戶輸入的工作量,當(dāng)設(shè)置完參數(shù)后,點(diǎn)擊按鈕就可以實(shí)現(xiàn)插入功能。主要功能代碼如下:
首先要設(shè)置幾個(gè)變量,將主控界面上填入的參數(shù)傳到程序中:
string co lname;//列名的變量,這個(gè)里面存儲(chǔ)的是目標(biāo)表的插入列的列名。
string p rimary;//目標(biāo)表的主鍵,這個(gè)里面存儲(chǔ)的是目標(biāo)表中的主鍵列名。
primary=textBox3.Text;
這里用一個(gè)textBox屬性來接收主控界面輸入的參數(shù):
co lname=tex tBox2.Tex t;
接收插入列名的參數(shù):
SqlConnection conn=new Sq lConnection(@"server=.;
database=Northw ind;uid=sa;pw d=1");
//連接數(shù)據(jù)庫,同時(shí)進(jìn)行數(shù)據(jù)庫查詢
conn.Open();
string strSQL="insert into"+tex tBox5.Text+"("+primary+","+
co lname+values('"+tex tBox4.Tex t"','"+tex tBox1.Text.ToString()+"')";
SqlCommand cmd=new SqlCommand(strSQ L,conn);
cmd.ExecuteNonQuery();
conn.Close();
//關(guān)閉連接
catch(System.Data.SqlClient.SqlException ex)MessageBox.Show
("There was an error in executing the SQL"+" ErrorM essage:"+
ex.M essage,"SQL")//異常處理
經(jīng)過檢測(cè)和使用,該系統(tǒng)能很好的完成數(shù)據(jù)庫間的動(dòng)態(tài)查詢、整個(gè)表的查詢、多列的查詢、單列的查詢以及單個(gè)數(shù)據(jù)的查詢、表中數(shù)據(jù)的插入、更新等功能。該系統(tǒng)能夠大大的提高生產(chǎn)和工程的效率,并為將來繼續(xù)研究和優(yōu)化數(shù)據(jù)庫接口技術(shù)提供了依據(jù)。
[1]楊浩.C#數(shù)據(jù)庫入門經(jīng)典 [M].北京:清華大學(xué)出版社,2005.28~36.
[2]王珊,薩師煊.數(shù)據(jù)庫系統(tǒng)概述[M].北京:高等教育出版社,2006.4~12.
[3]王志偉,宋小鵬.突破ASP.NET編程實(shí)例50講[M].北京:中國水利水電出版社,2000.