国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于.NET框架的MySQL數(shù)據(jù)庫(kù)類的教學(xué)示范

2021-05-19 01:42:38馬玉春吳淑婷汪文彬
電子元器件與信息技術(shù) 2021年2期
關(guān)鍵詞:字符串數(shù)據(jù)表數(shù)據(jù)源

馬玉春,吳淑婷,汪文彬

(海南熱帶海洋學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,海南 三亞 572022)

0 引言

面向?qū)ο缶幊淌且环N直觀和結(jié)構(gòu)簡(jiǎn)單的程序設(shè)計(jì)方法,比較符合人類認(rèn)識(shí)現(xiàn)實(shí)世界的思維方式。一般將一個(gè)系統(tǒng)分解為若干個(gè)對(duì)象,這些對(duì)象是相對(duì)獨(dú)立的,但又可以相互配合、連接和協(xié)調(diào),從而共同完成整個(gè)系統(tǒng)所要實(shí)現(xiàn)的功能和任務(wù)[1]。計(jì)算機(jī)相關(guān)專業(yè)的學(xué)生在學(xué)完面向過(guò)程的“C語(yǔ)言程序設(shè)計(jì)”課程后,要實(shí)現(xiàn)面向?qū)ο蟮乃季S習(xí)慣的轉(zhuǎn)變存在一定的困難。

MySQL是最流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)之一,采用SQL語(yǔ)言訪問(wèn)數(shù)據(jù)庫(kù),通用性比較強(qiáng),目前使用該數(shù)據(jù)庫(kù)的主流公司與組織有Facebook、Github、YouTube、Twitter、PayPal、諾基亞、Spotify、Netflix等。MySQL 軟件采用了雙授權(quán)政策,分為社區(qū)版(免費(fèi))和商業(yè)版,由于其體積小、速度快、總體擁有成本低,尤其是開(kāi)放源碼這一特點(diǎn),一般中小型網(wǎng)站的開(kāi)發(fā)都選擇MySQL作為網(wǎng)站數(shù)據(jù)庫(kù),高校也經(jīng)常采用此數(shù)據(jù)庫(kù)系統(tǒng)用于教學(xué)[2]。文獻(xiàn)[3]在Visual Basic Express 2010開(kāi)發(fā)環(huán)境下,基于.NET框架實(shí)現(xiàn)了一個(gè)Access數(shù)據(jù)庫(kù)類。MySQL數(shù)據(jù)庫(kù)支持遠(yuǎn)程訪問(wèn),涉及用戶名、密碼、端口號(hào)和服務(wù)器名稱(或IP地址)等,更適合屬性與方法的表達(dá),因而,本文在文獻(xiàn)[3]的基礎(chǔ)之上,采用最新版的Visual Studio Community 2019開(kāi)發(fā)環(huán)境和新版的.NET框架,使用 Visual Basic語(yǔ)言實(shí)現(xiàn)MySQL數(shù)據(jù)庫(kù)類MySqlHelper,進(jìn)行數(shù)據(jù)庫(kù)對(duì)象的初始化,實(shí)現(xiàn)查找、刪除、增加和修改記錄操作,培養(yǎng)學(xué)生的面向?qū)ο笏季S。

1 通過(guò)Visual Basic .NET訪問(wèn)MySQL數(shù)據(jù)庫(kù)

MySQL數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序不是.NET框架的一部分,Visual Basic無(wú)法直接操作,需要下載并安裝文獻(xiàn)[4]中所列的“Connector/NET”驅(qū)動(dòng)程序,這里選擇8.0.19版的 Windows安裝程序,安裝后的路徑如下所示,該驅(qū)動(dòng)程序需要使用4.5.2版的.NET框架[2]。

C:Program Files(x86)MySQLMySQL Connector Net 8.0.19Assembliesv4.5.2

新建的VB項(xiàng)目需要添加對(duì)MySql.Data.dll 的引用,并在項(xiàng)目中分別導(dǎo)入(Imports)MySql.Data和MySql.Data.MySqlClient兩個(gè)類,這樣才可以使用ADO.NET操作MySQL 數(shù)據(jù)庫(kù)。ADO.NET模型中的DataSet是數(shù)據(jù)的內(nèi)存駐留表示形式,它提供了獨(dú)立于數(shù)據(jù)源的一致關(guān)系編程模型[5]。DataSet表示整個(gè)數(shù)據(jù)集,其中包含表、約束和表之間的關(guān)系。由于DataSet獨(dú)立于數(shù)據(jù)源,因此DataSet可以包含應(yīng)用程序本地的數(shù)據(jù),也可以包含來(lái)自多個(gè)數(shù)據(jù)源的數(shù)據(jù)。與現(xiàn)有數(shù)據(jù)源的交互通過(guò)DataAdapter適配器來(lái)控制。DataSet、DataAdapter與數(shù)據(jù)源之間的關(guān)系如圖1所示。

