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

?

基于C#.NET的成績(jī)管理模塊的設(shè)計(jì)與實(shí)現(xiàn)

2017-12-25 00:45:02馬秀榮莊冀
關(guān)鍵詞:語(yǔ)句應(yīng)用程序對(duì)象

馬秀榮 莊冀

?

基于C#.NET的成績(jī)管理模塊的設(shè)計(jì)與實(shí)現(xiàn)

馬秀榮 莊冀

(1.呼倫貝爾學(xué)院計(jì)算機(jī)學(xué)院 內(nèi)蒙古 海拉爾 021008 2.嘉興學(xué)院機(jī)電工程學(xué)院 浙江 南湖區(qū) 314000)

C#是基于NET平臺(tái)開發(fā)的一種為.NET Framework設(shè)計(jì)的開發(fā)語(yǔ)言,NET Framework提供了一個(gè)操作數(shù)據(jù)庫(kù)的技術(shù)---ADO.NET,MySql是一個(gè)開源的小型數(shù)據(jù)庫(kù)管理系統(tǒng),具有體積小、速度快、總體擁有成本低等特點(diǎn)。本文以成績(jī)管理模塊的設(shè)計(jì)與實(shí)現(xiàn)介紹了基于C#語(yǔ)言的程序開發(fā)過程。

C#;MySql數(shù)據(jù)庫(kù);ADO;成績(jī)管理

1.引言

C#是專門為快速編寫在.NET框架上運(yùn)行的各種應(yīng)用程序而設(shè)計(jì)的。該語(yǔ)言保持C和C++語(yǔ)言風(fēng)格的表現(xiàn)力和簡(jiǎn)潔特征的同時(shí),簡(jiǎn)化了C++的復(fù)雜性,同時(shí)綜合了VB簡(jiǎn)單的可視化操作,以其強(qiáng)大的操作能力、優(yōu)雅的語(yǔ)法風(fēng)格、創(chuàng)新的語(yǔ)言特性和便捷的面向組件編程的支持實(shí)現(xiàn)了應(yīng)用程序的快速開發(fā),成為.NET平臺(tái)的首選編程語(yǔ)言[1]。

應(yīng)用C#語(yǔ)言來開發(fā)應(yīng)用程序需要訪問某種形式的數(shù)據(jù)庫(kù)。MySQL是一個(gè)開放源碼的小型關(guān)聯(lián)式數(shù)據(jù)庫(kù)管理系統(tǒng),開發(fā)者為瑞典MySQL AB公司。目前MySQL被廣泛地應(yīng)用在個(gè)人使用者和中小型網(wǎng)站中。由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點(diǎn),許多個(gè)人使用者和中小型網(wǎng)站選擇MySQL作為數(shù)據(jù)庫(kù),從而降低總體擁有成本[2]。

2.ADO數(shù)據(jù)庫(kù)訪問技術(shù)

ADO(Active Data Object).NET是微軟.NET數(shù)據(jù)庫(kù)的訪問框架,它是數(shù)據(jù)庫(kù)應(yīng)用程序和數(shù)據(jù)源之間溝通的橋梁,主要提供一個(gè)面向?qū)ο蟮臄?shù)據(jù)訪問架構(gòu),用來開發(fā)數(shù)據(jù)庫(kù)應(yīng)用程序。ADO.NET由.NET框架數(shù)據(jù)提供程序和DataSet兩部分組成,前者包含了Connection、Command、DataReader、DataAdapter對(duì)象在內(nèi)的組件,后者是ADO.NET斷開式結(jié)構(gòu)的核心組件[3]。本模塊是在連接狀態(tài)下實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的訪問,主要用到了以下對(duì)象。

2.1 Connection對(duì)象

