《C#語(yǔ)言程序設(shè)計(jì)基礎(chǔ)教程》課件單元7_第1頁(yè)
《C#語(yǔ)言程序設(shè)計(jì)基礎(chǔ)教程》課件單元7_第2頁(yè)
《C#語(yǔ)言程序設(shè)計(jì)基礎(chǔ)教程》課件單元7_第3頁(yè)
《C#語(yǔ)言程序設(shè)計(jì)基礎(chǔ)教程》課件單元7_第4頁(yè)
《C#語(yǔ)言程序設(shè)計(jì)基礎(chǔ)教程》課件單元7_第5頁(yè)
已閱讀5頁(yè),還剩75頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

單元七使用ADO.NET實(shí)現(xiàn)數(shù)據(jù)庫(kù)訪問(wèn)C#語(yǔ)言程序設(shè)計(jì)基礎(chǔ)教程任務(wù)7.1ADO.NET核心對(duì)象簡(jiǎn)介任務(wù)描述本節(jié)首先回顧有關(guān)數(shù)據(jù)庫(kù)的一些基本概念和常用的SQL語(yǔ)句,并且介紹本書(shū)開(kāi)發(fā)的“高校學(xué)生管理系統(tǒng)”(MySchool)系統(tǒng)需要的數(shù)據(jù)庫(kù)表結(jié)構(gòu);然后了解ADO.NET的相關(guān)術(shù)語(yǔ)和常用對(duì)象。預(yù)備知識(shí)要實(shí)現(xiàn)對(duì)ADO.NET的靈活操作,首先必須熟練掌握數(shù)據(jù)庫(kù)的相關(guān)概念、SQL語(yǔ)言以及存儲(chǔ)過(guò)程等數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)。數(shù)據(jù)庫(kù)是長(zhǎng)期存儲(chǔ)在計(jì)算機(jī)內(nèi)的、有組織的、可共享的數(shù)據(jù)集合。數(shù)據(jù)庫(kù)不僅具有固定的格式與特征,而且可以以表格的形式來(lái)存儲(chǔ)記錄,具有自動(dòng)化管理、快速查詢(xún)及統(tǒng)計(jì)等優(yōu)點(diǎn)。任務(wù)7.1ADO.NET核心對(duì)象簡(jiǎn)介預(yù)備知識(shí)7.1.1關(guān)系型數(shù)據(jù)庫(kù)簡(jiǎn)介數(shù)據(jù)庫(kù)系統(tǒng)主要經(jīng)歷了三個(gè)階段:網(wǎng)狀數(shù)據(jù)庫(kù)、層次數(shù)據(jù)庫(kù)和關(guān)系數(shù)據(jù)庫(kù),關(guān)系數(shù)據(jù)模型是當(dāng)前的主導(dǎo)數(shù)據(jù)模型,如Access、SQLServer、Oracle、DB2等。1.關(guān)系數(shù)據(jù)庫(kù)定義關(guān)系數(shù)據(jù)庫(kù)是一些相關(guān)的表和其他數(shù)據(jù)庫(kù)對(duì)象的集合,其含義可以解釋為以下三方面:(1)在關(guān)系數(shù)據(jù)庫(kù)中,信息被存放在二維表(table)中,一個(gè)關(guān)系數(shù)據(jù)庫(kù)中可以包含多個(gè)數(shù)據(jù)表,每個(gè)表又包含行(記錄)和列(字段)。(2)數(shù)據(jù)表之間是相互關(guān)聯(lián)的,通過(guò)主鍵和外鍵實(shí)現(xiàn)。(3)數(shù)據(jù)庫(kù)中除了包含數(shù)據(jù)表之外,還包含有其他數(shù)據(jù)庫(kù)對(duì)象,如視圖、存儲(chǔ)過(guò)程等。任務(wù)7.1ADO.NET核心對(duì)象簡(jiǎn)介預(yù)備知識(shí)7.1.1關(guān)系型數(shù)據(jù)庫(kù)簡(jiǎn)介2.主鍵和外鍵主鍵(PrimaryKey,PK)是指數(shù)據(jù)表中的某一列,該列的值能唯一地標(biāo)識(shí)一條記錄(一行)。如學(xué)生信息表中的“學(xué)號(hào)”可以唯一地標(biāo)識(shí)一個(gè)學(xué)生,而姓名則不行,因?yàn)榭赡艽嬖诙鄠€(gè)學(xué)生叫同一個(gè)名字的情況。主鍵的主要功能是實(shí)現(xiàn)數(shù)據(jù)的實(shí)體完整性,即主鍵的取值必須唯一,且不能為空。外鍵(ForeignKey,F(xiàn)K)是指表B中含有與另一個(gè)表A的主鍵相對(duì)應(yīng)的列組,那么在表B中該列組成為外鍵。外鍵的功能主要是實(shí)現(xiàn)參照完整性。使用外鍵時(shí)要保證外鍵和主鍵具有相同的數(shù)據(jù)類(lèi)型和長(zhǎng)度,名字相同。創(chuàng)建外鍵的優(yōu)點(diǎn)有:(1)實(shí)現(xiàn)表之間的關(guān)聯(lián)(2)根據(jù)主鍵列的值來(lái)檢查外鍵列的值的合法性。任務(wù)7.1ADO.NET核心對(duì)象簡(jiǎn)介預(yù)備知識(shí)7.1.2常用SQL語(yǔ)句SQL(StructuredQueryLanguage)即“結(jié)構(gòu)化查詢(xún)語(yǔ)言”是通用的關(guān)系數(shù)據(jù)庫(kù)語(yǔ)言,使用其可以方便的實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)的查找、新增、更新和刪除。SQL語(yǔ)言對(duì)數(shù)據(jù)的操縱分為數(shù)據(jù)庫(kù)查詢(xún)操作、數(shù)據(jù)插入操作、數(shù)據(jù)更新操作和數(shù)據(jù)刪除操作四種。任務(wù)7.1ADO.NET核心對(duì)象簡(jiǎn)介預(yù)備知識(shí)7.1.2常用SQL語(yǔ)句1.?dāng)?shù)據(jù)查詢(xún)操作數(shù)據(jù)查詢(xún)主要用于從表中查詢(xún)滿(mǎn)足條件的記錄,語(yǔ)法格式為:SELECT[ALL|DISTINCT]字段1,字段2,…FROM表或視圖[WHERE<篩選條件>][GROUPBY<字段名>[HAVING<條件表達(dá)式>]][ORDERBY<字段名>[ASC|DESC]]任務(wù)7.1ADO.NET核心對(duì)象簡(jiǎn)介預(yù)備知識(shí)7.1.2常用SQL語(yǔ)句說(shuō)明:(1)SELECT語(yǔ)句和FROM語(yǔ)句是必須的,方括號(hào)中的語(yǔ)句是可選的;(2)SELECT關(guān)鍵字后面的字段名指明要在查詢(xún)后顯示的列,各字段之間用逗號(hào)隔開(kāi)。若要查詢(xún)表中的所有字段使用“SELECT*”;(3)[ALL|DISTINCT]中DISTINCT表示不會(huì)顯示查詢(xún)結(jié)果中的重復(fù)行,ALL則顯示重復(fù)行;(4)GROUPBY短語(yǔ)用來(lái)將結(jié)果按指定的字段分組,如果帶HAVING表達(dá)式,則只有滿(mǎn)足表達(dá)式條件的才能輸出;(5)ORDERBY短語(yǔ)用來(lái)按指定字段排序,ASC為升序,DESC為降序。任務(wù)7.1ADO.NET核心對(duì)象簡(jiǎn)介預(yù)備知識(shí)7.1.2常用SQL語(yǔ)句2.?dāng)?shù)據(jù)插入操作數(shù)據(jù)插入操作主要用于向表中添加數(shù)據(jù)。語(yǔ)法格式為:INSERTINTO<表名>[(<字段1>[,<字段2>,…])]VALUES(<表達(dá)式1>[,<表達(dá)式2>,…])說(shuō)明:(1)當(dāng)向一條記錄的所有字段添加數(shù)據(jù)時(shí),表名后的字段可以省略,但是插入數(shù)據(jù)的具體值的數(shù)據(jù)類(lèi)型、長(zhǎng)度和先后順序必須和表結(jié)構(gòu)里面的一致;若只是插入某些字段,則必須列出插入字段對(duì)應(yīng)的字段名;(2)VALUE語(yǔ)句后的各個(gè)表達(dá)式的值即為插入的具體值。各表達(dá)式值的類(lèi)型、長(zhǎng)度和先后順序必須與指定的字段保持一致。任務(wù)7.1ADO.NET核心對(duì)象簡(jiǎn)介預(yù)備知識(shí)7.1.2常用SQL語(yǔ)句3.?dāng)?shù)據(jù)更新操作數(shù)據(jù)更新操作用于修改數(shù)據(jù)表中的一條或多條記錄。語(yǔ)法格式如下:UPDATE<表名>SET<字段名1>=<表達(dá)式1>[,<字段名1>=<表達(dá)式1>…][WHERE<條件表達(dá)式>]說(shuō)明:(1)通過(guò)SET語(yǔ)句可以用表達(dá)式值取代指定字段原有的值。(2)WHERE語(yǔ)句用于限定符合更新條件的記錄,此語(yǔ)句可以沒(méi)有,沒(méi)有的時(shí)候表示更新表中所有記錄的指定字段的值。任務(wù)7.1ADO.NET核心對(duì)象簡(jiǎn)介預(yù)備知識(shí)7.1.2常用SQL語(yǔ)句4.?dāng)?shù)據(jù)刪除操作用于刪除數(shù)據(jù)表中符合條件的一條或多條記錄。語(yǔ)法格式為:DELETEFROM<表名>[WHERE<條件表達(dá)式>]舉例說(shuō)明:實(shí)現(xiàn)增、刪、改、查的SQL語(yǔ)句用法。任務(wù)7.1ADO.NET核心對(duì)象簡(jiǎn)介任務(wù)實(shí)施1.ADO.NET概述ADO.NET是.NET中一組用于和數(shù)據(jù)源進(jìn)行交互的面向?qū)ο箢?lèi)庫(kù),提供了數(shù)據(jù)訪問(wèn)的高層接口。ADO.NET允許和不同類(lèi)型的數(shù)據(jù)源和數(shù)據(jù)庫(kù)進(jìn)行交互,數(shù)據(jù)源既可以是數(shù)據(jù)庫(kù),也可以是文本文件、Excel表格或者XML文件。ADO.NET類(lèi)最重要的優(yōu)點(diǎn)是支持與數(shù)據(jù)庫(kù)以斷開(kāi)連接的方式工作,即ADO.NET可以操作非連接的數(shù)據(jù),這就意味著應(yīng)用程序和數(shù)據(jù)源的連接會(huì)變少,服務(wù)器端的負(fù)載也會(huì)得以減輕。ADO.NET類(lèi)庫(kù)在System.Data命名空間內(nèi),根據(jù)訪問(wèn)數(shù)據(jù)庫(kù)的不同System.Data命名空間被劃分為4個(gè)數(shù)據(jù)庫(kù)客戶(hù)命名空間,本書(shū)主要使用MicrosoftSqlServer2008數(shù)據(jù)庫(kù)進(jìn)行應(yīng)用程序開(kāi)發(fā),因而在以后的章節(jié)中我們都使用System.Data.SqlClient命名空間。任務(wù)7.1ADO.NET核心對(duì)象簡(jiǎn)介實(shí)現(xiàn)從“登錄窗體”到“添加學(xué)員窗體”的跳轉(zhuǎn)。當(dāng)“系統(tǒng)登錄”窗體和“添加學(xué)員用戶(hù)”窗體創(chuàng)建完成后,希望在登錄窗體中輸入用戶(hù)名和密碼,選擇“用戶(hù)類(lèi)型”,點(diǎn)擊“登錄”按鈕后,跳轉(zhuǎn)到“添加學(xué)員用戶(hù)”窗體。這時(shí),就需要在“登錄”按鈕的Click事件處理程序中。舉例說(shuō)明:窗體跳轉(zhuǎn)方法。注意:此處使用了this.Hide()方法實(shí)現(xiàn)“用戶(hù)登錄窗體”的隱藏,也可以使用this.Visible=false;但是不能使用Close(),若使用了Close()方法則會(huì)導(dǎo)致程序的中止執(zhí)行。知識(shí)拓展任務(wù)7.1ADO.NET核心對(duì)象簡(jiǎn)介2.ADO.NET核心組件ADO.NET的主要通過(guò)兩個(gè)核心組件來(lái)完成對(duì)數(shù)據(jù)庫(kù)的操作,分別是DataSet和.NET數(shù)據(jù)提供程序。前者是ADO.NET的斷開(kāi)式結(jié)構(gòu)的核心組件。后者是專(zhuān)門(mén)為直接訪問(wèn)數(shù)據(jù)庫(kù),對(duì)其進(jìn)行快速的只進(jìn)、只讀訪問(wèn)數(shù)據(jù)等數(shù)據(jù)處理而設(shè)計(jì)的組件,包含Connection、Command、DataReader和DataAdapter對(duì)象。圖7-1是利用ADO.NET操作數(shù)據(jù)庫(kù)的簡(jiǎn)單示意圖。任務(wù)實(shí)施任務(wù)7.1ADO.NET核心對(duì)象簡(jiǎn)介圖7-1利用ADO.NET操作數(shù)據(jù)庫(kù)的簡(jiǎn)單示意圖3.ADO.NET常用對(duì)象ADO.NET對(duì)象模型中常用的對(duì)象有Connection對(duì)象、Command對(duì)象、DataReader對(duì)象、DataAdapter對(duì)象、DataSet對(duì)象。其功能如表7-9所示。任務(wù)實(shí)施任務(wù)7.1ADO.NET核心對(duì)象簡(jiǎn)介表7-9ADO.NET中常用對(duì)象針對(duì)前面已經(jīng)介紹的“高校學(xué)生管理系統(tǒng)”,下面將對(duì)實(shí)現(xiàn)應(yīng)用程序所需要的數(shù)據(jù)庫(kù)MySchool中主要的數(shù)據(jù)表的表結(jié)構(gòu)介紹如下:(1)學(xué)生信息表(Student),主要用于存儲(chǔ)有關(guān)學(xué)生的各項(xiàng)信息,表結(jié)構(gòu)如教材表7-10所示。(2)管理員信息表(Admin),用于存儲(chǔ)有關(guān)管理員的信息,表結(jié)構(gòu)如教材表7-11所示。(3)教師信息表(Teacher),用于存儲(chǔ)教師的基本信息,表結(jié)構(gòu)如教材表7-12所示。知識(shí)拓展任務(wù)7.1ADO.NET核心對(duì)象簡(jiǎn)介在本節(jié)中,首先回顧了關(guān)系數(shù)據(jù)庫(kù)及數(shù)據(jù)庫(kù)常用的SQL語(yǔ)句,然后向大家講解了ADO.NET核心組件與常用對(duì)象,最后對(duì)本書(shū)開(kāi)發(fā)的“高校學(xué)生管理系統(tǒng)”所需要的數(shù)據(jù)庫(kù)中的表結(jié)構(gòu)進(jìn)行了說(shuō)明。歸納總結(jié)任務(wù)7.1ADO.NET核心對(duì)象簡(jiǎn)介任務(wù)7.2“高校學(xué)生管理系統(tǒng)”數(shù)據(jù)庫(kù)連接實(shí)現(xiàn)任務(wù)描述在我們操作數(shù)據(jù)庫(kù)之前,首先要做的就是與數(shù)據(jù)庫(kù)創(chuàng)建連接。連接數(shù)據(jù)庫(kù)需要使用Connection對(duì)象,本節(jié)主要學(xué)習(xí)該對(duì)象的常用屬性和方法,理解使用該對(duì)象進(jìn)行數(shù)據(jù)庫(kù)連接的方法。要求實(shí)現(xiàn)與任務(wù)7.1創(chuàng)建的“學(xué)生管理系統(tǒng)”的數(shù)據(jù)庫(kù)的連接。預(yù)備知識(shí)不同的數(shù)據(jù)庫(kù)提供程序有不同的數(shù)據(jù)庫(kù)連接類(lèi),具體如表7-13所示。具體使用哪個(gè)連接類(lèi)要看我們使用的是什么類(lèi)型的數(shù)據(jù)庫(kù),本教程示例及應(yīng)用程序都使用SQLServer2008數(shù)據(jù)庫(kù)提供程序,因而使用SqlConnection類(lèi)。任務(wù)7.2“高校學(xué)生管理系統(tǒng)”數(shù)據(jù)庫(kù)連接實(shí)現(xiàn)表7-13.NETFrmework數(shù)據(jù)提供程序及相應(yīng)的連接類(lèi)預(yù)備知識(shí)7.2.1SqlConnection對(duì)象常用屬性SqlConnection對(duì)象常用屬性如表7-14所示。任務(wù)7.2“高校學(xué)生管理系統(tǒng)”數(shù)據(jù)庫(kù)連接實(shí)現(xiàn)表7-14SqlConnection對(duì)象常用屬性預(yù)備知識(shí)7.2.1SqlConnection對(duì)象常用屬性ConnectionString屬性所要求的字符串必須是一個(gè)規(guī)范化的、符合語(yǔ)法要求的字符串。其內(nèi)容是由多個(gè)被分號(hào)分開(kāi)的“參數(shù)名=參數(shù)值”組成。常用的參數(shù)名及含義如表7-15所示。任務(wù)7.2“高校學(xué)生管理系統(tǒng)”數(shù)據(jù)庫(kù)連接實(shí)現(xiàn)表7-15ConnectionString屬性字符串常用參數(shù)表預(yù)備知識(shí)7.2.2SqlConnection常用方法SqlConnection對(duì)象常用方法如表7-16所示。在ADO.NET中,創(chuàng)建與數(shù)據(jù)庫(kù)的連接并且操作完數(shù)據(jù)庫(kù)后,必須顯式關(guān)閉與數(shù)據(jù)庫(kù)的連接,也就是說(shuō)必須調(diào)用Connection對(duì)象的Close方法關(guān)閉連接。任務(wù)7.2“高校學(xué)生管理系統(tǒng)”數(shù)據(jù)庫(kù)連接實(shí)現(xiàn)表7-16SqlConnection對(duì)象常用方法預(yù)備知識(shí)7.2.3DBHelper類(lèi)為了實(shí)現(xiàn)與“高校學(xué)生管理系統(tǒng)”數(shù)據(jù)庫(kù)的連接,我們?cè)陧?xiàng)目中添加DBHelper類(lèi),在該類(lèi)中創(chuàng)建了數(shù)據(jù)庫(kù)的SqlConnection對(duì)象connection,并且聲明為靜態(tài)(static)的,因而在今后調(diào)用該對(duì)象時(shí),使用“類(lèi)名.對(duì)象名”(即DBHelper.connection)即可。舉例說(shuō)明:DBHelper類(lèi)的實(shí)現(xiàn)。任務(wù)7.2“高校學(xué)生管理系統(tǒng)”數(shù)據(jù)庫(kù)連接實(shí)現(xiàn)任務(wù)實(shí)施編程實(shí)現(xiàn)任務(wù)7-2任務(wù)7.2“高校學(xué)生管理系統(tǒng)”數(shù)據(jù)庫(kù)連接實(shí)現(xiàn)知識(shí)拓展創(chuàng)建數(shù)據(jù)庫(kù)連接一般需要經(jīng)歷以下幾個(gè)步驟:1.引入命名空間2.定義連接字符串3.創(chuàng)建Connection對(duì)象4.打開(kāi)數(shù)據(jù)庫(kù)連接5.對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作6.關(guān)閉數(shù)據(jù)庫(kù)連接任務(wù)7.2“高校學(xué)生管理系統(tǒng)”數(shù)據(jù)庫(kù)連接實(shí)現(xiàn)歸納總結(jié)本節(jié)中,主要介紹ADO.NET常用對(duì)象中的Connection對(duì)象的常用屬性和方法,該對(duì)象是學(xué)習(xí)數(shù)據(jù)庫(kù)編程的第一步,通過(guò)示例練習(xí),應(yīng)能夠靈活掌握各種數(shù)據(jù)庫(kù)連接方式。任務(wù)7.2“高校學(xué)生管理系統(tǒng)”數(shù)據(jù)庫(kù)連接實(shí)現(xiàn)任務(wù)7.3“高校學(xué)生管理系統(tǒng)”數(shù)據(jù)庫(kù)打開(kāi)時(shí)的異常處理任務(wù)描述在我們開(kāi)發(fā)程序的過(guò)程中總是會(huì)不可避免地遇到這樣或那樣的錯(cuò)誤,優(yōu)秀的程序員并不是不出現(xiàn)錯(cuò)誤,而是能夠找出錯(cuò)誤并更正它們,或者預(yù)知可能出現(xiàn)的錯(cuò)誤或異常并運(yùn)用相應(yīng)的技術(shù)進(jìn)行處理。對(duì)于開(kāi)發(fā)人員來(lái)說(shuō)了解常見(jiàn)的錯(cuò)誤類(lèi)型,理解并能運(yùn)用C#語(yǔ)言的錯(cuò)誤處理機(jī)制,是必備的程序設(shè)計(jì)技能。本節(jié)主要介紹程序中常見(jiàn)的錯(cuò)誤類(lèi)型和錯(cuò)誤處理機(jī)制,然后介紹解決本書(shū)開(kāi)發(fā)的“高校學(xué)生管理系統(tǒng)”在打開(kāi)數(shù)據(jù)庫(kù)時(shí)的異常處理方法。預(yù)備知識(shí)7.3.1程序錯(cuò)誤類(lèi)型C#應(yīng)用程序開(kāi)發(fā)過(guò)程中,根據(jù)錯(cuò)誤產(chǎn)生的原因,通常將代碼中的錯(cuò)誤(Bugs)分為3類(lèi):語(yǔ)法錯(cuò)誤、運(yùn)行時(shí)錯(cuò)誤、邏輯錯(cuò)誤。1.語(yǔ)法錯(cuò)誤語(yǔ)法錯(cuò)誤是指在程序代碼中輸入了不符合C#語(yǔ)法規(guī)則的語(yǔ)句而產(chǎn)生的錯(cuò)誤。如數(shù)據(jù)類(lèi)型不匹配、變量未定義、函數(shù)未定義、輸入了非法的標(biāo)點(diǎn)符號(hào)等等。對(duì)于這類(lèi)錯(cuò)誤VS開(kāi)發(fā)工具提供了自動(dòng)檢查功能。對(duì)于出現(xiàn)錯(cuò)誤的地方,VS會(huì)在相應(yīng)的語(yǔ)句下面出現(xiàn)藍(lán)色的波浪線。把鼠標(biāo)放在有波浪線的地方,系統(tǒng)會(huì)自動(dòng)顯示一個(gè)提示框,提示錯(cuò)誤出現(xiàn)的原因。另外,對(duì)于有語(yǔ)法錯(cuò)誤的程序,如果直接調(diào)試的話(huà),系統(tǒng)會(huì)在“錯(cuò)誤列表”窗口給出錯(cuò)誤信息,并告知錯(cuò)誤的代碼行及錯(cuò)誤原因。任務(wù)7.3“高校學(xué)生管理系統(tǒng)”數(shù)據(jù)庫(kù)打開(kāi)時(shí)的異常處理預(yù)備知識(shí)7.3.1程序錯(cuò)誤類(lèi)型2.運(yùn)行時(shí)錯(cuò)誤運(yùn)行時(shí)錯(cuò)誤是指在沒(méi)有語(yǔ)法錯(cuò)誤的前提下,程序在運(yùn)行期間產(chǎn)生的錯(cuò)誤。如數(shù)組下標(biāo)越界、除數(shù)為0、打開(kāi)一個(gè)不存在的文件、數(shù)據(jù)庫(kù)未打開(kāi)等等。3.邏輯錯(cuò)誤邏輯錯(cuò)誤是指程序能夠正常運(yùn)行,但是不能達(dá)到預(yù)期的效果。比如計(jì)算結(jié)果不正確、數(shù)據(jù)不能正常寫(xiě)入數(shù)據(jù)庫(kù)等功能上的錯(cuò)誤。這類(lèi)錯(cuò)誤產(chǎn)生的原因主要是由于算法設(shè)計(jì)不正確。程序員只能憑借經(jīng)驗(yàn),通過(guò)測(cè)試應(yīng)用程序和運(yùn)行結(jié)果來(lái)找到錯(cuò)誤。舉例說(shuō)明:三種錯(cuò)誤類(lèi)型。任務(wù)7.3“高校學(xué)生管理系統(tǒng)”數(shù)據(jù)庫(kù)打開(kāi)時(shí)的異常處理預(yù)備知識(shí)7.3.2異常處理在程序運(yùn)行期間出現(xiàn)的錯(cuò)誤,會(huì)中斷或干擾程序的正常流程。而這部分錯(cuò)誤有時(shí)候是可以預(yù)測(cè)的,C#語(yǔ)言也提供了處理這種錯(cuò)誤的機(jī)制,稱(chēng)為異常處理。當(dāng)程序運(yùn)行期時(shí)發(fā)生錯(cuò)誤時(shí),異常處理機(jī)制就能捕獲錯(cuò)誤并創(chuàng)建異常對(duì)象,執(zhí)行異常處理代碼,使得應(yīng)用程序能夠繼續(xù)正常運(yùn)行。.NET提供了大量預(yù)定義的異常對(duì)象,為了在應(yīng)用程序的代碼中使用它們捕獲和處理錯(cuò)誤,C#提供了try…catch…finally語(yǔ)句,程序員只用將程序代碼的相關(guān)部分分成3種不同的類(lèi)型,分別放置于try語(yǔ)句塊、catch語(yǔ)句塊和finally語(yǔ)句塊就可以了。任務(wù)7.3“高校學(xué)生管理系統(tǒng)”數(shù)據(jù)庫(kù)打開(kāi)時(shí)的異常處理預(yù)備知識(shí)7.3.2異常處理格式:try{//可能出現(xiàn)異常的代碼}catch(異常類(lèi)){//處理異常的代碼}finally{//清理資源工作,此部分可不寫(xiě)}任務(wù)7.3“高校學(xué)生管理系統(tǒng)”數(shù)據(jù)庫(kù)打開(kāi)時(shí)的異常處理說(shuō)明:(1)把實(shí)現(xiàn)程序正常功能并且可能出現(xiàn)異常的代碼放在try語(yǔ)句塊中。(2)如果在運(yùn)行期間出現(xiàn)了異常,程序就會(huì)跳轉(zhuǎn)到catch語(yǔ)句塊。(3)如果不出現(xiàn)異常,try語(yǔ)句塊中的代碼就會(huì)正常執(zhí)行,catch語(yǔ)句塊就不會(huì)被執(zhí)行。(4)一個(gè)程序中的catch語(yǔ)句塊可以有多個(gè)。(5)無(wú)論是否發(fā)生異常,如果程序包含有finally語(yǔ)句塊,則其一定會(huì)被執(zhí)行。任務(wù)實(shí)施編程實(shí)現(xiàn)任務(wù)7-3任務(wù)7.3“高校學(xué)生管理系統(tǒng)”數(shù)據(jù)庫(kù)打開(kāi)時(shí)的異常處理知識(shí)拓展1.有關(guān)異常類(lèi)(1)Exception是所有異常類(lèi)的基類(lèi)。(2)與參數(shù)有關(guān)的異常類(lèi)(3)與成員訪問(wèn)有關(guān)的異常(4)與數(shù)組有關(guān)的異常(5)與算術(shù)有關(guān)的異常任務(wù)7.3“高校學(xué)生管理系統(tǒng)”數(shù)據(jù)庫(kù)打開(kāi)時(shí)的異常處理知識(shí)拓展2.異常處理的原則(1)不要對(duì)常見(jiàn)的錯(cuò)誤使用異常處理,盡量使用判斷結(jié)構(gòu)來(lái)處理這些錯(cuò)誤,如if語(yǔ)句等;(2)不要為流程的正??刂剖褂卯惓#?3)當(dāng)引發(fā)異常時(shí),應(yīng)該提供有意義的異常信息;(4)當(dāng)有多個(gè)catch語(yǔ)句塊時(shí),處理順序應(yīng)當(dāng)從特殊異常到一般異常。任務(wù)7.3“高校學(xué)生管理系統(tǒng)”數(shù)據(jù)庫(kù)打開(kāi)時(shí)的異常處理歸納總結(jié)在本節(jié)中,主要介紹了C#程序開(kāi)發(fā)中經(jīng)常遇到的程序錯(cuò)誤和異常處理方法,這些都是作為一個(gè)程序員必備的技能,因而在開(kāi)發(fā)中要有意識(shí)地預(yù)測(cè)可能發(fā)生的運(yùn)行時(shí)錯(cuò)誤,并能夠使用相應(yīng)的異常處理機(jī)制,對(duì)特定的代碼段進(jìn)行異常處理,保障程序的正常執(zhí)行。在后續(xù)介紹實(shí)現(xiàn)“高校學(xué)生管理系統(tǒng)”的各部分功能時(shí),都會(huì)使用到異常處理機(jī)制,以保證應(yīng)用程序的健壯性。任務(wù)7.3“高校學(xué)生管理系統(tǒng)”數(shù)據(jù)庫(kù)打開(kāi)時(shí)的異常處理任務(wù)7.4Command對(duì)象簡(jiǎn)介任務(wù)描述前面我們已經(jīng)介紹了如何與數(shù)據(jù)庫(kù)建立連接,在建立連接之后就要去操作數(shù)據(jù)庫(kù),如查詢(xún)數(shù)據(jù)、新增數(shù)據(jù)、更新數(shù)據(jù)或刪除數(shù)據(jù)等,所有這些操作的完成都需要有Command對(duì)象的支持。本節(jié)將介紹該對(duì)象的使用。預(yù)備知識(shí)與Connection對(duì)象一樣,Command對(duì)象屬于.NETFramwork數(shù)據(jù)提供程序,不同的數(shù)據(jù)提供程序都有自己的Command對(duì)象,不同的數(shù)據(jù)庫(kù)提供程序有不同的數(shù)據(jù)庫(kù)連接類(lèi),如表7-17所示。具體使用哪個(gè)連接類(lèi)要看我們使用的是什么類(lèi)型的數(shù)據(jù)庫(kù),本教材示例及應(yīng)用程序都使用SQLServer2008數(shù)據(jù)庫(kù)提供程序,因而使用SqlCommand類(lèi)。任務(wù)7.4Command對(duì)象簡(jiǎn)介表7-17.NETFrmework數(shù)據(jù)提供程序及相應(yīng)的Command類(lèi)預(yù)備知識(shí)7.4.1Command對(duì)象常用屬性Command對(duì)象常用屬性如表7-18所示。任務(wù)7.4Command對(duì)象簡(jiǎn)介表7-18Command對(duì)象常用屬性預(yù)備知識(shí)7.4.2Command對(duì)象常用方法Command對(duì)象常用方法如表7-19所示。任務(wù)7.4Command對(duì)象簡(jiǎn)介表7-19Command對(duì)象常用方法任務(wù)實(shí)施編程實(shí)現(xiàn)任務(wù)7-4任務(wù)7.4Command對(duì)象簡(jiǎn)介知識(shí)拓展1.使用Command對(duì)象的步驟(1)創(chuàng)建數(shù)據(jù)庫(kù)連接(2)定義執(zhí)行的SQL語(yǔ)句(3)創(chuàng)建Command對(duì)象(4)執(zhí)行SQL語(yǔ)句或存儲(chǔ)過(guò)程2.使用Command對(duì)象執(zhí)行帶參數(shù)的SQL語(yǔ)句3.使用Command對(duì)象執(zhí)行存儲(chǔ)過(guò)程舉例說(shuō)明:執(zhí)行帶參SQL語(yǔ)句和存儲(chǔ)過(guò)程的方法。任務(wù)7.4Command對(duì)象簡(jiǎn)介歸納總結(jié)Command對(duì)象是開(kāi)發(fā)數(shù)據(jù)庫(kù)應(yīng)用程序時(shí)非常重要的一個(gè)對(duì)象,通過(guò)本節(jié)課程的介紹,要理解并掌握其不同的創(chuàng)建方法,熟練掌握常用的三個(gè)方法方法ExecuteNonQuery()、ExecuteScalar()和ExecuteReader()的不同功能,能夠使用這幾個(gè)方法實(shí)現(xiàn)數(shù)據(jù)庫(kù)的增、刪、改、查操作。任務(wù)7.4Command對(duì)象簡(jiǎn)介任務(wù)7.5實(shí)現(xiàn)“高校學(xué)生管理系統(tǒng)”的登錄功能任務(wù)描述為了進(jìn)入學(xué)生管理系統(tǒng),用戶(hù)需要進(jìn)行登錄驗(yàn)證,輸入有效的用戶(hù)名和密碼。前面我們已經(jīng)設(shè)計(jì)了系統(tǒng)的登錄界面,當(dāng)用戶(hù)名或密碼有誤時(shí),會(huì)給出對(duì)應(yīng)提示,如圖7-8所示。本節(jié)就首先使用我們學(xué)習(xí)的Connection對(duì)象連接數(shù)據(jù)庫(kù),然后使用的Command對(duì)象的ExecuteScalar()方法來(lái)完成登錄功能。登錄時(shí)要判斷輸入的用戶(hù)名、密碼及用戶(hù)類(lèi)型是否在對(duì)應(yīng)的數(shù)據(jù)表中有記錄,這可以使用Command對(duì)象的ExecuteScalar()方法執(zhí)行Select語(yǔ)句返回查詢(xún)結(jié)果,然后判斷是否有與條件匹配的記錄存在。圖7-8用戶(hù)登錄失敗效果任務(wù)7.5實(shí)現(xiàn)“高校學(xué)生管理系統(tǒng)”的登錄功能預(yù)備知識(shí)在用戶(hù)打開(kāi)“學(xué)生管理系統(tǒng)”的登錄界面,進(jìn)行登錄的時(shí)候要進(jìn)行必要的驗(yàn)證,比如用戶(hù)名密碼是否輸入,是否選擇了用戶(hù)類(lèi)型,若有輸入是否輸入正確匹配等。下面我們對(duì)登錄功能及功能實(shí)現(xiàn)進(jìn)行分析7.5.1用戶(hù)登錄功能需求分析(1)當(dāng)沒(méi)有輸入戶(hù)名、密碼或沒(méi)有選擇用戶(hù)類(lèi)型而直接點(diǎn)擊“登錄”按鈕時(shí),會(huì)給出對(duì)應(yīng)的提示,提示效果在前面的章節(jié)中我們已經(jīng)學(xué)習(xí)過(guò),此處不再說(shuō)明。(2)當(dāng)輸入用戶(hù)名或密碼與數(shù)據(jù)庫(kù)中的數(shù)據(jù)不匹配時(shí),提示效果如圖7-8。任務(wù)7.5實(shí)現(xiàn)“高校學(xué)生管理系統(tǒng)”的登錄功能預(yù)備知識(shí)7.5.2用戶(hù)登錄功能實(shí)現(xiàn)方法(1)實(shí)現(xiàn)功能的代碼在“登錄”按鈕的Click事件里;(2)首先驗(yàn)證是否輸入了用戶(hù)名、密碼,是否選擇了用戶(hù)類(lèi)型,如果有缺項(xiàng)使用對(duì)話(huà)框給出對(duì)應(yīng)提示,并將光標(biāo)定位;(3)如果輸入了用戶(hù)名、密碼,并且選擇了用戶(hù)類(lèi)型,則根據(jù)用戶(hù)類(lèi)型,驗(yàn)證用戶(hù)名和密碼是否正確。此功能的實(shí)現(xiàn)需要進(jìn)入數(shù)據(jù)庫(kù)中相應(yīng)的表中查詢(xún)是否有與用戶(hù)輸入的用戶(hù)名、密碼和類(lèi)型相匹配的記錄,當(dāng)用戶(hù)類(lèi)型是“管理員”時(shí),則進(jìn)入管理員信息表(Admin)查找是否有匹配記錄,當(dāng)用戶(hù)類(lèi)型時(shí)“學(xué)員”時(shí),則進(jìn)入學(xué)生信息表(Student)查找是否有匹配記錄。(4)根據(jù)(3)中查找的結(jié)果,如果有匹配記錄就打開(kāi)對(duì)應(yīng)的窗口。否則就提示有戶(hù)名或密碼有誤。任務(wù)實(shí)施編程實(shí)現(xiàn)任務(wù)7-5任務(wù)7.5實(shí)現(xiàn)“高校學(xué)生管理系統(tǒng)”的登錄功能任務(wù)7.5實(shí)現(xiàn)“高校學(xué)生管理系統(tǒng)”的登錄功能知識(shí)拓展1.ExecuteScalar返回值問(wèn)題(1)當(dāng)該方法與聚合函數(shù)(count,max,min,average)一起使用時(shí),可以將執(zhí)行結(jié)果顯式轉(zhuǎn)換為一個(gè)int類(lèi)型,如本例就是使用了count函數(shù)。(2)當(dāng)該方法不與聚合函數(shù)一起使用時(shí),當(dāng)執(zhí)行查詢(xún)結(jié)果的第一行第一列無(wú)值時(shí),返回一個(gè)NULL,有具體值時(shí),根據(jù)其值進(jìn)行類(lèi)型轉(zhuǎn)換,返回結(jié)果。2.常見(jiàn)錯(cuò)誤(1)在執(zhí)行SQL語(yǔ)句或存儲(chǔ)過(guò)程之前數(shù)據(jù)庫(kù)連接未打開(kāi);(2)使用Command對(duì)象的ExecuteScalar()方法執(zhí)行SQL語(yǔ)句或存儲(chǔ)過(guò)程后沒(méi)有進(jìn)行顯式類(lèi)型轉(zhuǎn)換。任務(wù)7.5實(shí)現(xiàn)“高校學(xué)生管理系統(tǒng)”的登錄功能歸納總結(jié)Command對(duì)象的ExecuteScalar()方法是開(kāi)發(fā)數(shù)據(jù)庫(kù)應(yīng)用程序中常用的一個(gè)方法,利用它可以檢驗(yàn)對(duì)數(shù)據(jù)庫(kù)的查詢(xún)操作是否有有效的結(jié)果,要理解其返回值問(wèn)題,能夠?qū)Ψ祷刂颠M(jìn)行正確的類(lèi)型轉(zhuǎn)換及判斷。任務(wù)7.6實(shí)現(xiàn)“高校學(xué)生管理系統(tǒng)”查詢(xún)?nèi)繉W(xué)生信息功能任務(wù)描述大多應(yīng)用程序都提供的有查詢(xún)功能,用戶(hù)可以根據(jù)一定的條件進(jìn)行查詢(xún),系統(tǒng)將查詢(xún)結(jié)果顯示給用戶(hù),這一功能的實(shí)現(xiàn)就需要使用Command對(duì)象的ExecuteReader()方法,該方法返回一個(gè)DataReader對(duì)象,通過(guò)DataReader對(duì)象從數(shù)據(jù)庫(kù)中讀取數(shù)據(jù)。本任務(wù)主要介紹ExecuteReader()方法及DataReader對(duì)象的常用屬性和方法,實(shí)現(xiàn)查詢(xún)學(xué)生信息功能。任務(wù)7.6實(shí)現(xiàn)“高校學(xué)生管理系統(tǒng)”查詢(xún)?nèi)繉W(xué)生信息功能預(yù)備知識(shí)7.6.1SqlDataReader對(duì)象簡(jiǎn)介與Connection對(duì)象、Command對(duì)象一樣,DataReader對(duì)象屬于.NETFramwork數(shù)據(jù)提供程序,不同的數(shù)據(jù)提供程序都有自己的DataReader對(duì)象,不同的數(shù)據(jù)庫(kù)提供程序有不同的數(shù)據(jù)庫(kù)連接類(lèi),如表7-20所示。表7-20.NETFrmework數(shù)據(jù)提供程序及相應(yīng)的DataReader類(lèi)任務(wù)7.6實(shí)現(xiàn)“高校學(xué)生管理系統(tǒng)”查詢(xún)?nèi)繉W(xué)生信息功能預(yù)備知識(shí)7.6.1SqlDataReader對(duì)象簡(jiǎn)介SqlDataReader提供一種從數(shù)據(jù)庫(kù)讀取只讀數(shù)據(jù)流的方式。不能對(duì)讀取的數(shù)據(jù)進(jìn)行修改,所以其是只讀的單向的數(shù)據(jù)流,而且在讀取數(shù)據(jù)的時(shí)候,要始終保持與數(shù)據(jù)庫(kù)的連接。但是其占用資源非常少,每次只有一條記錄存在其中。SqlDataReader對(duì)象的主要屬性和方法如表7-21所示。表7-21SqlDataReader對(duì)象的主要屬性和方法任務(wù)實(shí)施編程實(shí)現(xiàn)任務(wù)7-6任務(wù)7.6實(shí)現(xiàn)“高校學(xué)生管理系統(tǒng)”查詢(xún)?nèi)繉W(xué)生信息功能任務(wù)7.6實(shí)現(xiàn)“高校學(xué)生管理系統(tǒng)”查詢(xún)?nèi)繉W(xué)生信息功能知識(shí)拓展下面我們對(duì)DataReader使用的步驟做如下總結(jié)。(1)創(chuàng)建Command對(duì)象(2)調(diào)用ExecuteReader()創(chuàng)建DataReader對(duì)象(3)使用DataReader的Read()方法逐行讀取數(shù)據(jù)(4)讀取當(dāng)前行的某列的數(shù)據(jù)(5)關(guān)閉DataReader對(duì)象調(diào)用它的Close()方法任務(wù)7.6實(shí)現(xiàn)“高校學(xué)生管理系統(tǒng)”查詢(xún)?nèi)繉W(xué)生信息功能歸納總結(jié)在本節(jié)中,主要介紹了使用Command對(duì)象的ExecuteReader()方法生成DataReader對(duì)象的方法,掌握DataReader對(duì)象的使用步驟和及注意事項(xiàng),是作為一個(gè)程序開(kāi)發(fā)人員必備的技能之一。任務(wù)7.7實(shí)現(xiàn)“高校學(xué)生管理系統(tǒng)”模糊查詢(xún)功能任務(wù)描述在學(xué)生管理系統(tǒng)主界面中點(diǎn)擊工具欄上的“查詢(xún)及修改學(xué)員”工具按鈕就會(huì)彈出如圖7-10所示的“查找學(xué)員用戶(hù)”窗口。用戶(hù)在用戶(hù)名后面的文本框中輸入查詢(xún)關(guān)鍵字,點(diǎn)擊“查找”按鈕就能夠查找到與關(guān)鍵字有關(guān)的學(xué)員信息,并將信息顯示在窗體上的ListView控件中。本任務(wù)將主要講解使用ListView控件顯示查詢(xún)結(jié)果的方法。圖7-10查找學(xué)員用戶(hù)界面任務(wù)7.7實(shí)現(xiàn)“高校學(xué)生管理系統(tǒng)”模糊查詢(xún)功能預(yù)備知識(shí)7.7.1ListView列表視圖控件介紹ListView控件可以顯示帶圖標(biāo)的項(xiàng)列表,用戶(hù)可使用該控件創(chuàng)建類(lèi)似Win7系統(tǒng)計(jì)算機(jī)功能的用戶(hù)界面,就是通過(guò)ListView控件實(shí)現(xiàn)的。任務(wù)7.7實(shí)現(xiàn)“高校學(xué)生管理系統(tǒng)”模糊查詢(xún)功能預(yù)備知識(shí)7.7.1ListView列表視圖控件介紹1.常用屬性ListView控件常用屬性及說(shuō)明如教材表7-22所示。下面對(duì)比較重要的屬性進(jìn)行詳細(xì)介紹:(1)View屬性。用于獲取或設(shè)置項(xiàng)在控件中的顯示方式。View的屬性值及說(shuō)明如表7-23所示。表7-23View屬性取值及說(shuō)明任務(wù)7.7實(shí)現(xiàn)“高校學(xué)生管理系統(tǒng)”模糊查詢(xún)功能預(yù)備知識(shí)7.7.1ListView列表視圖控件介紹(2)FullrowSelect屬性。用于指定是只選擇某一項(xiàng),還是選擇某一項(xiàng)所在的整行,如果單擊某項(xiàng)會(huì)選擇該項(xiàng)及其所有子項(xiàng),則為T(mén)rue;如果單擊某項(xiàng)僅選擇項(xiàng)本身,則為False。默認(rèn)為False。說(shuō)明:除非將ListView控件的View屬性設(shè)置為Details,否則FullRowSelect屬性無(wú)效。在ListView顯示帶有許多子項(xiàng)的項(xiàng)時(shí),通常使用FullrowSelect屬性。(3)GridLines屬性。指定在包含控件中項(xiàng)及其子項(xiàng)的行和列之間是否顯示網(wǎng)格線,如果在項(xiàng)及其子項(xiàng)的周?chē)L制網(wǎng)格線,則為T(mén)rue;否則為False。默認(rèn)為False。說(shuō)明:除非將ListView控件的View屬性設(shè)置為Details,否則GridLines屬性無(wú)效。任務(wù)7.7實(shí)現(xiàn)“高校學(xué)生管理系統(tǒng)”模糊查詢(xún)功能預(yù)備知識(shí)7.7.1ListView列表視圖控件介紹2.常用方法與事件ListView常用方法與事件如表7-24所示。表7-24ListView常用方法任務(wù)7.7實(shí)現(xiàn)“高校學(xué)生管理系統(tǒng)”模糊查詢(xún)功能預(yù)備知識(shí)7.7.1ListView列表視圖控件介紹3.ListViewItem列表視圖中的選項(xiàng)總是ListViewItem類(lèi)的一個(gè)實(shí)例。ListViewItem包含要顯示的信息,如文本和圖標(biāo)的索引。ListViewItems有一個(gè)SubItems屬性,其中包含另一個(gè)類(lèi)ListViewSubItem的實(shí)例。如果ListView控件處于Details或Tile模式下,這些子項(xiàng)就會(huì)顯示出來(lái)。每個(gè)子選項(xiàng)表示列表視圖中的一個(gè)列。子項(xiàng)和主選項(xiàng)之間的區(qū)別是,子選項(xiàng)不能顯示圖標(biāo)。通過(guò)Items集合吧ListViewItems添加到ListView中,通過(guò)ListViewItem上的SubItems集合把ListViewSubItems添加到ListViewItem中。任務(wù)7.7實(shí)現(xiàn)“高校學(xué)生管理系統(tǒng)”模糊查詢(xún)功能預(yù)備知識(shí)7.7.1ListView列表視圖控件介紹4.ColumnHeader要使用列表視圖顯示列標(biāo)題,需要把類(lèi)ColumnHeader的實(shí)例添加到ListView的Column生集合中,當(dāng)ListView控件處于Details模式下時(shí),Columnheaders為要顯示的列提供一個(gè)標(biāo)題。任務(wù)7.7實(shí)現(xiàn)“高校學(xué)生管理系統(tǒng)”模糊查詢(xún)功能預(yù)備知識(shí)7.7.2ListView控件簡(jiǎn)單應(yīng)用舉例說(shuō)明:使用ListView控件實(shí)現(xiàn)“我的電腦”本地磁盤(pán)詳細(xì)信息功能。圖7-12模擬“我的電腦”效果圖任務(wù)實(shí)施編程實(shí)現(xiàn)任務(wù)7-7任務(wù)7.7實(shí)現(xiàn)“高校學(xué)生管理系統(tǒng)”模糊查詢(xún)功能任務(wù)7.7實(shí)現(xiàn)“高校學(xué)生管理系統(tǒng)”模糊查詢(xún)功能知識(shí)拓展1.ImageList控件簡(jiǎn)介ImageList控件是一個(gè)圖片集管理器,支持bmp、gif和jpg等圖像格式。主要用于緩存用戶(hù)預(yù)定義好的圖片列表信息,該控件不可以單獨(dú)使用顯示圖片內(nèi)容,必須和其他控件聯(lián)合使用才可以顯示預(yù)先存儲(chǔ)其中的圖片內(nèi)容。另外在窗體上添加一個(gè)ImageList控件時(shí),它不會(huì)出現(xiàn)在窗體上,而是出現(xiàn)在窗體的下方。其基本的屬性和方法定義如表7-26所示:表7-25ImageList控件常用屬性和方法任務(wù)7.7實(shí)現(xiàn)“高校學(xué)生管理系統(tǒng)”模糊查詢(xún)功能知識(shí)拓展2.ImageList控件簡(jiǎn)單應(yīng)用舉例說(shuō)明:實(shí)現(xiàn)“我的電腦”磁盤(pán)顯示的“大圖標(biāo)”、“小圖標(biāo)”、“詳細(xì)列表”顯示效果。任務(wù)7.7實(shí)現(xiàn)“高校學(xué)生管理系統(tǒng)”模糊查詢(xún)功能歸納總結(jié)在本節(jié)中,通過(guò)實(shí)例介紹了ListView控件的簡(jiǎn)單應(yīng)用,及其與ImageList控件結(jié)合實(shí)現(xiàn)Windows資源管理器功能;要理解ListView控件的5種視圖模式。ImageList控件能夠?yàn)榇绑w其他控件提供圖像的應(yīng)用。重點(diǎn)要理解并掌握使用ListView控件顯示多行信息功能的實(shí)現(xiàn)。任務(wù)7.8實(shí)現(xiàn)“高校學(xué)生管理系統(tǒng)”添加學(xué)員功能任務(wù)描述在前面的任務(wù)中,我們?cè)O(shè)計(jì)了“高校學(xué)生管理系統(tǒng)”的創(chuàng)建學(xué)員用戶(hù)的界面,如圖5-2所示,在本節(jié)中,我們將利用Command對(duì)象的ExecuteNonQuery()方法,實(shí)現(xiàn)對(duì)MySchool數(shù)據(jù)庫(kù)中學(xué)生表(Student)增加一條記錄操作。添加學(xué)員用戶(hù)成功后的效果如圖7-20所示。圖7-20添加學(xué)員用戶(hù)界面任務(wù)7.8實(shí)現(xiàn)“高校學(xué)生管理系統(tǒng)”添加學(xué)員功能預(yù)備知識(shí)7.8.1ExecuteNonQuery()方法簡(jiǎn)介在前面的任務(wù)中,我們使用ExecuteScalar()方法與ExecuteReader()方法實(shí)現(xiàn)了從數(shù)據(jù)庫(kù)中查詢(xún)記錄的功能。那么怎樣對(duì)數(shù)據(jù)表中記錄進(jìn)行增刪改呢?這就需要使用Command對(duì)象的ExecuteNonQuery()方法。ExecuteNonQuery()方法,是Command對(duì)象的中的一個(gè)極其重要的方法,其返回值是一個(gè)int類(lèi)型的數(shù)據(jù),代表受SQL語(yǔ)句影響的行數(shù)。ExecuteNonQuery()方法執(zhí)行特定的SQL語(yǔ)句,如Insert、Update、Delete。任務(wù)7.8實(shí)現(xiàn)“高校學(xué)生管理系統(tǒng)”添加學(xué)員功能預(yù)備知識(shí)7.8.1ExecuteNonQuery()方法簡(jiǎn)介使用Command對(duì)象的ExecuteNonQuery()方法的步驟:1.定義數(shù)據(jù)庫(kù)連接字符串2.創(chuàng)建Connection對(duì)象3.定義要執(zhí)行的sql語(yǔ)句4.創(chuàng)建Command對(duì)象5.調(diào)用Connection對(duì)象的Open()方法打開(kāi)數(shù)據(jù)庫(kù)6.執(zhí)行ExecuteNonQuery()方法7.調(diào)用Connection對(duì)象的Close()方法關(guān)閉數(shù)據(jù)庫(kù)8.根據(jù)返回的結(jié)果進(jìn)行后續(xù)的處理我們可以通過(guò)它的返回結(jié)果知道執(zhí)行的情況,如果返回值小于或等于0,說(shuō)明沒(méi)有記錄受到影響。任務(wù)7.8實(shí)現(xiàn)“高校學(xué)生管理系統(tǒng)”添加學(xué)員功能任務(wù)實(shí)施編程實(shí)現(xiàn)任務(wù)7-8任務(wù)7.8實(shí)現(xiàn)“高校學(xué)生管理系統(tǒng)”添

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論