圖1 DataSet、DataAdapter 和數(shù)據(jù)源之間的關(guān)系

2 主要屬性

MySqlHelper類提供的外部可見(jiàn)的只讀屬性如表1所示,這些屬性可以方便地用于數(shù)據(jù)庫(kù)操作以及在 DataGridView控件中使用,將數(shù)據(jù)記錄以表格的形式進(jìn)行瀏覽和修改。

表1 MySqlHelper 類的可見(jiàn)屬性

ds是一個(gè)只讀屬性,表示當(dāng)前的DataSet對(duì)象,其內(nèi)部定義為DataSet對(duì)象_ds. ds屬性對(duì)象有一個(gè)布爾屬性 HasChanges,用來(lái)判斷數(shù)據(jù)是否變化,該屬性可用于自動(dòng)將ds中變化的數(shù)據(jù)保存到數(shù)據(jù)源。

dt是一個(gè)只讀屬性,包含在ds對(duì)象中,表示當(dāng)前的DataTable對(duì)象,其內(nèi)部定義為DataTable對(duì)象_dt,該屬性對(duì)象可用于將數(shù)據(jù)表綁定到DataGridView控件,從而實(shí)現(xiàn)數(shù)據(jù)表的瀏覽與修改。

nTables是一個(gè)只讀屬性,表示表的數(shù)目。這里一次查詢一張表,因而,正常情況下,該屬性為1;否則,該屬性為0.該屬性對(duì)應(yīng)的內(nèi)部變量為Integer類型的_nTables變量。

對(duì)數(shù)據(jù)庫(kù)進(jìn)行編程操作,如果不知道數(shù)據(jù)表的記錄數(shù),往往比較困難。nRecords是一個(gè)只讀屬性,返回?cái)?shù)據(jù)表的記錄數(shù)。其實(shí),所謂的記錄數(shù)只是數(shù)據(jù)表的行數(shù),因而,調(diào)用了Rows集合的Count屬性。如果數(shù)據(jù)表的數(shù)目為0,則直接返回0即可。nRecords屬性對(duì)應(yīng)的內(nèi)部變量為Integer類型的_nRecords變量。

3 連接字符串的自動(dòng)生成

在圖1中,MySQL數(shù)據(jù)庫(kù)使用MySqlDataAdapter適配器建立D a t a S e t 與數(shù)據(jù)源之間的連接,在對(duì)MySqlDataAdapter對(duì)象進(jìn)行初始化的時(shí)候,需要提供查詢字符串和連接字符串。查詢字符串是一個(gè)SELECT語(yǔ)句,告知查詢哪一張表,以及如何查詢?cè)摫恚贿B接字符串根據(jù)提供的MySQL數(shù)據(jù)庫(kù)服務(wù)器的用戶名、密碼、服務(wù)器名稱或IP地址、數(shù)據(jù)庫(kù)名稱等生成的字符串,私有方法GetConnectionString實(shí)現(xiàn)這一功能。為了增加MySqlHelper數(shù)據(jù)庫(kù)類的通用性,允許客戶端從服務(wù)器獲取公鑰,因而參數(shù)AllowPublicKeyRetrieval設(shè)置為True,不使用SSL連接,因而SslMode設(shè)置為MySqlSslMode.None.如果需要增加安全性,則可以修改這兩個(gè)參數(shù),并對(duì)服務(wù)器進(jìn)行相關(guān)配置。

4 構(gòu)造函數(shù)和數(shù)據(jù)表的填充

產(chǎn)生連接字符串的私有方法 GetConnectionString 所使用的參數(shù)大部分來(lái)自構(gòu)造函數(shù)。為了方便高效開(kāi)發(fā)應(yīng)用程序,除了數(shù)據(jù)庫(kù)名稱 dbName 參數(shù)外,其它所有參數(shù)都有缺省值。

公共方法FillData將數(shù)據(jù)源中的數(shù)據(jù)表填充到私有對(duì)象_ds和_dt,從而得到表1中所示的外部可見(jiàn)的屬性對(duì)象ds和dt.如果在填充數(shù)據(jù)的過(guò)程中拋出異常,則將異常信息寫(xiě)入私有字符串變量_strErrorAdapter中,該變量對(duì)應(yīng)表1中的ErrorAdapter屬性。有了數(shù)據(jù)表DataTable對(duì)象dt,即可簡(jiǎn)單地通過(guò)dt對(duì)象對(duì)二維關(guān)系表進(jìn)行修改、添加和刪除操作,將在第6節(jié)給出應(yīng)用實(shí)例。FillData方法中的私有整型變量_nTables對(duì)應(yīng)表1中的nTables屬性。

5 數(shù)據(jù)源的更新