Connection對(duì)象是一個(gè)與數(shù)據(jù)庫(kù)進(jìn)行連接的對(duì)象,包含著與數(shù)據(jù)源創(chuàng)建連接的信息。沒有使用連接對(duì)象打開數(shù)據(jù)庫(kù),是無法從數(shù)據(jù)庫(kù)中讀取數(shù)據(jù)的。這個(gè)對(duì)象在ADO.NET 的最底層[1]。

2.2 Command對(duì)象

Command對(duì)象用于返回?cái)?shù)據(jù)、修改數(shù)據(jù)、運(yùn)行存儲(chǔ)過程,以及發(fā)送或檢索參數(shù)信息的數(shù)據(jù)庫(kù)命令。這個(gè)對(duì)象是架構(gòu)在Connection上,也就是Command對(duì)象是通過連接到數(shù)據(jù)源的Connection對(duì)象來下命令的;所以Connection連接到哪個(gè)數(shù)據(jù)庫(kù),Command對(duì)象的命令就下到哪里[1]。

2.3 DataReader對(duì)象

DataReader對(duì)象通過Command對(duì)象提供從數(shù)據(jù)檢索信息的功能,是一次一條記錄的向下讀取數(shù)據(jù)源中的數(shù)據(jù),不作其它的操作。因?yàn)镈ataReader在讀取數(shù)據(jù)的時(shí)候限制了每次只讀取一條記錄,而且只能只讀,所以使用起來不但節(jié)省資源而且效率很高[1]。

3.ADO數(shù)據(jù)庫(kù)開發(fā)過程

3.1 安裝驅(qū)動(dòng)軟件

要連接MySql數(shù)據(jù)庫(kù)必須首先下載MySql官方的連接.net的文件“mysql-connector-net-6.6.6-noinstall.zip”,解壓該文件后,根據(jù).Framework選擇相應(yīng)的版本,在文件夾中需選擇“mysql.data.dll”文件添加到項(xiàng)目的引用中。

3.2 添加引用

在項(xiàng)目的解決方案內(nèi),右鍵單擊“引用”——選擇“添加引用”——在彈出的對(duì)話框中,選擇“瀏覽”——找到文件“mysql.data.dll”——單擊“確定”,則在引用下會(huì)出現(xiàn)“mysql.data”。在添加引用之后,可以在代碼窗口的命名空間處添加using語(yǔ)句,語(yǔ)句為:usingMySql.Data.MySqlClient;在命名空間使用using語(yǔ)句最大的優(yōu)點(diǎn)是當(dāng)引用數(shù)據(jù)庫(kù)對(duì)象時(shí)不必每次輸入過長(zhǎng)的名稱。

3.3 建立應(yīng)用程序和MySql數(shù)據(jù)庫(kù)的連接

在MySql數(shù)據(jù)庫(kù)中已建立待訪問的數(shù)據(jù)庫(kù)文件“stuManagerDB”,里面有三張表,分別為學(xué)生表、課程表和成績(jī)表。在應(yīng)用程序中首先要?jiǎng)?chuàng)建Connection對(duì)象,語(yǔ)句為:MySqlConnection conn=new MySqlConnection();然后設(shè)置連接對(duì)象的ConnctionString屬性,屬性值為"Server=localhost;uid=root;pwd=root;Database=stuManagerDB";其中,Server是服務(wù)器名稱,uid是賬戶,pwd是密碼,Database是訪問數(shù)據(jù)庫(kù)的名稱。

3.4 打開數(shù)據(jù)庫(kù)

在設(shè)置連接對(duì)象的連接字符串屬性后,需使用Open()方法來打開連接操作。語(yǔ)句為:conn.Open();

3.5 設(shè)置Command 對(duì)象

3.5.1. 實(shí)例化Command 對(duì)象。

Command對(duì)象在執(zhí)行SQL命令之前,需設(shè)置其CommandText屬性和Connection屬性。

語(yǔ)句為:

stringsqlStr = "select * from student";//SQL字符串

MySqlCommand com= new MySqlCommand();

Com.Connection=conn;

com.CommandText = sqlStr;

