亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于不同高級語言環(huán)境下關(guān)系型數(shù)據(jù)庫應(yīng)用系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

        2013-04-29 23:33:45隋東
        課程教育研究·中 2013年5期
        關(guān)鍵詞:報(bào)表應(yīng)用程序對象

        隋東

        【摘要】本文嘗試將SQL語言嵌入到VB6.0、VB.NET和C#高級語言中,開發(fā)設(shè)計(jì)一個(gè)具有增、刪、改和查詢功能的學(xué)生成績管理系統(tǒng),對其中運(yùn)用的關(guān)鍵技術(shù)進(jìn)行剖析和對比。并在對各種理論進(jìn)行闡述的同時(shí)配合系統(tǒng)的實(shí)現(xiàn)和關(guān)鍵技術(shù)的應(yīng)用加以說明。

        【關(guān)鍵詞】ADO.NET VB6.0 VB.NET C# SQL SERVER T-SQL 類

        【中圖分類號】G42 【文獻(xiàn)標(biāo)識(shí)碼】A 【文章編號】2095-3089(2013)05-0243-03

        前言

        中央廣播電視大學(xué)的數(shù)據(jù)庫應(yīng)用技術(shù)教材是基于VB6.0和SQL SERVER2000實(shí)驗(yàn)環(huán)境下的,這為我們的數(shù)據(jù)庫應(yīng)用技術(shù)教學(xué)實(shí)踐帶來一些困擾和不便,尤其不便于學(xué)生課后更準(zhǔn)確有效地自學(xué)教材。對此問題,筆者借助多年教學(xué)經(jīng)驗(yàn)的積累,將中央電大本門課程的形考任務(wù)“數(shù)據(jù)庫應(yīng)用系統(tǒng)開發(fā)”在VB6.0、VB.NET和C#多種環(huán)境下的實(shí)現(xiàn)進(jìn)行了思考和實(shí)驗(yàn),對不同環(huán)境下的數(shù)據(jù)庫應(yīng)用系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)方法和關(guān)鍵技術(shù)進(jìn)行了比較,能夠有效地指導(dǎo)學(xué)生在不同應(yīng)用程序開發(fā)環(huán)境下,以簡捷的方式、方法,較快地設(shè)計(jì)、實(shí)現(xiàn)一個(gè)具備增、刪、改、查詢功能的小型數(shù)據(jù)庫應(yīng)用系統(tǒng),同時(shí)滿足了學(xué)生接受新事物、新技術(shù)的愿望,激發(fā)了他們搞好畢業(yè)設(shè)計(jì)的創(chuàng)作熱情,為學(xué)生們后續(xù)畢業(yè)設(shè)計(jì)打下了堅(jiān)實(shí)的基礎(chǔ)。

        實(shí)現(xiàn)

        本系統(tǒng)是基于 C/S 結(jié)構(gòu)的信息管理系統(tǒng),分別使用 VB6.0、VB.NET和C#作為開發(fā)語言,前端應(yīng)用程序通過ADO、ADO.NET技術(shù)來與數(shù)據(jù)庫進(jìn)行連接,優(yōu)點(diǎn)是易于使用、高速度、低內(nèi)存支出和占用磁盤空間較少。

        該數(shù)據(jù)庫應(yīng)用系統(tǒng)雖然規(guī)模小,但是已經(jīng)具備增加、修改、刪除、查詢等系統(tǒng)功能。下面介紹一下系統(tǒng)開發(fā)的主要方法:

        一、進(jìn)行數(shù)據(jù)庫設(shè)計(jì)

        (一)需求分析

        1.業(yè)務(wù)流程分析

        “學(xué)生成績管理系統(tǒng)”,主要目的是用以實(shí)現(xiàn)學(xué)生、課程以及成績等多項(xiàng)管理。本系統(tǒng)管理的對象簡單,每個(gè)數(shù)據(jù)之間都有較強(qiáng)的關(guān)聯(lián)性,涉及過程并不復(fù)雜。因此,比較適合于數(shù)據(jù)庫管理。

        2.數(shù)據(jù)流程分析

        圖1學(xué)生成績管理數(shù)據(jù)流程圖

        (二)概念結(jié)構(gòu)設(shè)計(jì)

        根據(jù)需求分析的結(jié)果,進(jìn)行概念結(jié)構(gòu)設(shè)計(jì),依照收集信息→標(biāo)識(shí)對象(實(shí)體)→標(biāo)識(shí)每個(gè)對象需要存儲(chǔ)的詳細(xì)信息(屬性)→標(biāo)識(shí)對象之間的關(guān)系的步驟,采用E-R圖工具表示,設(shè)計(jì)結(jié)果如圖2所示:

        圖2學(xué)生成績管理E-R圖

        (三)邏輯結(jié)構(gòu)設(shè)計(jì)和物理實(shí)現(xiàn)

        邏輯結(jié)構(gòu)設(shè)計(jì)的方法與步驟,是將概念結(jié)構(gòu)設(shè)計(jì)的結(jié)果E-R圖轉(zhuǎn)換為某個(gè)DBMS所支持的數(shù)據(jù)模型,并對其進(jìn)行優(yōu)化的過程。具體過程為:

        將各實(shí)體轉(zhuǎn)化為對應(yīng)的表,將各屬性轉(zhuǎn)化為各表對應(yīng)的列;標(biāo)識(shí)每個(gè)表的主鍵列;在表之間體現(xiàn)實(shí)體之間的映射關(guān)系,遵守參照完整性規(guī)則;根據(jù)范式理論,對表進(jìn)行修改,盡量滿足第三范式。

        通過規(guī)范化數(shù)據(jù)庫設(shè)計(jì),可以減少存儲(chǔ)的冗余數(shù)據(jù)量,減輕數(shù)據(jù)維護(hù)工作,減少存儲(chǔ)的要求,提高數(shù)據(jù)庫的完整性。

        物理實(shí)現(xiàn)階段的主要工作是,把設(shè)計(jì)好的數(shù)據(jù)庫全局模式轉(zhuǎn)換為相應(yīng)的內(nèi)模式。在此用以上方法建立一個(gè)名稱為“學(xué)生成績管理”的數(shù)據(jù)庫,其中包含3張數(shù)據(jù)表,即學(xué)生情況表、課程情況表、學(xué)生成績表。

        二、操縱和訪問數(shù)據(jù)庫的基本SQL語句

        SQL是關(guān)系數(shù)據(jù)庫支持的標(biāo)準(zhǔn)查詢語言,也是一種雙重式語言,即用于查詢和更新的交互式數(shù)據(jù)庫語言(Interactive SQL),又是一種應(yīng)用程序進(jìn)行數(shù)據(jù)庫訪問時(shí)所采取的編程式數(shù)據(jù)庫語言,即嵌入式SQL(Embedded SQL)[1]。嵌入式SQL是數(shù)據(jù)庫應(yīng)用程序的一種開發(fā)方法。它要將SQL語句直接嵌入到程序的源代碼中,與其他程序設(shè)計(jì)語言語句混合使用。

        開發(fā)的應(yīng)用程序?qū)⑨槍ι鲜鰯?shù)據(jù)庫進(jìn)行管理,主要有插入(insert)、修改(update)、刪除(delete)、查詢(select)和打印(print)等5種基本的操作。

        三、界面設(shè)計(jì)

        (一)創(chuàng)建項(xiàng)目工程

        項(xiàng)目工程名稱為“學(xué)生成績管理”。

        (二)創(chuàng)建主窗體

        運(yùn)用菜單技術(shù)創(chuàng)建主窗體。

        (三)創(chuàng)建增加、刪除、修改、查詢功能窗體

        使用標(biāo)簽、文本框、組合框、表格、命令按鈕等控件,添加并創(chuàng)建“查詢記錄”、“增加新記錄”、“修改記錄”、“刪除記錄”等窗體。

        四、代碼設(shè)計(jì)

        .NET框架的一個(gè)主要組成部分是類庫,這些類被拆分為命名空間,它是類庫的邏輯分區(qū)。類庫所采用的命名空間是層次結(jié)構(gòu),即命名空間下又可以再分成子命名空間,每個(gè)命名空間都包含一組按照功能劃分的相關(guān)的類。

        在.NET環(huán)境下,必須指向包含所使用類的命名空間(例如Imports System.Data,Imports System.Data.SqlClient)才能激活相應(yīng)的類;借助于封裝,把常用的數(shù)據(jù)連接、數(shù)據(jù)庫查詢和對數(shù)據(jù)庫操縱的功能模塊定義為公共函數(shù),包括createConn()用于建立數(shù)據(jù)庫連接的函數(shù),sqlUpdate()用于對數(shù)據(jù)庫操縱的函數(shù),sqlfind()用于數(shù)據(jù)庫查詢的函數(shù);使用時(shí)調(diào)用即可,避免相同功能模塊的重復(fù)建設(shè)。針對該系統(tǒng),筆者創(chuàng)建了SqlConnection、SqlCommand公共類的實(shí)例和系統(tǒng)常用的公共函數(shù)。

        在不同模塊的設(shè)計(jì)中都可以調(diào)用這些自定義函數(shù),在此不再贅述。

        五、報(bào)表設(shè)計(jì)

        一個(gè)功能完整的數(shù)據(jù)庫應(yīng)用系統(tǒng),除了具有數(shù)據(jù)維護(hù)、查詢和顯示功能外,還必須具有報(bào)表輸出功能。Visual Studio2005報(bào)表體系結(jié)構(gòu)圖],其ReportViewer控件負(fù)責(zé)解釋RDLC報(bào)表定義、處理報(bào)表參數(shù)并按照各種用戶可選格式提供報(bào)表的“報(bào)表處理器”。它既可以運(yùn)行于“本地模式”也可以運(yùn)行于“遠(yuǎn)程模式”[2]。由用戶編寫的存儲(chǔ)過程負(fù)責(zé)管理連接或運(yùn)行基于參數(shù)的查詢;報(bào)表只駐留以報(bào)表為中心的Parameters集合,尋址遠(yuǎn)程報(bào)表服務(wù)并呈現(xiàn)給用戶。

        六、幾種實(shí)現(xiàn)方法的比較

        嵌入式SQL在VB6.0下和在VB.NET下使用的基本形式和處理過程對比如下:

        (一)在VB6.0環(huán)境下的具體實(shí)現(xiàn)

        ADO是微軟公司提出的第三種數(shù)據(jù)庫訪問對象,它把OLE DB封裝在一個(gè)數(shù)據(jù)對象中,使得VB6.0程序可以方便地實(shí)現(xiàn)對數(shù)據(jù)庫的訪問。ADO對象模型共包含7個(gè)對象,即Connection,command,Recordset,Parameter,Property,F(xiàn)ield和Error。

        VB6.0應(yīng)用程序中主要用Connection對象建立與數(shù)據(jù)庫的連接,用Recordset和Field對象,對數(shù)據(jù)表進(jìn)行操作,實(shí)現(xiàn)數(shù)據(jù)表增加、刪除、修改等不返回結(jié)果集的操作,語法參閱文獻(xiàn)[1]。

        (二)在VB.NET環(huán)境下的具體實(shí)現(xiàn)

        ADO.NET是微軟.NET Framework框架中針對與數(shù)據(jù)庫進(jìn)行交互的一組對象類的名稱[3]。ADO.NET提供對Microsoft SQL Server、Oracle等數(shù)據(jù)源以及通過 OLEDB和XML公開的數(shù)據(jù)源的一致訪問,也就是提供與數(shù)據(jù)源進(jìn)行交互的相關(guān)的公共方法。應(yīng)用程序可以使用ADO.NET來連接到這些數(shù)據(jù)源,并檢索、操作和更新數(shù)據(jù)。

        ADO.Net比ADO更適用于分布式應(yīng)用環(huán)境,增加了更好的性能;它有更好的可操作性、它可以結(jié)合XML語言來開發(fā)數(shù)據(jù)庫;它有更好的可維護(hù)性、可編程性和可伸縮性。

        ADO.NET對象模型中包含五個(gè)主要的組件,即是Connection對象、Command對象、 Dataadapter對象、Datareader對象以及Dataset對象。ADO.NET架構(gòu)圖參見[3]。

        其中Connection對象、Command對象、 DataAdapter對象和DataReader對象四個(gè)組件是負(fù)責(zé)建立聯(lián)機(jī)與數(shù)據(jù)操作部分的,被稱為數(shù)據(jù)提供組件 (Managed Providers)。而Dataset對象是ADO.NET非連接架構(gòu)下把數(shù)據(jù)庫中的數(shù)據(jù)映射到內(nèi)存緩存中所構(gòu)成的數(shù)據(jù)容器,是一個(gè)或多個(gè)DataTable 對象的集合。DataSet在使用時(shí)就像駐留在客戶端計(jì)算機(jī)上的一個(gè)小型關(guān)系數(shù)據(jù)庫,但又與任何具體的數(shù)據(jù)庫完全無關(guān)。DataAdapter對象在后臺(tái)數(shù)據(jù)庫和前臺(tái)Dataset對象之間起著橋梁作用。其Fill方法將后臺(tái)數(shù)據(jù)庫的數(shù)據(jù)取到前臺(tái)客戶端的Dataset對象中來。而其Update方法則按相反方向把前臺(tái)對數(shù)據(jù)庫的寫操作寫入數(shù)據(jù)庫中去,它由應(yīng)用程序在Dataset中添加、更改或刪除的行對數(shù)據(jù)庫進(jìn)行更新,在使用DataAdapter時(shí),需要將查出的數(shù)據(jù)起一個(gè)表名放到DataSet中。一個(gè)Dataset可以存放多個(gè)表,而TableAdapter的結(jié)果就是一個(gè)表,不能再繼續(xù)添加表。

        DataReader實(shí)現(xiàn)數(shù)據(jù)操作以及對數(shù)據(jù)的快速、只進(jìn)、只讀訪問。Connection對象提供與數(shù)據(jù)源的連接。Command對象能夠訪問用于返回?cái)?shù)據(jù)、修改數(shù)據(jù)、運(yùn)行存儲(chǔ)過程、發(fā)送或檢索參數(shù)信息的數(shù)據(jù)庫命令。DataReader從數(shù)據(jù)源中提供高性能的數(shù)據(jù)流。它需要與數(shù)據(jù)庫保持連接,ExecuteReader()函數(shù)返回一個(gè)SqlDataReader對象或OleDbDataReader對象,通過這個(gè)對象來檢查查詢結(jié)果,它是一種“單向”流,一次只能提供一行數(shù)據(jù),就像高速傳送帶上的一排箱子,一旦它們被放在帶子上,就無法對它們排序或過濾出選定的箱子,也因此占用內(nèi)存少,執(zhí)行效率高。當(dāng)用戶讀取大量數(shù)據(jù)時(shí),可以使用DataReader來提高性能。

        根據(jù)應(yīng)用程序所需功能和性能的要求,來確定是使用DataSet還是DataReader。

        嵌入式SQL在VB.NET環(huán)境下通過SqlCommand.ExecuteNonQuery()方法,對連接執(zhí)行SQL語句,并返回受影響的行數(shù),當(dāng)行數(shù)大于0時(shí),命令執(zhí)行成功,否則說明對數(shù)據(jù)庫沒產(chǎn)生影響。通過使用SqlCommand.ExecuteScalar()方法來執(zhí)行命令對象的SQL語句,從數(shù)據(jù)庫中檢索單個(gè)值,當(dāng)值大于0時(shí),命令執(zhí)行成功,否則命令執(zhí)行失敗。該方法不接受任何參數(shù),僅僅返回查詢結(jié)果集中的第一行第一列。

        在VB.NET環(huán)境下通過調(diào)用以上定義的函數(shù),就可以實(shí)現(xiàn)使用各種嵌入式SQL語句來操縱后臺(tái)數(shù)據(jù)庫的功能。

        (三)C#語言環(huán)境下的設(shè)計(jì)實(shí)現(xiàn)

        由于C#簡單易學(xué),而且可以跨平臺(tái)使用,因此它正在成為程序開發(fā)人員使用的主流編程語言。[4] 它具有如下諸多優(yōu)點(diǎn):

        C#遵守通用語言規(guī)范(common language specification,CLS)。

        C#具備自動(dòng)內(nèi)存管理功能:CLR 內(nèi)建垃圾收集器,當(dāng)變量實(shí)例的生命周期結(jié)束時(shí),垃圾收集器負(fù)責(zé)收回不被使用的實(shí)例占用的內(nèi)存空間。

        C#具有交叉語言處理能力:由于任何遵守通用語言規(guī)范的程序設(shè)計(jì)語言源程序,都可編譯為相同的中間語言代碼,不同語言設(shè)計(jì)的組件,可以互相通用,可以從其他語言定義的類派生出語言的新類。

        C#更加安全:C#語言不支持指針,一切對內(nèi)存的訪問都必須通過對象的引用變量來實(shí)現(xiàn),只允許訪問內(nèi)存中允許訪問的部分,這就防止病毒程序使用非法指針訪問私有成員,也避免指針的誤操作產(chǎn)生的錯(cuò)誤。

        C#軟件的安裝更加容易:在.NET 中這些組件或動(dòng)態(tài)連接庫不必在注冊表中注冊,每個(gè)程序都可以使用自帶的組件或動(dòng)態(tài)連接庫,使軟件的安裝更加容易。

        C#是完全面向?qū)ο蟮模篊#語言中所有的函數(shù)、變量和常量都必須定義在類中,避免了命名沖突。C#語言不支持多重繼承。

        在開發(fā)項(xiàng)目中以類的形式來組織、封裝一些常用的方法和事件,不僅可以提高代碼的重用率,也大大方便了代碼的管理。

        本系統(tǒng)中using System.Data.SqlClient命名空間包含有關(guān)專門操作SqlServer數(shù)據(jù)庫的類,如SqlConnection,SqlCommand,SqlDateAdapter等,System.Data命名空間包含數(shù)據(jù)庫操作所需要用到的普通數(shù)據(jù),如數(shù)據(jù)表,數(shù)據(jù)行等;DbHelperSQL類定義了與數(shù)據(jù)庫的連接配置、執(zhí)行SQL語句的公用方法等。調(diào)用并且構(gòu)建這些類的實(shí)例設(shè)計(jì)完成系統(tǒng)主窗體和系統(tǒng)的增、刪、改、查詢功能。

        七、結(jié)論

        (一)在不同高級語言環(huán)境下創(chuàng)建應(yīng)用程序的過程都一樣。

        (二)在不同環(huán)境下使用的SQL語句都完全一樣,可以實(shí)現(xiàn)同樣的數(shù)據(jù)庫操縱功能。

        (三)在VB6.0環(huán)境下編寫的應(yīng)用程序,搬到.NET環(huán)境下不能使用。

        (四)NET開發(fā)平臺(tái)具有更加強(qiáng)大的內(nèi)部函數(shù)庫,.NET編程很大程度上依靠程序庫中提供的可重用源代碼,.NET框架提供了2500多個(gè)可重用的類。公共語言運(yùn)行時(shí)庫(CLR)提供了執(zhí)行程序的服務(wù),實(shí)現(xiàn)了編程語言的統(tǒng)一。.NET程序需要經(jīng)過兩次編譯才能在CPU上運(yùn)行,首先編譯生成與CPU無關(guān)的中間語言(MSIL)程序,在CLR的支持下,中間語言程序被編譯成由本地CPU指令組成的程序,實(shí)現(xiàn)了.NET跨平臺(tái)運(yùn)行的目標(biāo)。[5]

        (五)NET采用ADO.NET數(shù)據(jù)訪問技術(shù),支持離線的數(shù)據(jù)訪問功能,同時(shí)提供了只進(jìn)的、一次只能讀取一條記錄的消耗資源極小的DataReader對象,提高了應(yīng)用程序?qū)?shù)據(jù)庫訪問的性能。更適用于分布式數(shù)據(jù)庫應(yīng)用系統(tǒng)的應(yīng)用。

        (六)VB.NET和C#生成的代碼可以完全通用。VB提供了很多類型轉(zhuǎn)換函數(shù)型運(yùn)算符,如CInt(), CSng(), CStr()等,在C#中只要用(int) , (float), (String)即可; VB支持兩種形式的異常,即.net框架的異常和VB自己的錯(cuò)誤號碼,而C#只支持第一種。用到VB自己的錯(cuò)誤號碼的程序幾乎無法移植到C#中。

        (七)VB支持模塊,C#不支持。在C#中制造一個(gè)abstract類,共享所有成員,就和模塊一樣了。C#不能像VB一樣直接訪問模塊中的成員,需要使用“類名.成員名”的用法。

        (八)C#代碼更加簡潔,像VB.NET一樣簡單,像C++一樣強(qiáng)大, 是第一流的面向組件的語言。C#語言是.NETFrame Work 中新一代的開發(fā)工具,是一種現(xiàn)代的、面向?qū)ο蟮恼Z言,它簡化了C++語言在類、命名空間、方法重載和異常處理等方面的操作,摒棄了 C++的復(fù)雜性,更易使用,更少出錯(cuò)。它使用組件編程,和VB一樣容易使用。C#語法和 C++、JAVA 語法非常相似。所有的.NET Framework中的基類庫(Base Class Library)都由C# 編寫。

        參考文獻(xiàn):

        [1]劉世峰.數(shù)據(jù)庫應(yīng)用技術(shù)(本科)[M].中央廣播電視大學(xué)出版社,2008,103

        [2]顧曉梅.數(shù)據(jù)庫應(yīng)用技術(shù)教程[M],上海電視大學(xué)教材, 2010, 171

        [3]呂軍.軟件項(xiàng)目綜合實(shí)訓(xùn)(.NET篇)[M],清華大學(xué)出版社,2010,96~97

        [4]明日科技 王小科,王軍,趙會(huì)東.C#項(xiàng)目開發(fā)案例全程實(shí)錄(第2版)[M],清華大學(xué)出版社,2011,前言

        [5]龔沛曾.Visual Basic.NET程序設(shè)計(jì)教程(第2版)[M],高等教育出版社,2005,17

        猜你喜歡
        報(bào)表應(yīng)用程序對象
        神秘來電
        睿士(2023年2期)2023-03-02 02:01:09
        刪除Win10中自帶的應(yīng)用程序
        LabWindows/CVI中Excel報(bào)表技術(shù)研究
        攻略對象的心思好難猜
        意林(2018年3期)2018-03-02 15:17:24
        從三大報(bào)表讀懂養(yǎng)豬人的成績單
        基于熵的快速掃描法的FNEA初始對象的生成方法
        區(qū)間對象族的可鎮(zhèn)定性分析
        關(guān)閉應(yīng)用程序更新提醒
        電腦迷(2012年15期)2012-04-29 17:09:47
        三星電子將開設(shè)應(yīng)用程序下載商店
        微軟軟件商店開始接受應(yīng)用程序
        白浆出来无码视频在线| 日韩av高清在线观看| 色橹橹欧美在线观看视频高清 | 9久久精品视香蕉蕉| 精品国产污黄网站在线观看| 91久久精品国产综合另类专区| 免费1级做爰片1000部视频| 国产精品无码一区二区在线国| 亚洲av精品一区二区三| 青青草免费在线爽视频| 亚洲国产欧美日韩欧美特级| 奇米狠狠色| 精品国产麻豆一区二区三区| 久久精品国产亚洲av天| 99re8这里有精品热视频免费| 国产乱人伦偷精品视频免| 日韩一区中文字幕在线| 欧美xxxx做受欧美88| 大地资源在线播放观看mv| 亚洲片在线视频| 日本刺激视频一区二区| 成年女人粗暴毛片免费观看 | 精品人妻在线一区二区三区在线 | 国产高清精品自在线看| 白白在线免费观看视频| 内射人妻无套中出无码| 欧美疯狂性xxxxxbbbbb| 无码中文字幕久久久久久| 久久久精品人妻一区二区三区游戏 | 日本a一区二区三区在线| 蜜桃av在线免费网站 | 成人中文乱幕日产无线码| 蜜桃臀无码内射一区二区三区| 色人阁第四色视频合集网| 亚洲精品第一页在线观看 | 精品久久综合亚洲伊人| 国产一区二区三区四区色| 激情五月婷婷一区二区| 国外精品视频在线观看免费| 亚洲性无码av在线| 美女免费视频观看网址|