




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(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ù)庫訪問C#語言程序設(shè)計(jì)基礎(chǔ)教程任務(wù)7.1ADO.NET核心對(duì)象簡(jiǎn)介任務(wù)描述本節(jié)首先回顧有關(guān)數(shù)據(jù)庫的一些基本概念和常用的SQL語句,并且介紹本書開發(fā)的“高校學(xué)生管理系統(tǒng)”(MySchool)系統(tǒng)需要的數(shù)據(jù)庫表結(jié)構(gòu);然后了解ADO.NET的相關(guān)術(shù)語和常用對(duì)象。預(yù)備知識(shí)要實(shí)現(xiàn)對(duì)ADO.NET的靈活操作,首先必須熟練掌握數(shù)據(jù)庫的相關(guān)概念、SQL語言以及存儲(chǔ)過程等數(shù)據(jù)庫基礎(chǔ)知識(shí)。數(shù)據(jù)庫是長(zhǎng)期存儲(chǔ)在計(jì)算機(jī)內(nèi)的、有組織的、可共享的數(shù)據(jù)集合。數(shù)據(jù)庫不僅具有固定的格式與特征,而且可以以表格的形式來存儲(chǔ)記錄,具有自動(dòng)化管理、快速查詢及統(tǒng)計(jì)等優(yōu)點(diǎn)。任務(wù)7.1ADO.NET核心對(duì)象簡(jiǎn)介預(yù)備知識(shí)7.1.1關(guān)系型數(shù)據(jù)庫簡(jiǎn)介數(shù)據(jù)庫系統(tǒng)主要經(jīng)歷了三個(gè)階段:網(wǎng)狀數(shù)據(jù)庫、層次數(shù)據(jù)庫和關(guān)系數(shù)據(jù)庫,關(guān)系數(shù)據(jù)模型是當(dāng)前的主導(dǎo)數(shù)據(jù)模型,如Access、SQLServer、Oracle、DB2等。1.關(guān)系數(shù)據(jù)庫定義關(guān)系數(shù)據(jù)庫是一些相關(guān)的表和其他數(shù)據(jù)庫對(duì)象的集合,其含義可以解釋為以下三方面:(1)在關(guān)系數(shù)據(jù)庫中,信息被存放在二維表(table)中,一個(gè)關(guān)系數(shù)據(jù)庫中可以包含多個(gè)數(shù)據(jù)表,每個(gè)表又包含行(記錄)和列(字段)。(2)數(shù)據(jù)表之間是相互關(guān)聯(lián)的,通過主鍵和外鍵實(shí)現(xiàn)。(3)數(shù)據(jù)庫中除了包含數(shù)據(jù)表之外,還包含有其他數(shù)據(jù)庫對(duì)象,如視圖、存儲(chǔ)過程等。任務(wù)7.1ADO.NET核心對(duì)象簡(jiǎn)介預(yù)備知識(shí)7.1.1關(guān)系型數(shù)據(jù)庫簡(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ù)類型和長(zhǎng)度,名字相同。創(chuàng)建外鍵的優(yōu)點(diǎn)有:(1)實(shí)現(xiàn)表之間的關(guān)聯(lián)(2)根據(jù)主鍵列的值來檢查外鍵列的值的合法性。任務(wù)7.1ADO.NET核心對(duì)象簡(jiǎn)介預(yù)備知識(shí)7.1.2常用SQL語句SQL(StructuredQueryLanguage)即“結(jié)構(gòu)化查詢語言”是通用的關(guān)系數(shù)據(jù)庫語言,使用其可以方便的實(shí)現(xiàn)對(duì)數(shù)據(jù)庫中數(shù)據(jù)的查找、新增、更新和刪除。SQL語言對(duì)數(shù)據(jù)的操縱分為數(shù)據(jù)庫查詢操作、數(shù)據(jù)插入操作、數(shù)據(jù)更新操作和數(shù)據(jù)刪除操作四種。任務(wù)7.1ADO.NET核心對(duì)象簡(jiǎn)介預(yù)備知識(shí)7.1.2常用SQL語句1.?dāng)?shù)據(jù)查詢操作數(shù)據(jù)查詢主要用于從表中查詢滿足條件的記錄,語法格式為: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語句說明:(1)SELECT語句和FROM語句是必須的,方括號(hào)中的語句是可選的;(2)SELECT關(guān)鍵字后面的字段名指明要在查詢后顯示的列,各字段之間用逗號(hào)隔開。若要查詢表中的所有字段使用“SELECT*”;(3)[ALL|DISTINCT]中DISTINCT表示不會(huì)顯示查詢結(jié)果中的重復(fù)行,ALL則顯示重復(fù)行;(4)GROUPBY短語用來將結(jié)果按指定的字段分組,如果帶HAVING表達(dá)式,則只有滿足表達(dá)式條件的才能輸出;(5)ORDERBY短語用來按指定字段排序,ASC為升序,DESC為降序。任務(wù)7.1ADO.NET核心對(duì)象簡(jiǎn)介預(yù)備知識(shí)7.1.2常用SQL語句2.?dāng)?shù)據(jù)插入操作數(shù)據(jù)插入操作主要用于向表中添加數(shù)據(jù)。語法格式為:INSERTINTO<表名>[(<字段1>[,<字段2>,…])]VALUES(<表達(dá)式1>[,<表達(dá)式2>,…])說明:(1)當(dāng)向一條記錄的所有字段添加數(shù)據(jù)時(shí),表名后的字段可以省略,但是插入數(shù)據(jù)的具體值的數(shù)據(jù)類型、長(zhǎng)度和先后順序必須和表結(jié)構(gòu)里面的一致;若只是插入某些字段,則必須列出插入字段對(duì)應(yīng)的字段名;(2)VALUE語句后的各個(gè)表達(dá)式的值即為插入的具體值。各表達(dá)式值的類型、長(zhǎng)度和先后順序必須與指定的字段保持一致。任務(wù)7.1ADO.NET核心對(duì)象簡(jiǎn)介預(yù)備知識(shí)7.1.2常用SQL語句3.?dāng)?shù)據(jù)更新操作數(shù)據(jù)更新操作用于修改數(shù)據(jù)表中的一條或多條記錄。語法格式如下:UPDATE<表名>SET<字段名1>=<表達(dá)式1>[,<字段名1>=<表達(dá)式1>…][WHERE<條件表達(dá)式>]說明:(1)通過SET語句可以用表達(dá)式值取代指定字段原有的值。(2)WHERE語句用于限定符合更新條件的記錄,此語句可以沒有,沒有的時(shí)候表示更新表中所有記錄的指定字段的值。任務(wù)7.1ADO.NET核心對(duì)象簡(jiǎn)介預(yù)備知識(shí)7.1.2常用SQL語句4.?dāng)?shù)據(jù)刪除操作用于刪除數(shù)據(jù)表中符合條件的一條或多條記錄。語法格式為:DELETEFROM<表名>[WHERE<條件表達(dá)式>]舉例說明:實(shí)現(xiàn)增、刪、改、查的SQL語句用法。任務(wù)7.1ADO.NET核心對(duì)象簡(jiǎn)介任務(wù)實(shí)施1.ADO.NET概述ADO.NET是.NET中一組用于和數(shù)據(jù)源進(jìn)行交互的面向?qū)ο箢悗欤峁┝藬?shù)據(jù)訪問的高層接口。ADO.NET允許和不同類型的數(shù)據(jù)源和數(shù)據(jù)庫進(jìn)行交互,數(shù)據(jù)源既可以是數(shù)據(jù)庫,也可以是文本文件、Excel表格或者XML文件。ADO.NET類最重要的優(yōu)點(diǎn)是支持與數(shù)據(jù)庫以斷開連接的方式工作,即ADO.NET可以操作非連接的數(shù)據(jù),這就意味著應(yīng)用程序和數(shù)據(jù)源的連接會(huì)變少,服務(wù)器端的負(fù)載也會(huì)得以減輕。ADO.NET類庫在System.Data命名空間內(nèi),根據(jù)訪問數(shù)據(jù)庫的不同System.Data命名空間被劃分為4個(gè)數(shù)據(jù)庫客戶命名空間,本書主要使用MicrosoftSqlServer2008數(shù)據(jù)庫進(jìn)行應(yīng)用程序開發(fā),因而在以后的章節(jié)中我們都使用System.Data.SqlClient命名空間。任務(wù)7.1ADO.NET核心對(duì)象簡(jiǎn)介實(shí)現(xiàn)從“登錄窗體”到“添加學(xué)員窗體”的跳轉(zhuǎn)。當(dāng)“系統(tǒng)登錄”窗體和“添加學(xué)員用戶”窗體創(chuàng)建完成后,希望在登錄窗體中輸入用戶名和密碼,選擇“用戶類型”,點(diǎn)擊“登錄”按鈕后,跳轉(zhuǎn)到“添加學(xué)員用戶”窗體。這時(shí),就需要在“登錄”按鈕的Click事件處理程序中。舉例說明:窗體跳轉(zhuǎn)方法。注意:此處使用了this.Hide()方法實(shí)現(xiàn)“用戶登錄窗體”的隱藏,也可以使用this.Visible=false;但是不能使用Close(),若使用了Close()方法則會(huì)導(dǎo)致程序的中止執(zhí)行。知識(shí)拓展任務(wù)7.1ADO.NET核心對(duì)象簡(jiǎn)介2.ADO.NET核心組件ADO.NET的主要通過兩個(gè)核心組件來完成對(duì)數(shù)據(jù)庫的操作,分別是DataSet和.NET數(shù)據(jù)提供程序。前者是ADO.NET的斷開式結(jié)構(gòu)的核心組件。后者是專門為直接訪問數(shù)據(jù)庫,對(duì)其進(jìn)行快速的只進(jìn)、只讀訪問數(shù)據(jù)等數(shù)據(jù)處理而設(shè)計(jì)的組件,包含Connection、Command、DataReader和DataAdapter對(duì)象。圖7-1是利用ADO.NET操作數(shù)據(jù)庫的簡(jiǎn)單示意圖。任務(wù)實(shí)施任務(wù)7.1ADO.NET核心對(duì)象簡(jiǎn)介圖7-1利用ADO.NET操作數(shù)據(jù)庫的簡(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ù)庫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ù)庫及數(shù)據(jù)庫常用的SQL語句,然后向大家講解了ADO.NET核心組件與常用對(duì)象,最后對(duì)本書開發(fā)的“高校學(xué)生管理系統(tǒng)”所需要的數(shù)據(jù)庫中的表結(jié)構(gòu)進(jìn)行了說明。歸納總結(jié)任務(wù)7.1ADO.NET核心對(duì)象簡(jiǎn)介任務(wù)7.2“高校學(xué)生管理系統(tǒng)”數(shù)據(jù)庫連接實(shí)現(xiàn)任務(wù)描述在我們操作數(shù)據(jù)庫之前,首先要做的就是與數(shù)據(jù)庫創(chuàng)建連接。連接數(shù)據(jù)庫需要使用Connection對(duì)象,本節(jié)主要學(xué)習(xí)該對(duì)象的常用屬性和方法,理解使用該對(duì)象進(jìn)行數(shù)據(jù)庫連接的方法。要求實(shí)現(xiàn)與任務(wù)7.1創(chuàng)建的“學(xué)生管理系統(tǒng)”的數(shù)據(jù)庫的連接。預(yù)備知識(shí)不同的數(shù)據(jù)庫提供程序有不同的數(shù)據(jù)庫連接類,具體如表7-13所示。具體使用哪個(gè)連接類要看我們使用的是什么類型的數(shù)據(jù)庫,本教程示例及應(yīng)用程序都使用SQLServer2008數(shù)據(jù)庫提供程序,因而使用SqlConnection類。任務(wù)7.2“高校學(xué)生管理系統(tǒng)”數(shù)據(jù)庫連接實(shí)現(xiàn)表7-13.NETFrmework數(shù)據(jù)提供程序及相應(yīng)的連接類預(yù)備知識(shí)7.2.1SqlConnection對(duì)象常用屬性SqlConnection對(duì)象常用屬性如表7-14所示。任務(wù)7.2“高校學(xué)生管理系統(tǒng)”數(shù)據(jù)庫連接實(shí)現(xiàn)表7-14SqlConnection對(duì)象常用屬性預(yù)備知識(shí)7.2.1SqlConnection對(duì)象常用屬性ConnectionString屬性所要求的字符串必須是一個(gè)規(guī)范化的、符合語法要求的字符串。其內(nèi)容是由多個(gè)被分號(hào)分開的“參數(shù)名=參數(shù)值”組成。常用的參數(shù)名及含義如表7-15所示。任務(wù)7.2“高校學(xué)生管理系統(tǒng)”數(shù)據(jù)庫連接實(shí)現(xiàn)表7-15ConnectionString屬性字符串常用參數(shù)表預(yù)備知識(shí)7.2.2SqlConnection常用方法SqlConnection對(duì)象常用方法如表7-16所示。在ADO.NET中,創(chuàng)建與數(shù)據(jù)庫的連接并且操作完數(shù)據(jù)庫后,必須顯式關(guān)閉與數(shù)據(jù)庫的連接,也就是說必須調(diào)用Connection對(duì)象的Close方法關(guān)閉連接。任務(wù)7.2“高校學(xué)生管理系統(tǒng)”數(shù)據(jù)庫連接實(shí)現(xiàn)表7-16SqlConnection對(duì)象常用方法預(yù)備知識(shí)7.2.3DBHelper類為了實(shí)現(xiàn)與“高校學(xué)生管理系統(tǒng)”數(shù)據(jù)庫的連接,我們?cè)陧?xiàng)目中添加DBHelper類,在該類中創(chuàng)建了數(shù)據(jù)庫的SqlConnection對(duì)象connection,并且聲明為靜態(tài)(static)的,因而在今后調(diào)用該對(duì)象時(shí),使用“類名.對(duì)象名”(即DBHelper.connection)即可。舉例說明:DBHelper類的實(shí)現(xiàn)。任務(wù)7.2“高校學(xué)生管理系統(tǒng)”數(shù)據(jù)庫連接實(shí)現(xiàn)任務(wù)實(shí)施編程實(shí)現(xiàn)任務(wù)7-2任務(wù)7.2“高校學(xué)生管理系統(tǒng)”數(shù)據(jù)庫連接實(shí)現(xiàn)知識(shí)拓展創(chuàng)建數(shù)據(jù)庫連接一般需要經(jīng)歷以下幾個(gè)步驟:1.引入命名空間2.定義連接字符串3.創(chuàng)建Connection對(duì)象4.打開數(shù)據(jù)庫連接5.對(duì)數(shù)據(jù)庫進(jìn)行操作6.關(guān)閉數(shù)據(jù)庫連接任務(wù)7.2“高校學(xué)生管理系統(tǒng)”數(shù)據(jù)庫連接實(shí)現(xiàn)歸納總結(jié)本節(jié)中,主要介紹ADO.NET常用對(duì)象中的Connection對(duì)象的常用屬性和方法,該對(duì)象是學(xué)習(xí)數(shù)據(jù)庫編程的第一步,通過示例練習(xí),應(yīng)能夠靈活掌握各種數(shù)據(jù)庫連接方式。任務(wù)7.2“高校學(xué)生管理系統(tǒng)”數(shù)據(jù)庫連接實(shí)現(xiàn)任務(wù)7.3“高校學(xué)生管理系統(tǒng)”數(shù)據(jù)庫打開時(shí)的異常處理任務(wù)描述在我們開發(fā)程序的過程中總是會(huì)不可避免地遇到這樣或那樣的錯(cuò)誤,優(yōu)秀的程序員并不是不出現(xiàn)錯(cuò)誤,而是能夠找出錯(cuò)誤并更正它們,或者預(yù)知可能出現(xiàn)的錯(cuò)誤或異常并運(yùn)用相應(yīng)的技術(shù)進(jìn)行處理。對(duì)于開發(fā)人員來說了解常見的錯(cuò)誤類型,理解并能運(yùn)用C#語言的錯(cuò)誤處理機(jī)制,是必備的程序設(shè)計(jì)技能。本節(jié)主要介紹程序中常見的錯(cuò)誤類型和錯(cuò)誤處理機(jī)制,然后介紹解決本書開發(fā)的“高校學(xué)生管理系統(tǒng)”在打開數(shù)據(jù)庫時(shí)的異常處理方法。預(yù)備知識(shí)7.3.1程序錯(cuò)誤類型C#應(yīng)用程序開發(fā)過程中,根據(jù)錯(cuò)誤產(chǎn)生的原因,通常將代碼中的錯(cuò)誤(Bugs)分為3類:語法錯(cuò)誤、運(yùn)行時(shí)錯(cuò)誤、邏輯錯(cuò)誤。1.語法錯(cuò)誤語法錯(cuò)誤是指在程序代碼中輸入了不符合C#語法規(guī)則的語句而產(chǎn)生的錯(cuò)誤。如數(shù)據(jù)類型不匹配、變量未定義、函數(shù)未定義、輸入了非法的標(biāo)點(diǎn)符號(hào)等等。對(duì)于這類錯(cuò)誤VS開發(fā)工具提供了自動(dòng)檢查功能。對(duì)于出現(xiàn)錯(cuò)誤的地方,VS會(huì)在相應(yīng)的語句下面出現(xiàn)藍(lán)色的波浪線。把鼠標(biāo)放在有波浪線的地方,系統(tǒng)會(huì)自動(dòng)顯示一個(gè)提示框,提示錯(cuò)誤出現(xiàn)的原因。另外,對(duì)于有語法錯(cuò)誤的程序,如果直接調(diào)試的話,系統(tǒng)會(huì)在“錯(cuò)誤列表”窗口給出錯(cuò)誤信息,并告知錯(cuò)誤的代碼行及錯(cuò)誤原因。任務(wù)7.3“高校學(xué)生管理系統(tǒng)”數(shù)據(jù)庫打開時(shí)的異常處理預(yù)備知識(shí)7.3.1程序錯(cuò)誤類型2.運(yùn)行時(shí)錯(cuò)誤運(yùn)行時(shí)錯(cuò)誤是指在沒有語法錯(cuò)誤的前提下,程序在運(yùn)行期間產(chǎn)生的錯(cuò)誤。如數(shù)組下標(biāo)越界、除數(shù)為0、打開一個(gè)不存在的文件、數(shù)據(jù)庫未打開等等。3.邏輯錯(cuò)誤邏輯錯(cuò)誤是指程序能夠正常運(yùn)行,但是不能達(dá)到預(yù)期的效果。比如計(jì)算結(jié)果不正確、數(shù)據(jù)不能正常寫入數(shù)據(jù)庫等功能上的錯(cuò)誤。這類錯(cuò)誤產(chǎn)生的原因主要是由于算法設(shè)計(jì)不正確。程序員只能憑借經(jīng)驗(yàn),通過測(cè)試應(yīng)用程序和運(yùn)行結(jié)果來找到錯(cuò)誤。舉例說明:三種錯(cuò)誤類型。任務(wù)7.3“高校學(xué)生管理系統(tǒng)”數(shù)據(jù)庫打開時(shí)的異常處理預(yù)備知識(shí)7.3.2異常處理在程序運(yùn)行期間出現(xiàn)的錯(cuò)誤,會(huì)中斷或干擾程序的正常流程。而這部分錯(cuò)誤有時(shí)候是可以預(yù)測(cè)的,C#語言也提供了處理這種錯(cuò)誤的機(jī)制,稱為異常處理。當(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語句,程序員只用將程序代碼的相關(guān)部分分成3種不同的類型,分別放置于try語句塊、catch語句塊和finally語句塊就可以了。任務(wù)7.3“高校學(xué)生管理系統(tǒng)”數(shù)據(jù)庫打開時(shí)的異常處理預(yù)備知識(shí)7.3.2異常處理格式:try{//可能出現(xiàn)異常的代碼}catch(異常類){//處理異常的代碼}finally{//清理資源工作,此部分可不寫}任務(wù)7.3“高校學(xué)生管理系統(tǒng)”數(shù)據(jù)庫打開時(shí)的異常處理說明:(1)把實(shí)現(xiàn)程序正常功能并且可能出現(xiàn)異常的代碼放在try語句塊中。(2)如果在運(yùn)行期間出現(xiàn)了異常,程序就會(huì)跳轉(zhuǎn)到catch語句塊。(3)如果不出現(xiàn)異常,try語句塊中的代碼就會(huì)正常執(zhí)行,catch語句塊就不會(huì)被執(zhí)行。(4)一個(gè)程序中的catch語句塊可以有多個(gè)。(5)無論是否發(fā)生異常,如果程序包含有finally語句塊,則其一定會(huì)被執(zhí)行。任務(wù)實(shí)施編程實(shí)現(xiàn)任務(wù)7-3任務(wù)7.3“高校學(xué)生管理系統(tǒng)”數(shù)據(jù)庫打開時(shí)的異常處理知識(shí)拓展1.有關(guān)異常類(1)Exception是所有異常類的基類。(2)與參數(shù)有關(guān)的異常類(3)與成員訪問有關(guān)的異常(4)與數(shù)組有關(guān)的異常(5)與算術(shù)有關(guān)的異常任務(wù)7.3“高校學(xué)生管理系統(tǒng)”數(shù)據(jù)庫打開時(shí)的異常處理知識(shí)拓展2.異常處理的原則(1)不要對(duì)常見的錯(cuò)誤使用異常處理,盡量使用判斷結(jié)構(gòu)來處理這些錯(cuò)誤,如if語句等;(2)不要為流程的正常控制使用異常;(3)當(dāng)引發(fā)異常時(shí),應(yīng)該提供有意義的異常信息;(4)當(dāng)有多個(gè)catch語句塊時(shí),處理順序應(yīng)當(dāng)從特殊異常到一般異常。任務(wù)7.3“高校學(xué)生管理系統(tǒng)”數(shù)據(jù)庫打開時(shí)的異常處理歸納總結(jié)在本節(jié)中,主要介紹了C#程序開發(fā)中經(jīng)常遇到的程序錯(cuò)誤和異常處理方法,這些都是作為一個(gè)程序員必備的技能,因而在開發(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ù)庫打開時(shí)的異常處理任務(wù)7.4Command對(duì)象簡(jiǎn)介任務(wù)描述前面我們已經(jīng)介紹了如何與數(shù)據(jù)庫建立連接,在建立連接之后就要去操作數(shù)據(jù)庫,如查詢數(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ù)庫提供程序有不同的數(shù)據(jù)庫連接類,如表7-17所示。具體使用哪個(gè)連接類要看我們使用的是什么類型的數(shù)據(jù)庫,本教材示例及應(yīng)用程序都使用SQLServer2008數(shù)據(jù)庫提供程序,因而使用SqlCommand類。任務(wù)7.4Command對(duì)象簡(jiǎn)介表7-17.NETFrmework數(shù)據(jù)提供程序及相應(yīng)的Command類預(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ù)庫連接(2)定義執(zhí)行的SQL語句(3)創(chuàng)建Command對(duì)象(4)執(zhí)行SQL語句或存儲(chǔ)過程2.使用Command對(duì)象執(zhí)行帶參數(shù)的SQL語句3.使用Command對(duì)象執(zhí)行存儲(chǔ)過程舉例說明:執(zhí)行帶參SQL語句和存儲(chǔ)過程的方法。任務(wù)7.4Command對(duì)象簡(jiǎn)介歸納總結(jié)Command對(duì)象是開發(fā)數(shù)據(jù)庫應(yīng)用程序時(shí)非常重要的一個(gè)對(duì)象,通過本節(jié)課程的介紹,要理解并掌握其不同的創(chuàng)建方法,熟練掌握常用的三個(gè)方法方法ExecuteNonQuery()、ExecuteScalar()和ExecuteReader()的不同功能,能夠使用這幾個(gè)方法實(shí)現(xiàn)數(shù)據(jù)庫的增、刪、改、查操作。任務(wù)7.4Command對(duì)象簡(jiǎn)介任務(wù)7.5實(shí)現(xiàn)“高校學(xué)生管理系統(tǒng)”的登錄功能任務(wù)描述為了進(jìn)入學(xué)生管理系統(tǒng),用戶需要進(jìn)行登錄驗(yàn)證,輸入有效的用戶名和密碼。前面我們已經(jīng)設(shè)計(jì)了系統(tǒng)的登錄界面,當(dāng)用戶名或密碼有誤時(shí),會(huì)給出對(duì)應(yīng)提示,如圖7-8所示。本節(jié)就首先使用我們學(xué)習(xí)的Connection對(duì)象連接數(shù)據(jù)庫,然后使用的Command對(duì)象的ExecuteScalar()方法來完成登錄功能。登錄時(shí)要判斷輸入的用戶名、密碼及用戶類型是否在對(duì)應(yīng)的數(shù)據(jù)表中有記錄,這可以使用Command對(duì)象的ExecuteScalar()方法執(zhí)行Select語句返回查詢結(jié)果,然后判斷是否有與條件匹配的記錄存在。圖7-8用戶登錄失敗效果任務(wù)7.5實(shí)現(xiàn)“高校學(xué)生管理系統(tǒng)”的登錄功能預(yù)備知識(shí)在用戶打開“學(xué)生管理系統(tǒng)”的登錄界面,進(jìn)行登錄的時(shí)候要進(jìn)行必要的驗(yàn)證,比如用戶名密碼是否輸入,是否選擇了用戶類型,若有輸入是否輸入正確匹配等。下面我們對(duì)登錄功能及功能實(shí)現(xiàn)進(jìn)行分析7.5.1用戶登錄功能需求分析(1)當(dāng)沒有輸入戶名、密碼或沒有選擇用戶類型而直接點(diǎn)擊“登錄”按鈕時(shí),會(huì)給出對(duì)應(yīng)的提示,提示效果在前面的章節(jié)中我們已經(jīng)學(xué)習(xí)過,此處不再說明。(2)當(dāng)輸入用戶名或密碼與數(shù)據(jù)庫中的數(shù)據(jù)不匹配時(shí),提示效果如圖7-8。任務(wù)7.5實(shí)現(xiàn)“高校學(xué)生管理系統(tǒng)”的登錄功能預(yù)備知識(shí)7.5.2用戶登錄功能實(shí)現(xiàn)方法(1)實(shí)現(xiàn)功能的代碼在“登錄”按鈕的Click事件里;(2)首先驗(yàn)證是否輸入了用戶名、密碼,是否選擇了用戶類型,如果有缺項(xiàng)使用對(duì)話框給出對(duì)應(yīng)提示,并將光標(biāo)定位;(3)如果輸入了用戶名、密碼,并且選擇了用戶類型,則根據(jù)用戶類型,驗(yàn)證用戶名和密碼是否正確。此功能的實(shí)現(xiàn)需要進(jìn)入數(shù)據(jù)庫中相應(yīng)的表中查詢是否有與用戶輸入的用戶名、密碼和類型相匹配的記錄,當(dāng)用戶類型是“管理員”時(shí),則進(jìn)入管理員信息表(Admin)查找是否有匹配記錄,當(dāng)用戶類型時(shí)“學(xué)員”時(shí),則進(jìn)入學(xué)生信息表(Student)查找是否有匹配記錄。(4)根據(jù)(3)中查找的結(jié)果,如果有匹配記錄就打開對(duì)應(yīng)的窗口。否則就提示有戶名或密碼有誤。任務(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返回值問題(1)當(dāng)該方法與聚合函數(shù)(count,max,min,average)一起使用時(shí),可以將執(zhí)行結(jié)果顯式轉(zhuǎn)換為一個(gè)int類型,如本例就是使用了count函數(shù)。(2)當(dāng)該方法不與聚合函數(shù)一起使用時(shí),當(dāng)執(zhí)行查詢結(jié)果的第一行第一列無值時(shí),返回一個(gè)NULL,有具體值時(shí),根據(jù)其值進(jìn)行類型轉(zhuǎn)換,返回結(jié)果。2.常見錯(cuò)誤(1)在執(zhí)行SQL語句或存儲(chǔ)過程之前數(shù)據(jù)庫連接未打開;(2)使用Command對(duì)象的ExecuteScalar()方法執(zhí)行SQL語句或存儲(chǔ)過程后沒有進(jìn)行顯式類型轉(zhuǎn)換。任務(wù)7.5實(shí)現(xiàn)“高校學(xué)生管理系統(tǒng)”的登錄功能歸納總結(jié)Command對(duì)象的ExecuteScalar()方法是開發(fā)數(shù)據(jù)庫應(yīng)用程序中常用的一個(gè)方法,利用它可以檢驗(yàn)對(duì)數(shù)據(jù)庫的查詢操作是否有有效的結(jié)果,要理解其返回值問題,能夠?qū)Ψ祷刂颠M(jìn)行正確的類型轉(zhuǎn)換及判斷。任務(wù)7.6實(shí)現(xiàn)“高校學(xué)生管理系統(tǒng)”查詢?nèi)繉W(xué)生信息功能任務(wù)描述大多應(yīng)用程序都提供的有查詢功能,用戶可以根據(jù)一定的條件進(jìn)行查詢,系統(tǒng)將查詢結(jié)果顯示給用戶,這一功能的實(shí)現(xiàn)就需要使用Command對(duì)象的ExecuteReader()方法,該方法返回一個(gè)DataReader對(duì)象,通過DataReader對(duì)象從數(shù)據(jù)庫中讀取數(shù)據(jù)。本任務(wù)主要介紹ExecuteReader()方法及DataReader對(duì)象的常用屬性和方法,實(shí)現(xiàn)查詢學(xué)生信息功能。任務(wù)7.6實(shí)現(xiàn)“高校學(xué)生管理系統(tǒng)”查詢?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ù)庫提供程序有不同的數(shù)據(jù)庫連接類,如表7-20所示。表7-20.NETFrmework數(shù)據(jù)提供程序及相應(yīng)的DataReader類任務(wù)7.6實(shí)現(xiàn)“高校學(xué)生管理系統(tǒng)”查詢?nèi)繉W(xué)生信息功能預(yù)備知識(shí)7.6.1SqlDataReader對(duì)象簡(jiǎn)介SqlDataReader提供一種從數(shù)據(jù)庫讀取只讀數(shù)據(jù)流的方式。不能對(duì)讀取的數(shù)據(jù)進(jìn)行修改,所以其是只讀的單向的數(shù)據(jù)流,而且在讀取數(shù)據(jù)的時(shí)候,要始終保持與數(shù)據(jù)庫的連接。但是其占用資源非常少,每次只有一條記錄存在其中。SqlDataReader對(duì)象的主要屬性和方法如表7-21所示。表7-21SqlDataReader對(duì)象的主要屬性和方法任務(wù)實(shí)施編程實(shí)現(xiàn)任務(wù)7-6任務(wù)7.6實(shí)現(xiàn)“高校學(xué)生管理系統(tǒng)”查詢?nèi)繉W(xué)生信息功能任務(wù)7.6實(shí)現(xiàn)“高校學(xué)生管理系統(tǒng)”查詢?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)”查詢?nèi)繉W(xué)生信息功能歸納總結(jié)在本節(jié)中,主要介紹了使用Command對(duì)象的ExecuteReader()方法生成DataReader對(duì)象的方法,掌握DataReader對(duì)象的使用步驟和及注意事項(xiàng),是作為一個(gè)程序開發(fā)人員必備的技能之一。任務(wù)7.7實(shí)現(xiàn)“高校學(xué)生管理系統(tǒng)”模糊查詢功能任務(wù)描述在學(xué)生管理系統(tǒng)主界面中點(diǎn)擊工具欄上的“查詢及修改學(xué)員”工具按鈕就會(huì)彈出如圖7-10所示的“查找學(xué)員用戶”窗口。用戶在用戶名后面的文本框中輸入查詢關(guān)鍵字,點(diǎn)擊“查找”按鈕就能夠查找到與關(guān)鍵字有關(guān)的學(xué)員信息,并將信息顯示在窗體上的ListView控件中。本任務(wù)將主要講解使用ListView控件顯示查詢結(jié)果的方法。圖7-10查找學(xué)員用戶界面任務(wù)7.7實(shí)現(xiàn)“高校學(xué)生管理系統(tǒng)”模糊查詢功能預(yù)備知識(shí)7.7.1ListView列表視圖控件介紹ListView控件可以顯示帶圖標(biāo)的項(xiàng)列表,用戶可使用該控件創(chuàng)建類似Win7系統(tǒng)計(jì)算機(jī)功能的用戶界面,就是通過ListView控件實(shí)現(xiàn)的。任務(wù)7.7實(shí)現(xiàn)“高校學(xué)生管理系統(tǒng)”模糊查詢功能預(yù)備知識(shí)7.7.1ListView列表視圖控件介紹1.常用屬性ListView控件常用屬性及說明如教材表7-22所示。下面對(duì)比較重要的屬性進(jìn)行詳細(xì)介紹:(1)View屬性。用于獲取或設(shè)置項(xiàng)在控件中的顯示方式。View的屬性值及說明如表7-23所示。表7-23View屬性取值及說明任務(wù)7.7實(shí)現(xiàn)“高校學(xué)生管理系統(tǒng)”模糊查詢功能預(yù)備知識(shí)7.7.1ListView列表視圖控件介紹(2)FullrowSelect屬性。用于指定是只選擇某一項(xiàng),還是選擇某一項(xiàng)所在的整行,如果單擊某項(xiàng)會(huì)選擇該項(xiàng)及其所有子項(xiàng),則為True;如果單擊某項(xiàng)僅選擇項(xiàng)本身,則為False。默認(rèn)為False。說明:除非將ListView控件的View屬性設(shè)置為Details,否則FullRowSelect屬性無效。在ListView顯示帶有許多子項(xiàng)的項(xiàng)時(shí),通常使用FullrowSelect屬性。(3)GridLines屬性。指定在包含控件中項(xiàng)及其子項(xiàng)的行和列之間是否顯示網(wǎng)格線,如果在項(xiàng)及其子項(xiàng)的周圍繪制網(wǎng)格線,則為True;否則為False。默認(rèn)為False。說明:除非將ListView控件的View屬性設(shè)置為Details,否則GridLines屬性無效。任務(wù)7.7實(shí)現(xiàn)“高校學(xué)生管理系統(tǒng)”模糊查詢功能預(yù)備知識(shí)7.7.1ListView列表視圖控件介紹2.常用方法與事件ListView常用方法與事件如表7-24所示。表7-24ListView常用方法任務(wù)7.7實(shí)現(xiàn)“高校學(xué)生管理系統(tǒng)”模糊查詢功能預(yù)備知識(shí)7.7.1ListView列表視圖控件介紹3.ListViewItem列表視圖中的選項(xiàng)總是ListViewItem類的一個(gè)實(shí)例。ListViewItem包含要顯示的信息,如文本和圖標(biāo)的索引。ListViewItems有一個(gè)SubItems屬性,其中包含另一個(gè)類ListViewSubItem的實(shí)例。如果ListView控件處于Details或Tile模式下,這些子項(xiàng)就會(huì)顯示出來。每個(gè)子選項(xiàng)表示列表視圖中的一個(gè)列。子項(xiàng)和主選項(xiàng)之間的區(qū)別是,子選項(xiàng)不能顯示圖標(biāo)。通過Items集合吧ListViewItems添加到ListView中,通過ListViewItem上的SubItems集合把ListViewSubItems添加到ListViewItem中。任務(wù)7.7實(shí)現(xiàn)“高校學(xué)生管理系統(tǒng)”模糊查詢功能預(yù)備知識(shí)7.7.1ListView列表視圖控件介紹4.ColumnHeader要使用列表視圖顯示列標(biāo)題,需要把類ColumnHeader的實(shí)例添加到ListView的Column生集合中,當(dāng)ListView控件處于Details模式下時(shí),Columnheaders為要顯示的列提供一個(gè)標(biāo)題。任務(wù)7.7實(shí)現(xiàn)“高校學(xué)生管理系統(tǒng)”模糊查詢功能預(yù)備知識(shí)7.7.2ListView控件簡(jiǎn)單應(yīng)用舉例說明:使用ListView控件實(shí)現(xiàn)“我的電腦”本地磁盤詳細(xì)信息功能。圖7-12模擬“我的電腦”效果圖任務(wù)實(shí)施編程實(shí)現(xiàn)任務(wù)7-7任務(wù)7.7實(shí)現(xiàn)“高校學(xué)生管理系統(tǒng)”模糊查詢功能任務(wù)7.7實(shí)現(xiàn)“高校學(xué)生管理系統(tǒng)”模糊查詢功能知識(shí)拓展1.ImageList控件簡(jiǎn)介ImageList控件是一個(gè)圖片集管理器,支持bmp、gif和jpg等圖像格式。主要用于緩存用戶預(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)”模糊查詢功能知識(shí)拓展2.ImageList控件簡(jiǎn)單應(yīng)用舉例說明:實(shí)現(xiàn)“我的電腦”磁盤顯示的“大圖標(biāo)”、“小圖標(biāo)”、“詳細(xì)列表”顯示效果。任務(wù)7.7實(shí)現(xiàn)“高校學(xué)生管理系統(tǒng)”模糊查詢功能歸納總結(jié)在本節(jié)中,通過實(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é)員用戶的界面,如圖5-2所示,在本節(jié)中,我們將利用Command對(duì)象的ExecuteNonQuery()方法,實(shí)現(xiàn)對(duì)MySchool數(shù)據(jù)庫中學(xué)生表(Student)增加一條記錄操作。添加學(xué)員用戶成功后的效果如圖7-20所示。圖7-20添加學(xué)員用戶界面任務(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ù)庫中查詢記錄的功能。那么怎樣對(duì)數(shù)據(jù)表中記錄進(jìn)行增刪改呢?這就需要使用Command對(duì)象的ExecuteNonQuery()方法。ExecuteNonQuery()方法,是Command對(duì)象的中的一個(gè)極其重要的方法,其返回值是一個(gè)int類型的數(shù)據(jù),代表受SQL語句影響的行數(shù)。ExecuteNonQuery()方法執(zhí)行特定的SQL語句,如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ù)庫連接字符串2.創(chuàng)建Connection對(duì)象3.定義要執(zhí)行的sql語句4.創(chuàng)建Command對(duì)象5.調(diào)用Connection對(duì)象的Open()方法打開數(shù)據(jù)庫6.執(zhí)行ExecuteNonQuery()方法7.調(diào)用Connection對(duì)象的Close()方法關(guān)閉數(shù)據(jù)庫8.根據(jù)返回的結(jié)果進(jìn)行后續(xù)的處理我們可以通過它的返回結(jié)果知道執(zhí)行的情況,如果返回值小于或等于0,說明沒有記錄受到影響。任務(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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 森林動(dòng)植物遺傳資源保存考核試卷
- 環(huán)保型金屬防銹劑的制備與應(yīng)用考核試卷
- 化妝品企業(yè)質(zhì)量風(fēng)險(xiǎn)管理及應(yīng)對(duì)措施考核試卷
- 玻璃纖維增強(qiáng)型復(fù)合板材考核試卷
- 電動(dòng)車電機(jī)維修與調(diào)試考核試卷
- 玻璃儀器在光學(xué)顯微鏡升級(jí)改造中的應(yīng)用考核試卷
- 電梯門系統(tǒng)的智能故障診斷與預(yù)測(cè)維護(hù)考核試卷
- 衛(wèi)浴零售商大數(shù)據(jù)應(yīng)用實(shí)踐考核試卷
- 煉油廠智能化與大數(shù)據(jù)分析應(yīng)用考核試卷
- 2025會(huì)議場(chǎng)地租賃合同協(xié)議書
- 閩南建筑風(fēng)格研究課件
- 小學(xué)美術(shù) 嶺南版 六年級(jí) 古代傳說中的藝術(shù)形象 ppt 課件
- 保潔投標(biāo)書(范本)
- 幼兒園《插座電線我不碰》
- 亞馬遜品牌授權(quán)書(英文模板)
- 高中客觀題的10大解題技法
- 生產(chǎn)線直通率統(tǒng)計(jì)表
- 常用有縫鋼管的規(guī)格及有關(guān)參數(shù)
- 大腸桿菌及大腸菌群計(jì)數(shù)方法
- 圓盤剪切機(jī)結(jié)構(gòu)設(shè)計(jì)說明
- 好盈電調(diào)中文使用說明書
評(píng)論
0/150
提交評(píng)論