3.5.2. 發(fā)送操作指令,執(zhí)行SQL命令

執(zhí)行SQL命令可以分為兩種情況:有查詢方法和非查詢方法。執(zhí)行查詢操作時(shí)可以使用Command對(duì)象的ExecuteScalar()方法或ExecuteReader()方法,但二者返回的類型不同,ExecuteReader()方法返回MySqlDataReader類型,ExecuteScalar()方法返回object 類型。當(dāng)?shù)玫紻ataReader對(duì)象后,還可以調(diào)用其Read()方法來讀取一行字符流,若想得到數(shù)據(jù)流的某一列,則可以執(zhí)行g(shù)et()方法來實(shí)現(xiàn)。當(dāng)對(duì)數(shù)據(jù)庫(kù)進(jìn)行非查詢操作時(shí),Command對(duì)象可以執(zhí)行ExecuteNonQuery()方法來改變數(shù)據(jù)庫(kù)中的數(shù)據(jù)。

3.6 關(guān)閉操作

若已打開DataReader對(duì)象,對(duì)數(shù)據(jù)庫(kù)訪問結(jié)束后需先被關(guān)閉,語(yǔ)句為:dr.Close();然后再調(diào)用連接對(duì)象的Close方法來關(guān)閉到數(shù)據(jù)庫(kù)的連接,語(yǔ)句為:conn.Close();

4.設(shè)計(jì)實(shí)現(xiàn)

4.1 總體設(shè)計(jì)

學(xué)生成績(jī)管理模塊主要實(shí)現(xiàn)了教師可以查詢學(xué)生成績(jī)信息、添加學(xué)生成績(jī)信息、修改學(xué)生成績(jī)信息和刪除學(xué)生成績(jī)信息的功能。功能模塊圖如圖1所示。

4.2 窗體設(shè)計(jì)

首先建立一個(gè)項(xiàng)目文件“學(xué)生成績(jī)管理”,在該項(xiàng)目下新建一個(gè)窗體“frmScoreManagement”,窗體中需使用的控件如表1所示:

其中,列表視圖“l(fā)vScoreQuery”來顯示查詢結(jié)果,三個(gè)命令按鈕對(duì)應(yīng)的單擊事件分別實(shí)現(xiàn)添加學(xué)生成績(jī)信息、修改學(xué)生成績(jī)信息和刪除學(xué)生成績(jī)信息的功能。文本框來顯示“課程編號(hào)”,“課程名稱”,“學(xué)生姓名”,“學(xué)生成績(jī)”信息,組合框顯示“學(xué)生學(xué)號(hào)”信息。界面實(shí)現(xiàn)效果如圖2所示。

表1 控件及屬性

圖2 成績(jī)管理運(yùn)行界面

4.3 核心代碼

//窗體加載時(shí),在列表視圖中顯示查詢信息

private void frmScoreMag_Load(object sender, EventArgs e)

{

string conString = "server=localhost;uid=root;pwd

=root;database=stuManagerDB";//連接字符串

MySqlConnection conn = new MySqlConnection

(conString);//連接對(duì)象

conn.Open();//打開連接

string sqlStr = "select sNo from student";//查找選課學(xué)生的學(xué)號(hào)

MySqlCommand com = new MySqlCommand

(sqlStr, conn);

MySqlDataReaderdr = com.ExecuteReader();

while(dr.Read())

{

cboStudentNo.Items.Add(dr["sNo"]);//在組合框內(nèi)顯示學(xué)號(hào)

}

cboStudentNo.SelectedIndex = 0;

dr.Close();

conn.Close();

showScoreMsg();//在列表視圖中顯示查詢結(jié)果

}

//插入學(xué)生成績(jī)

private void btnAdd_Click(object sender, EventArgs e)

{

DBHelper.ChangeData(sql);

string sqlStr=string.Format("insert into score(sNo,curNo,grade) values('{0}','{1}',{2})", cboStudentNo.Text, txtCourseId.Text, txtScore.Text);

DBHelper.ChangeData(sqlStr);//調(diào)用ChangeData()方法實(shí)現(xiàn)插入操作

showScoreMsg();

}