對(duì)dt的操作僅限于內(nèi)存,公有方法WriteData將內(nèi)存輸入重新寫(xiě)入數(shù)據(jù)源。調(diào)用DataAdapter的Update方法可以將DataSet中的更改解析回?cái)?shù)據(jù)源。當(dāng)調(diào)用Update方法時(shí),DataAdapter會(huì)分析已做的更改并執(zhí)行相應(yīng)的命令(INSERT、UPDATE或DELETE)。當(dāng)DataAdapter遇到對(duì)DataRow所做的更改時(shí),它將使用InsertCommand、UpdateCommand或DeleteCommand來(lái)處理該更改。這樣,程序員就可以通過(guò)在設(shè)計(jì)時(shí)指定命令語(yǔ)法并在可能時(shí)通過(guò)使用存儲(chǔ)過(guò)程來(lái)盡量提高ADO.NET應(yīng)用程序的性能[5]。

6 教學(xué)應(yīng)用

MySQL數(shù)據(jù)庫(kù)類MySqlHelper將用戶名、密碼、服務(wù)器與端口及數(shù)據(jù)庫(kù)名稱與數(shù)據(jù)表等諸多屬性組合起來(lái),并可以方便地操作數(shù)據(jù)表,更新數(shù)據(jù)源。如下第(1)條語(yǔ)句使用缺省參數(shù),傳入數(shù)據(jù)庫(kù)名稱“dbAlarm”生成MySqlHelper對(duì)象myData,第(2)條語(yǔ)句通過(guò)strQuery參數(shù)選擇一張需要操作的數(shù)據(jù)表,第(3)條語(yǔ)句即可通過(guò)dt屬性增加一條空的記錄,第(4)條語(yǔ)句刪除第I條記錄,第(5)條語(yǔ)句更新第I條記錄的“aTime”字段值,最后一條語(yǔ)句將所有數(shù)據(jù)變化寫(xiě)入數(shù)據(jù)源。

Visual Basic是快速桌面語(yǔ)言,與MySqlHelper數(shù)據(jù)庫(kù)類相結(jié)合,可以讓學(xué)生體會(huì)類的設(shè)計(jì)方法與應(yīng)用,也可以加深對(duì)數(shù)據(jù)庫(kù)的理解及熟悉對(duì)MySQL數(shù)據(jù)庫(kù)的操作,從而為進(jìn)一步開(kāi)發(fā)基于MySQL數(shù)據(jù)庫(kù)的Web應(yīng)用程序打下基礎(chǔ)。

7 結(jié)語(yǔ)

MySQL數(shù)據(jù)庫(kù)在Web應(yīng)用程序中使用較多,在國(guó)內(nèi)外許多著名網(wǎng)站中都得到了應(yīng)用。本文使用最新版的Visual Studio Community 2019免費(fèi)開(kāi)發(fā)環(huán)境,基于.NET框架實(shí)現(xiàn)了一個(gè)Visual Basic數(shù)據(jù)庫(kù)類,可以方便地對(duì)MySQL數(shù)據(jù)庫(kù)進(jìn)行操作,從而輔助桌面應(yīng)用程序的開(kāi)發(fā)。該數(shù)據(jù)庫(kù)類可以作為一個(gè)面向?qū)ο蟮慕虒W(xué)案例,也可直接用于工程項(xiàng)目。

猜你喜歡
字符串數(shù)據(jù)表數(shù)據(jù)源
湖北省新冠肺炎疫情數(shù)據(jù)表
黨員生活(2020年2期)2020-04-17 09:56:30
基于列控工程數(shù)據(jù)表建立線路拓?fù)潢P(guān)系的研究
Web 大數(shù)據(jù)系統(tǒng)數(shù)據(jù)源選擇*
基于不同網(wǎng)絡(luò)數(shù)據(jù)源的期刊評(píng)價(jià)研究
基于真值發(fā)現(xiàn)的沖突數(shù)據(jù)源質(zhì)量評(píng)價(jià)算法
圖表
一種新的基于對(duì)稱性的字符串相似性處理算法
基于VSL的動(dòng)態(tài)數(shù)據(jù)表應(yīng)用研究
河南科技(2014年24期)2014-02-27 14:19:25
分布式異構(gòu)數(shù)據(jù)源標(biāo)準(zhǔn)化查詢?cè)O(shè)計(jì)與實(shí)現(xiàn)
依據(jù)字符串匹配的中文分詞模型研究
伽师县| 两当县| 绍兴市| 饶平县| 通化县| 芷江| 阳新县| 健康| 东兴市| 渭源县| 商河县| 苗栗县| 大悟县| 平凉市| 若尔盖县| 论坛| 宣化县| 海晏县| 潼关县| 荔浦县| 平原县| 洪湖市| 芜湖县| 阜新| 大方县| 隆回县| 邵阳县| 兴隆县| 平远县| 无极县| 保康县| 呼图壁县| 绥阳县| 吉林省| 修武县| 祁连县| 杭锦旗| 汤原县| 阜宁县| 大兴区| 五家渠市|