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

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

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

馬玉春,吳淑婷,汪文彬

(海南熱帶海洋學(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ò)程中拋出異常,則將異常信息寫入私有字符串變量_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)存輸入重新寫入數(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ù)變化寫入數(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ù)庫(kù)
數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)
兩種新的非確定數(shù)據(jù)庫(kù)上的Top-K查詢
數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)
主站蜘蛛池模板: 亚洲精品高清视频| 亚洲成人高清无码| 国产欧美成人不卡视频| 在线观看免费黄色网址| 日韩av无码DVD| 日韩精品中文字幕一区三区| 国产无码网站在线观看| 东京热高清无码精品| 国产熟睡乱子伦视频网站| 亚洲中文字幕无码mv| 嫩草影院在线观看精品视频| 久久综合丝袜日本网| 老色鬼久久亚洲AV综合| 欧美啪啪网| 99热最新网址| 4虎影视国产在线观看精品| 免费A级毛片无码无遮挡| 98超碰在线观看| 亚洲婷婷在线视频| 毛片大全免费观看| 啪啪啪亚洲无码| 国产欧美精品午夜在线播放| 久久香蕉国产线看精品| 无码国内精品人妻少妇蜜桃视频| 在线免费看片a| 色偷偷一区二区三区| 欧美另类精品一区二区三区| 国产呦视频免费视频在线观看 | 亚洲综合色婷婷| 国产亚卅精品无码| 日本伊人色综合网| 国产精品白浆在线播放| 色悠久久久| 国产无码网站在线观看| 99久久精品国产自免费| 伊人久久大香线蕉综合影视| 国产精品国产三级国产专业不| 国产美女自慰在线观看| 综合亚洲色图| AV熟女乱| 亚洲精品成人片在线观看| 98精品全国免费观看视频| 国产欧美专区在线观看| 久久久久中文字幕精品视频| 欧美一区二区啪啪| 久久男人视频| 国产在线91在线电影| 日韩在线网址| 久久亚洲综合伊人| 精品久久久久久中文字幕女| 色哟哟精品无码网站在线播放视频| 午夜高清国产拍精品| 美臀人妻中出中文字幕在线| 91麻豆久久久| 亚洲免费福利视频| 色哟哟国产精品| 国产精女同一区二区三区久| 婷婷亚洲天堂| 国产视频一二三区| 国产在线观看第二页| 亚洲一区二区三区香蕉| 国产免费怡红院视频| 再看日本中文字幕在线观看| 综合天天色| 久久这里只有精品2| 99久久精品久久久久久婷婷| 国产精品永久久久久| 波多野结衣一区二区三视频| 99伊人精品| 亚洲第一网站男人都懂| 久久中文字幕不卡一二区| 爱做久久久久久| 一本大道香蕉中文日本不卡高清二区| 啦啦啦网站在线观看a毛片| 国内精品视频在线| 亚洲精品少妇熟女| 欧美特级AAAAAA视频免费观看| 亚洲精品成人福利在线电影| 在线免费a视频| 久久99国产综合精品女同| 欧美精品二区| 精品三级网站|