//刪除學(xué)生成績(jī)

privatevoid btnDelete_Click(object sender, EventArgs e)

{

string sqlStr=string.Format("delete from score wheresno='{0}' and curno='{1}'", cboStudentNo.Text, txtCourseId.Text, txtScore.Text);

DBHelper.ChangeData(sqlStrl); //調(diào)用ChangeData()方法實(shí)現(xiàn)刪除操作

showScoreMsg();}

//修改學(xué)生成績(jī)

private void btnUpdate_Click(object sender, EventArgs e)

{

string sqlStr = string.Format("update score set grade={0} where sno='{1}' and curno='{2}'", txtScore.Text, cboStudentNo.Text, txtCourseId.Text);

DBHelper.ChangeData(sqlStr); //調(diào)用ChangeData()方法實(shí)現(xiàn)更新操作

showScoreMsg();

}

5.結(jié)束語(yǔ)

本文主要闡述了在C#.NET應(yīng)用程序中,利用ADO.NET技術(shù)對(duì)數(shù)據(jù)庫(kù)的訪問操作。文中對(duì)數(shù)據(jù)庫(kù)的訪問步驟可以幫助初學(xué)者有效地連接MySql數(shù)據(jù)庫(kù),通過具體實(shí)例對(duì)ADO.NET中的數(shù)據(jù)提供對(duì)象的屬性和方法進(jìn)行了具體的應(yīng)用,有效地完成了對(duì)學(xué)生成績(jī)信息的查詢、添加、修改和刪除操作。

[1]甘勇,尚展壘.C#程序設(shè)計(jì)[M].北京:人民郵電出版社,2016.

[2]劉志.中小型超市管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D].西安:西安電子科技大學(xué),2013.

[3]馬駿 C#程序設(shè)計(jì)及應(yīng)用教程[M].北京:人民郵電出版社,2009.

責(zé)任編輯:烏曉梅

2017-11-16

馬秀榮(1976-),女,漢族,呼倫貝爾學(xué)院計(jì)算機(jī)學(xué)院,副教授,碩士。研究方向:計(jì)算機(jī)應(yīng)用。

莊冀(1995-),男,漢族,嘉興學(xué)院機(jī)電工程學(xué)院。研究方向:測(cè)控技術(shù)與儀器。

TP311.52

A

1009-4601(2017)06-0134-04

猜你喜歡
語(yǔ)句應(yīng)用程序對(duì)象
神秘來電
睿士(2023年2期)2023-03-02 02:01:09
重點(diǎn):語(yǔ)句銜接
刪除Win10中自帶的應(yīng)用程序
攻略對(duì)象的心思好難猜
意林(2018年3期)2018-03-02 15:17:24
精彩語(yǔ)句
基于熵的快速掃描法的FNEA初始對(duì)象的生成方法
區(qū)間對(duì)象族的可鎮(zhèn)定性分析
如何搞定語(yǔ)句銜接題
關(guān)閉應(yīng)用程序更新提醒
電腦迷(2012年15期)2012-04-29 17:09:47
三星電子將開設(shè)應(yīng)用程序下載商店
黔西县| 鄂伦春自治旗| 哈巴河县| 涞水县| 宜君县| 浦北县| 安徽省| 措勤县| 宁阳县| 旬邑县| 藁城市| 信阳市| 宜城市| 淅川县| 盐亭县| 乃东县| 玛沁县| 巴青县| 钦州市| 郴州市| 邹平县| 白城市| 元江| 恩施市| 邳州市| 台湾省| 邹平县| 富川| 石棉县| 新昌县| 阿瓦提县| 石阡县| 肃北| 彭泽县| 雷波县| 伊宁县| 原平市| 昆山市| 灵丘县| 舒城县| 唐山市|