999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

2013-04-29 23:33:45隋東
課程教育研究·中 2013年5期
關(guān)鍵詞:數(shù)據(jù)庫語言

隋東

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

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

【中圖分類號】G42 【文獻標識碼】A 【文章編號】2095-3089(2013)05-0243-03

前言

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

實現(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ù)庫進行連接,優(yōu)點是易于使用、高速度、低內(nèi)存支出和占用磁盤空間較少。

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

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

(一)需求分析

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

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

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

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

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

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

圖2學生成績管理E-R圖

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

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

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

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

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

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

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

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

三、界面設(shè)計

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

項目工程名稱為“學生成績管理”。

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

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

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

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

四、代碼設(shè)計

.NET框架的一個主要組成部分是類庫,這些類被拆分為命名空間,它是類庫的邏輯分區(qū)。類庫所采用的命名空間是層次結(jié)構(gòu),即命名空間下又可以再分成子命名空間,每個命名空間都包含一組按照功能劃分的相關(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ù);使用時調(diào)用即可,避免相同功能模塊的重復建設(shè)。針對該系統(tǒng),筆者創(chuàng)建了SqlConnection、SqlCommand公共類的實例和系統(tǒng)常用的公共函數(shù)。

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

五、報表設(shè)計

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

本系統(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è)計完成系統(tǒng)主窗體和系統(tǒng)的增、刪、改、查詢功能。

七、結(jié)論

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

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

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

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

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

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

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

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

參考文獻:

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

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

[3]呂軍.軟件項目綜合實訓(.NET篇)[M],清華大學出版社,2010,96~97

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

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

猜你喜歡
數(shù)據(jù)庫語言
語言是刀
文苑(2020年4期)2020-05-30 12:35:30
讓語言描寫搖曳多姿
數(shù)據(jù)庫
財經(jīng)(2017年15期)2017-07-03 22:40:49
多向度交往對語言磨蝕的補正之道
數(shù)據(jù)庫
財經(jīng)(2017年2期)2017-03-10 14:35:35
累積動態(tài)分析下的同聲傳譯語言壓縮
數(shù)據(jù)庫
財經(jīng)(2016年15期)2016-06-03 07:38:02
數(shù)據(jù)庫
財經(jīng)(2016年3期)2016-03-07 07:44:46
數(shù)據(jù)庫
財經(jīng)(2016年6期)2016-02-24 07:41:51
我有我語言
主站蜘蛛池模板: 亚洲高清中文字幕在线看不卡| 国产激情无码一区二区APP| 久久午夜夜伦鲁鲁片无码免费| 色色中文字幕| 99这里只有精品免费视频| 精品国产免费观看一区| 亚洲日韩高清在线亚洲专区| 亚洲区欧美区| 日本a级免费| 国产高潮流白浆视频| 欧美日韩国产精品va| 亚洲精品成人片在线播放| 免费观看三级毛片| 色悠久久综合| 精品在线免费播放| 黄片一区二区三区| 国产天天色| 亚洲91在线精品| 四虎在线观看视频高清无码| 久久这里只有精品66| 国产女人在线观看| 国产日韩精品欧美一区灰| 广东一级毛片| 精品一区二区三区中文字幕| 久久青草热| 久久公开视频| 激情综合网址| 手机成人午夜在线视频| 国产精品乱偷免费视频| 好久久免费视频高清| 久热中文字幕在线| 成色7777精品在线| 中文字幕有乳无码| 亚洲人成网18禁| 天天操天天噜| 国产精品性| 这里只有精品在线播放| 91精品在线视频观看| 亚洲h视频在线| 91成人精品视频| 99在线国产| 黄色在线网| 国产精女同一区二区三区久| 国产高清在线精品一区二区三区| 亚洲免费黄色网| 亚洲无线视频| 91青青视频| 久久精品丝袜| 国产精品视频免费网站| 精品视频91| 国产精品尤物铁牛tv| 亚洲精品无码日韩国产不卡| 欧美性久久久久| 免费毛片网站在线观看| 91高清在线视频| 亚洲国产成人在线| 国产青青操| 真人高潮娇喘嗯啊在线观看| 特级aaaaaaaaa毛片免费视频| 东京热av无码电影一区二区| 欧美成人亚洲综合精品欧美激情| 亚洲欧美不卡视频| 婷婷午夜天| 97亚洲色综久久精品| 青青操国产| 亚洲欧洲日韩国产综合在线二区| 99尹人香蕉国产免费天天拍| 中国一级特黄视频| 国产不卡在线看| 亚洲成人精品| 国产精品欧美激情| 国内精品九九久久久精品| 激情成人综合网| 国产特一级毛片| 精品久久人人爽人人玩人人妻| 呦女精品网站| 精品伊人久久久香线蕉| 成人福利在线视频免费观看| 99精品热视频这里只有精品7| 91精品视频在线播放| a毛片免费看| 自拍中文字幕|