




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
項(xiàng)目4設(shè)計(jì)制作圖書(shū)管理系統(tǒng)
圖書(shū)館是高等院校的重要組成部門(mén),是教師和學(xué)生獲取知識(shí)的重要場(chǎng)所。隨著校園網(wǎng)的發(fā)展,各高等院校的圖書(shū)館都開(kāi)始使用“圖書(shū)管理系統(tǒng)”對(duì)讀者信息、圖書(shū)信息及借閱情況進(jìn)行管理。本項(xiàng)目將設(shè)計(jì)制作一個(gè)圖書(shū)管理系統(tǒng),讀者通過(guò)本項(xiàng)目的設(shè)計(jì)與制作,將學(xué)會(huì)C#進(jìn)行數(shù)據(jù)庫(kù)系統(tǒng)開(kāi)發(fā)的方法。主要是掌握使用ADO.NET操作SqlServer數(shù)據(jù)庫(kù),進(jìn)行數(shù)據(jù)庫(kù)編程的方法。任務(wù)4.1安裝并使用SQLServer2008數(shù)據(jù)庫(kù)1.要求和目的要求:安裝SqlServer2017,在安裝過(guò)程中,將登錄方式設(shè)置為Windows身份驗(yàn)證。目的:掌握安裝SqlServer2017的方法;掌握設(shè)置SqlServer2017選項(xiàng)的方法。4.1.1安裝SQLServer2017數(shù)據(jù)庫(kù)管理系統(tǒng)3.相關(guān)背景知識(shí)(1)SQLServer介紹美國(guó)微軟公司推出的一種關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)。SQLServer數(shù)據(jù)庫(kù)是一個(gè)可擴(kuò)展的、高性能的、為分布式客戶機(jī)/服務(wù)器計(jì)算所設(shè)計(jì)的數(shù)據(jù)庫(kù)管理系統(tǒng),實(shí)現(xiàn)了與WindowsNT的有機(jī)結(jié)合,提供了基于事務(wù)的企業(yè)級(jí)信息管理系統(tǒng)方案。其主要特點(diǎn)如下:·高性能設(shè)計(jì),可充分利用WindowsNT的優(yōu)勢(shì)。·系統(tǒng)管理先進(jìn),支持Windows圖形化管理工具,支持本地和遠(yuǎn)程的系統(tǒng)管理和配置?!?qiáng)壯的事務(wù)處理功能,采用各種方法保證數(shù)據(jù)的完整性?!ぶС謱?duì)稱多處理器結(jié)構(gòu)、存儲(chǔ)過(guò)程、ODBC,并具有自主的SQL語(yǔ)言。SQLServer以其內(nèi)置的數(shù)據(jù)復(fù)制功能、強(qiáng)大的管理工具、與Internet的緊密集成和開(kāi)放的系統(tǒng)結(jié)構(gòu)為廣大的用戶、開(kāi)發(fā)人員和系統(tǒng)集成商提供了一個(gè)出眾的數(shù)據(jù)庫(kù)平臺(tái)。(2)SQLServer2008在Microsoft的數(shù)據(jù)平臺(tái)上發(fā)布,可以組織管理任何數(shù)據(jù)。可以將結(jié)構(gòu)化、半結(jié)構(gòu)化和非結(jié)構(gòu)化文檔的數(shù)據(jù)直接存儲(chǔ)到數(shù)據(jù)庫(kù)中??梢詫?duì)數(shù)據(jù)進(jìn)行查詢、搜索、同步、報(bào)告和分析之類(lèi)的操作。數(shù)據(jù)可以存儲(chǔ)在各種設(shè)備上,從數(shù)據(jù)中心最大的服務(wù)器一直到桌面計(jì)算機(jī)和移動(dòng)設(shè)備,它都可以控制數(shù)據(jù)而不用管數(shù)據(jù)存儲(chǔ)在哪里。SQLServer2019允許使用Microsoft.NET和VisualStudio開(kāi)發(fā)的自定義應(yīng)用程序中使用數(shù)據(jù),在面向服務(wù)的架構(gòu)(SOA)和通過(guò)MicrosoftBizTalkServer進(jìn)行的業(yè)務(wù)流程中使用數(shù)據(jù)。信息工作人員可以通過(guò)日常使用的工具直接訪問(wèn)數(shù)據(jù)。4.2.1數(shù)據(jù)庫(kù)基本操作1.要求和目的要求:建立一個(gè)名稱為db1的數(shù)據(jù)庫(kù),通過(guò)菜單向?qū)Х绞胶蚐ql語(yǔ)句兩種方式建立。目的:掌握使用菜單向?qū)У姆绞絼?chuàng)建數(shù)據(jù)庫(kù)的方法;掌握使用Sql語(yǔ)句的方式創(chuàng)建數(shù)據(jù)庫(kù)的方法。任務(wù)4.2SQLServer2017數(shù)據(jù)庫(kù)基本操作(1)數(shù)據(jù)庫(kù)的基本概念數(shù)據(jù)庫(kù)系統(tǒng)提供了一種將信息集合在一起的方法。數(shù)據(jù)庫(kù)主要由三部分組成:數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS),是針對(duì)所有應(yīng)用的,例如ACCESS。數(shù)據(jù)庫(kù)本身,按一定的結(jié)構(gòu)組織在一起的相關(guān)數(shù)據(jù)。數(shù)據(jù)庫(kù)應(yīng)用程序,它是針對(duì)某一具體數(shù)據(jù)庫(kù)應(yīng)用編制的程序,用來(lái)獲取,顯示和更新數(shù)據(jù)庫(kù)存儲(chǔ)的數(shù)據(jù),方便用戶使用。這里講的就是如何編寫(xiě)數(shù)據(jù)庫(kù)應(yīng)用程序。常見(jiàn)的數(shù)據(jù)庫(kù)系統(tǒng)有:FoxPro,Access,Oracle,SQLserver,Sybase等。數(shù)據(jù)庫(kù)管理系統(tǒng)主要有四種類(lèi)型:文件管理,層次數(shù)據(jù)庫(kù),網(wǎng)狀數(shù)據(jù)庫(kù)和關(guān)系數(shù)據(jù)庫(kù)。目前最流行,應(yīng)用最廣泛的是關(guān)系數(shù)據(jù)庫(kù),以上所列舉的數(shù)據(jù)庫(kù)系統(tǒng)都是關(guān)系數(shù)據(jù)庫(kù)。關(guān)系數(shù)據(jù)庫(kù)以行和列的形式來(lái)組織信息,一個(gè)關(guān)系數(shù)據(jù)庫(kù)由若干表組成,一個(gè)表就是一組相關(guān)的數(shù)據(jù)按行排列,例如一個(gè)通訊錄就是這樣一個(gè)表,表中的每一列叫做一個(gè)字段,例如通訊錄中的姓名,地址,電話都是字段。字段包括字段名及具體的數(shù)據(jù),每個(gè)字段都有相應(yīng)的描述信息,例如數(shù)據(jù)類(lèi)型,數(shù)據(jù)寬度等。表中每一行稱為一條記錄。3.相關(guān)背景知識(shí)
(2)數(shù)據(jù)庫(kù)分類(lèi)數(shù)據(jù)庫(kù)可分為本地?cái)?shù)據(jù)庫(kù)和遠(yuǎn)程數(shù)據(jù)庫(kù),本地?cái)?shù)據(jù)庫(kù)一般不能通過(guò)網(wǎng)絡(luò)訪問(wèn),本地?cái)?shù)據(jù)庫(kù)往往和數(shù)據(jù)庫(kù)應(yīng)用程序在同一系統(tǒng)中,本地?cái)?shù)據(jù)庫(kù)也稱為單層數(shù)據(jù)庫(kù)。遠(yuǎn)程數(shù)據(jù)庫(kù)通常位于遠(yuǎn)程計(jì)算機(jī)上,用戶通過(guò)網(wǎng)絡(luò)來(lái)訪問(wèn)遠(yuǎn)程數(shù)據(jù)庫(kù)中的數(shù)據(jù)。遠(yuǎn)程數(shù)據(jù)庫(kù)可以采用兩層,三層和四層結(jié)構(gòu),兩層結(jié)構(gòu)一般采用C/S模式,即客戶端和服務(wù)器模式。三層模式一般采用B/S模式,用戶用瀏覽器訪問(wèn)WEB服務(wù)器,WEB服務(wù)器用CGI,ASP,PHP,JSP等技術(shù)訪問(wèn)數(shù)據(jù)庫(kù)服務(wù)器,生成動(dòng)態(tài)網(wǎng)頁(yè)返回給用戶。四層模式是在WEB服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器中增加一個(gè)應(yīng)用服務(wù)器。利用ADO.NET可以開(kāi)發(fā)數(shù)據(jù)庫(kù)應(yīng)用程序。由于ADO.Net的使用,設(shè)計(jì)單層數(shù)據(jù)庫(kù)或多層數(shù)據(jù)庫(kù)應(yīng)用程序使用的方法基本一致,極大地方便了程序設(shè)計(jì),因此,這里討論的內(nèi)容也適用于后邊的Web應(yīng)用程序設(shè)計(jì)。1.要求和目的要求:建立一個(gè)學(xué)生數(shù)據(jù)表,表名為student,字段包括id、name、sex、birth、grade、specialty、Remarks。分別代表編號(hào)、姓名、性別、出生年月、年級(jí)、專(zhuān)業(yè)、備注。目的:掌握數(shù)據(jù)表的創(chuàng)建方法;了解數(shù)據(jù)表字段的數(shù)據(jù)類(lèi)型的含義;掌握數(shù)據(jù)表寫(xiě)入數(shù)據(jù)、刪除數(shù)據(jù)、修改數(shù)據(jù)的方法。4.2.2數(shù)據(jù)表的基本操作
相關(guān)背景知識(shí)(1)SqlServer數(shù)據(jù)庫(kù)數(shù)據(jù)類(lèi)型及說(shuō)明如表4-1所示。表4-1SqlServer數(shù)據(jù)類(lèi)型及說(shuō)明類(lèi)型說(shuō)明描述int整型數(shù)據(jù)存儲(chǔ)范圍是-2,147,483,648至2,147,483,647(每個(gè)值需4個(gè)字節(jié)的存儲(chǔ)空間)smallint整型數(shù)據(jù)存儲(chǔ)范圍只有-32,768至32,767(每個(gè)值需2個(gè)字節(jié)的存儲(chǔ)空間)。tinyint整型數(shù)據(jù)只能存儲(chǔ)0至255范圍內(nèi)的數(shù)字(每個(gè)值需1個(gè)字節(jié)的存儲(chǔ)空間)。Decimal小數(shù)數(shù)據(jù)包含存儲(chǔ)在最小有效數(shù)上的數(shù)據(jù)。在SQLServer中,小數(shù)數(shù)據(jù)使用decimal或numeric數(shù)據(jù)類(lèi)型存儲(chǔ)。存儲(chǔ)decimal或numeric數(shù)值所需的字節(jié)數(shù)取決于該數(shù)據(jù)的數(shù)字總數(shù)和小數(shù)點(diǎn)右邊的小數(shù)位數(shù)。例如,存儲(chǔ)數(shù)值19283.29383比存儲(chǔ)1.1需要更多的字節(jié)numeric小數(shù)數(shù)據(jù)numeric數(shù)據(jù)類(lèi)型等價(jià)于decimal數(shù)據(jù)類(lèi)型float近似數(shù)字?jǐn)?shù)據(jù)表示從-1.79E+308到1.79E+308之間的浮點(diǎn)數(shù)字?jǐn)?shù)據(jù)。近似數(shù)字(浮點(diǎn))數(shù)據(jù)包括按二進(jìn)制計(jì)數(shù)系統(tǒng)所能提供的最大精度保留的數(shù)據(jù)。在SQLServer中,近似數(shù)字?jǐn)?shù)據(jù)以float和real數(shù)據(jù)類(lèi)型存儲(chǔ)。例如,分?jǐn)?shù)1/3表示成小數(shù)形式為0.333333(循環(huán)小數(shù)),該數(shù)字不能以近似小數(shù)數(shù)據(jù)精確表示。因此,從SQLServer獲取的值可能并不準(zhǔn)確代表存儲(chǔ)在列中的原始數(shù)據(jù)。又如,以.3,.6,.7結(jié)尾的浮點(diǎn)數(shù)均為數(shù)字近似值real近似數(shù)字?jǐn)?shù)據(jù)表示從-3.40E+38到3.40E+38之間的浮點(diǎn)數(shù)字?jǐn)?shù)據(jù)。存儲(chǔ)大小為4字節(jié)。在SQLServer中,real的同義詞為float(24)money貨幣數(shù)據(jù)貨幣數(shù)據(jù)表示正的或負(fù)的貨幣值。在Microsoft?SQLServer?2000中使用money和smallmoney數(shù)據(jù)類(lèi)型存儲(chǔ)貨幣數(shù)據(jù)。貨幣數(shù)據(jù)存儲(chǔ)的精確度為四位小數(shù)??梢源鎯?chǔ)在money數(shù)據(jù)類(lèi)型中的值的范圍是-922,337,203,685,477.5808至+922,337,203,685,477.5807(需8個(gè)字節(jié)的存儲(chǔ)空間)1.要求和目的要求:使用Sql語(yǔ)句實(shí)現(xiàn)學(xué)生數(shù)據(jù)表的數(shù)據(jù)的添加、刪除、修改和查詢操作。目的:掌握Sqlserver2017新建查詢的使用方法;掌握添加、刪除、修改和查詢操作sql語(yǔ)句編寫(xiě)方法。4.2.3使用基本SQL語(yǔ)句(1)SQL(StructuredQueryLanguage)結(jié)構(gòu)化查詢語(yǔ)言,是一種數(shù)據(jù)庫(kù)查詢和程序設(shè)計(jì)語(yǔ)言,用于存取數(shù)據(jù)以及查詢、更新和管理關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)。同時(shí)也是數(shù)據(jù)庫(kù)腳本文件的擴(kuò)展名。SQL是高級(jí)的非過(guò)程化編程語(yǔ)言,允許用戶在高層數(shù)據(jù)結(jié)構(gòu)上工作。它不要求用戶指定對(duì)數(shù)據(jù)的存放方法,也不需要用戶了解具體的數(shù)據(jù)存放方式,所以具有完全不同底層結(jié)構(gòu)的不同數(shù)據(jù)庫(kù)系統(tǒng),可以使用相同的SQL語(yǔ)言作為數(shù)據(jù)輸入與管理的SQL接口。它以記錄集合作為操作對(duì)象,所有SQL語(yǔ)句接受集合作為輸入,返回集合作為輸出,這種集合特性允許一條SQL語(yǔ)句的輸出作為另一條SQL語(yǔ)句的輸入,所以SQL語(yǔ)句可以嵌套,這使他具有極大的靈活性和強(qiáng)大的功能,在多數(shù)情況下,在其他語(yǔ)言中需要一大段程序?qū)崿F(xiàn)的功能只需要一個(gè)SQL語(yǔ)句就可以達(dá)到目的,這也意味著用SQL語(yǔ)言可以寫(xiě)出非常復(fù)雜的語(yǔ)句。SQL語(yǔ)言包含4個(gè)部分:·數(shù)據(jù)定義語(yǔ)言(DDL),例如:CREATE、DROP、ALTER等語(yǔ)句。·數(shù)據(jù)操作語(yǔ)言(DML),例如:INSERT(插入)、UPDATE(修改)、DELETE(刪除)語(yǔ)句?!?shù)據(jù)查詢語(yǔ)言(DQL),例如:SELECT語(yǔ)句?!?shù)據(jù)控制語(yǔ)言(DCL),例如:GRANT、REVOKE、COMMIT、ROLLBACK等語(yǔ)句。相關(guān)背景知識(shí)4.3.1了解ADO.NET相關(guān)背景知識(shí)1.ADO.NET的名稱ADO.NET的名稱起源于ADO(ActiveXDataObjects),這是一個(gè)廣泛的類(lèi)組,用于在以往的Microsoft技術(shù)中訪問(wèn)數(shù)據(jù)。之所以使用ADO.NET名稱,是因?yàn)镸icrosoft希望表明這是在.NET編程環(huán)境中優(yōu)先使用的數(shù)據(jù)訪問(wèn)接口。2.ADO.NET的優(yōu)點(diǎn)與ADO的早期版本和其他數(shù)據(jù)訪問(wèn)組件相比,ADO.NET提供了若干好處。這些好處分成以下幾個(gè)類(lèi)別:·互操作性ADO.NET應(yīng)用程序可以利用XML的靈活性和廣泛接受性。由于XML是用于在網(wǎng)絡(luò)中傳輸數(shù)據(jù)集的格式,因此可以讀取XML格式的任何組件都可以處理數(shù)據(jù)。實(shí)際上,接收組件根本不必是ADO.NET組件:傳輸組件可以只是將數(shù)據(jù)集傳輸給其目標(biāo),而不考慮接收組件的實(shí)現(xiàn)方式。目標(biāo)組件可以是VisualStudio應(yīng)用程序或無(wú)論用什么工具實(shí)現(xiàn)的其他任何應(yīng)用程序。唯一的要求是接收組件能夠讀取XML。作為一項(xiàng)工業(yè)標(biāo)準(zhǔn),XML正是在謹(jǐn)記這種互操作性的情況下設(shè)計(jì)的。任務(wù)4.3使用ADO.NET操作SQLServer2017·可維護(hù)性在已部署系統(tǒng)的生存期中,適度的更改是可能的,但由于十分困難,所以很少嘗試進(jìn)行實(shí)質(zhì)的結(jié)構(gòu)更改。這是很遺憾的,因?yàn)樵谑录淖匀贿^(guò)程中,這種實(shí)質(zhì)上的更改會(huì)變得很有必要。例如,當(dāng)自已部署的應(yīng)用程序越來(lái)越受用戶歡迎時(shí),增加的性能負(fù)荷可能需要進(jìn)行結(jié)構(gòu)更改。隨著已部署的應(yīng)用程序服務(wù)器上的性能負(fù)荷的增長(zhǎng),系統(tǒng)資源會(huì)變得不足,并且響應(yīng)時(shí)間或吞吐量會(huì)受到影響。面對(duì)該問(wèn)題,軟件設(shè)計(jì)者可以選擇將服務(wù)器的業(yè)務(wù)邏輯處理和用戶界面處理劃分到單獨(dú)計(jì)算機(jī)上的單獨(dú)層上。實(shí)際上,應(yīng)用程序服務(wù)器層將替換為兩層,緩解了系統(tǒng)資源缺乏。該問(wèn)題并不是要設(shè)計(jì)三層應(yīng)用程序。相反,它是要在應(yīng)用程序部署以后增加層數(shù)。如果原始應(yīng)用程序使用數(shù)據(jù)集以ADO.NET實(shí)現(xiàn),則該轉(zhuǎn)換很容易進(jìn)行。請(qǐng)記住,當(dāng)用兩層替換單個(gè)層時(shí),將安排這兩層交換信息。由于這些層可以通過(guò)XML格式的數(shù)據(jù)集傳輸數(shù)據(jù),所以通信相對(duì)較容易。
·可編程性VisualStudio中的ADO.NET數(shù)據(jù)組件以不同方式封裝數(shù)據(jù)訪問(wèn)功能,加快編程速度并減少犯錯(cuò)幾率。例如,數(shù)據(jù)命令提取生成和執(zhí)行SQL語(yǔ)句或存儲(chǔ)過(guò)程的任務(wù)。同樣,由這些設(shè)計(jì)器工具生成的ADO.NET數(shù)據(jù)類(lèi)導(dǎo)致類(lèi)型化數(shù)據(jù)集。這可以通過(guò)已聲明類(lèi)型的編程訪問(wèn)數(shù)據(jù)。最后,已聲明類(lèi)型的數(shù)據(jù)集的代碼更安全,原因在于它提供對(duì)類(lèi)型的編譯時(shí)檢查。例如,假定AvailableCredit表達(dá)為貨幣值。如果程序員誤向AvailableCredit分配了字符串值,環(huán)境會(huì)在編譯時(shí)向程序員報(bào)告該錯(cuò)誤。當(dāng)使用未聲明類(lèi)型的數(shù)據(jù)集時(shí),程序員直到運(yùn)行時(shí)才會(huì)知道該錯(cuò)誤?!ば阅軐?duì)于不連接的應(yīng)用程序,ADO.NET數(shù)據(jù)庫(kù)提供的性能優(yōu)于ADO不連接的記錄集。當(dāng)使用COM封送在層間傳輸不連接的記錄集時(shí),會(huì)因?qū)⒂涗浖瘍?nèi)的值轉(zhuǎn)換為COM可識(shí)別的數(shù)據(jù)類(lèi)型而導(dǎo)致顯著的處理開(kāi)銷(xiāo)。在ADO.NET中,這種數(shù)據(jù)類(lèi)型轉(zhuǎn)換則沒(méi)有必要?!た缮炜s性因?yàn)閃eb可以極大增加對(duì)數(shù)據(jù)的需求,所以可縮放性變得很關(guān)鍵。Internet應(yīng)用程序具有無(wú)限的潛在用戶供應(yīng)。盡管應(yīng)用程序可以很好地為十幾個(gè)用戶服務(wù),但它可能不能向成百上千個(gè)(或成千上萬(wàn)個(gè))用戶提供同樣好的服務(wù)。使用數(shù)據(jù)庫(kù)鎖和數(shù)據(jù)庫(kù)連接之類(lèi)資源的應(yīng)用程序不能很好地為大量用戶服務(wù),因?yàn)橛脩魧?duì)這些有限資源的需求最終將超出其供應(yīng)。ADO.NET通過(guò)鼓勵(lì)程序員節(jié)省有限資源來(lái)實(shí)現(xiàn)可縮放性。由于所有ADO.NET應(yīng)用程序都使用對(duì)數(shù)據(jù)的不連接訪問(wèn),因此它不會(huì)在較長(zhǎng)持續(xù)時(shí)間內(nèi)保留數(shù)據(jù)庫(kù)鎖或活動(dòng)數(shù)據(jù)庫(kù)連接。3.ADO.NET的結(jié)構(gòu)ADO.NET結(jié)構(gòu)由以下三部分組成:·表示層ADO.NET利用XML的力量來(lái)提供對(duì)數(shù)據(jù)的斷開(kāi)式訪問(wèn)。ADO.NET的設(shè)計(jì)與.NETFramework中XML類(lèi)的設(shè)計(jì)是并進(jìn)的,它們都是同一個(gè)結(jié)構(gòu)的組件。ADO.NET和.NETFramework中的XML類(lèi)集中于DataSet對(duì)象。無(wú)論XML源是文件還是XML流,都可以用來(lái)填充DataSet。無(wú)論DataSet中數(shù)據(jù)的數(shù)據(jù)源是什么,DataSet都可以作為符合萬(wàn)維網(wǎng)聯(lián)合會(huì)(W3C)標(biāo)準(zhǔn)的XML進(jìn)行編寫(xiě),并且將其架構(gòu)包含為XML架構(gòu)定義語(yǔ)言(XSD)架構(gòu)。由于DataSet固有的序列化格式為XML,因此是在層間移動(dòng)數(shù)據(jù)出色的媒介,這使DataSet成為在遠(yuǎn)程向XMLWeb服務(wù)發(fā)送數(shù)據(jù)和架構(gòu)上下文以及從XMLWeb服務(wù)接收數(shù)據(jù)和架構(gòu)上下文的最佳選擇?!ぶ虚g層中間層存儲(chǔ)了大量的訪問(wèn)數(shù)據(jù)的組件·數(shù)據(jù)層數(shù)據(jù)層直接與數(shù)據(jù)庫(kù)接觸,操作數(shù)據(jù)庫(kù)4..NETFRAMEWORK數(shù)據(jù)提供程序.NETFRAMEWORK數(shù)據(jù)提供程序用于連接到數(shù)據(jù)庫(kù)、執(zhí)行命令和檢索結(jié)果??梢灾苯犹幚頇z索到的結(jié)果,或?qū)⑵浞诺紻O.NETDATASET對(duì)象,以便與來(lái)自多個(gè)源的數(shù)據(jù)或在層之間進(jìn)行遠(yuǎn)程處理的數(shù)據(jù)組合在一起,以特殊方式向用戶公開(kāi)。.NETFRAMEWORK數(shù)據(jù)提供程序是輕量的,它在數(shù)據(jù)源和代碼之間創(chuàng)建了一個(gè)最小層,以便在不以功能為代價(jià)的前提下提高性能。.NETFRAMEWORK數(shù)據(jù)提供程序包括四種不同的數(shù)據(jù)提供程序,支持多種數(shù)據(jù)庫(kù)的訪問(wèn)?!QLSERVER.NETFRAMEWORK數(shù)據(jù)提供程序:提供對(duì)MSSQLSERVER7.0或更高版本的數(shù)據(jù)訪問(wèn),它位于SYSTEM.DATA.SQLCLIENT命名空間內(nèi)?!LEDB.NETFRAMEWORK數(shù)據(jù)提供程序:適用于OLEDB公開(kāi)的數(shù)據(jù)源。它位于SYSTEM.DATA.OLEDB命名空間?!DBC.NETFRAMEWORK數(shù)據(jù)提供程序:適用于ODBC公開(kāi)的數(shù)據(jù)源,它位于SYSTEM.DATA.ODBC·ORACLE.NETFRAMEWORK數(shù)據(jù)提供程序:適用于ORACLE數(shù)據(jù)源,位于SYSTEM.DATAORACLECLIENT5.ADO.NET包含的類(lèi)·SqlConnection類(lèi)用于連接SqlServer數(shù)據(jù)庫(kù)。連接幫助指明數(shù)據(jù)庫(kù)服務(wù)器、數(shù)據(jù)庫(kù)名字、用戶名、密碼,和連接數(shù)據(jù)庫(kù)所需要的其它參數(shù)。connection對(duì)象會(huì)被command對(duì)象使用,這樣就能夠知道是在哪個(gè)數(shù)據(jù)庫(kù)上面執(zhí)行命令。與數(shù)據(jù)庫(kù)交互的過(guò)程意味著程序必須指明想要發(fā)生的數(shù)據(jù)操作。這些操作依靠command對(duì)象執(zhí)行的??梢允褂胏ommand對(duì)象來(lái)發(fā)送SQL語(yǔ)句給數(shù)據(jù)庫(kù)。command對(duì)象使用connection對(duì)象來(lái)指出與哪個(gè)數(shù)據(jù)庫(kù)進(jìn)行連接。也可以能夠單獨(dú)使用command對(duì)象來(lái)直接執(zhí)行命令,或者將一個(gè)command對(duì)象的引用傳遞給SqlDataAdapter?!ommand對(duì)象成功與數(shù)據(jù)建立連接后,就可以用command對(duì)象來(lái)執(zhí)行查詢、修改、插入、刪除等命令;command對(duì)象常用的方法有ExecuteReader方法、ExecuteScalar()方法、ExecuteNonQuery()方法。插入數(shù)據(jù)可用ExecuteNOnQuery()方法來(lái)執(zhí)行插入命令。·sqlDataReader類(lèi)許多數(shù)據(jù)操作只是讀取一串?dāng)?shù)據(jù)。datareader對(duì)象允許獲得從command對(duì)象的SELECT語(yǔ)句得到的結(jié)果??紤]性能的因素,從datareader返回的數(shù)據(jù)都是快速的且只是“向前”的數(shù)據(jù)流。這意味著只能按照一定的順序從數(shù)據(jù)流中取出數(shù)據(jù)。這對(duì)于速度來(lái)說(shuō)是有好處的,但是如果需要操作數(shù)據(jù),更好的辦法是使用DataSet?!ataSet對(duì)象DataSet對(duì)象是數(shù)據(jù)在內(nèi)存中的表示形式。它包括多個(gè)DataTable對(duì)象,而DataTable包含列和行,就象一個(gè)普通的數(shù)據(jù)庫(kù)中的表。也可以定義表之間的關(guān)系來(lái)創(chuàng)建主從關(guān)系(parent-childrelationships)。DataSet是在特定的場(chǎng)景下使用――幫助管理內(nèi)存中的數(shù)據(jù)并支持對(duì)數(shù)據(jù)的斷開(kāi)操作的。DataSet是被所有DataProviders使用的對(duì)象,因此它并不像DataProvider一樣需要特別的前綴。·SqlDataAdapter類(lèi)某些時(shí)候使用的數(shù)據(jù)主要是只讀的,并且很少需要將其改變至底層的數(shù)據(jù)源。同樣一些情況要求在內(nèi)存中緩存數(shù)據(jù),以此來(lái)減少并不改變的數(shù)據(jù)被數(shù)據(jù)庫(kù)調(diào)用的次數(shù)。Dataadapter通過(guò)斷開(kāi)模型來(lái)幫助完成對(duì)以上情況的處理。當(dāng)在一單批次的對(duì)數(shù)據(jù)庫(kù)的讀寫(xiě)操作的持續(xù)的改變返回至數(shù)據(jù)庫(kù)的時(shí)候,Dataadapter填充(fill)DataSet對(duì)象。dataadapter包含對(duì)連接對(duì)象以及當(dāng)對(duì)數(shù)據(jù)庫(kù)進(jìn)行讀取或者寫(xiě)入的時(shí)候自動(dòng)的打開(kāi)或者關(guān)閉連接的引用。另外,dataadapter包含對(duì)數(shù)據(jù)的SELECT,INSERT,UPDATE和DELETE操作的command對(duì)象引用。1.要求和目的要求:設(shè)計(jì)一個(gè)應(yīng)用程序,測(cè)試與數(shù)據(jù)庫(kù)的連接是否正常,并給予提示。目的:掌握Connection對(duì)象屬性設(shè)置的方法;掌握Connection對(duì)象編程的方法。4.3.2使用Connection對(duì)象相關(guān)背景知識(shí)(3)數(shù)據(jù)庫(kù)連接字符串常用的參數(shù)及描述如表4-4所示。表4-4數(shù)據(jù)庫(kù)連接字符串常用的參數(shù)參數(shù)描述Provider用于設(shè)置或返回連接提供程序的名稱ConnectionTimeout在終止嘗試并產(chǎn)生異常前,等待連接到服務(wù)器的連接時(shí)間長(zhǎng)度(以秒為單位),默認(rèn)值是15秒InitialCatalog或Database數(shù)據(jù)庫(kù)的名稱DataSource或Server連接打開(kāi)時(shí)使用的SQLServer名稱,或者是MicrosoftAccess數(shù)據(jù)庫(kù)的文件名Password或pwdSQLServer賬戶的登錄密碼UserID或uidSQLServer登錄賬戶IntegratedSecurity此參數(shù)決定連接是否是安全連接??赡艿闹涤蠺rue、False和SSPI(SSPI是True的同義詞)PersistSecurityInfo設(shè)置為False時(shí),如果連接是打開(kāi)的或曾經(jīng)處于打開(kāi)狀態(tài),那么安全敏感信息(如密碼)不會(huì)做為連接的一部分返回。設(shè)置屬性值為T(mén)rue可能有安全風(fēng)險(xiǎn),F(xiàn)alse是默認(rèn)值(4)SqlConnection類(lèi)構(gòu)造函數(shù)說(shuō)明如表4-5所示。表4-5SqlConnection類(lèi)構(gòu)造函數(shù)函數(shù)定義參數(shù)說(shuō)明函數(shù)說(shuō)明SqlConnection()不帶參數(shù)創(chuàng)建SqlConnection對(duì)象SqlConnection(stringconnectionstring)連接字符串根據(jù)連接字符串,創(chuàng)建SqlConnection對(duì)象使用第1種構(gòu)造函數(shù):StringConnectionString=”server=(local);InitialCatalog=stu;”;SqlConnectionconn=newSqlConnection();conn.ConnectionString=ConnectionString;conn.Open();使用第2種構(gòu)造函數(shù):Stringcnn=”server=(local);InitialCatalog=stu;”;SqlConnectionconn=newSqlConnection(cnn);conn.Open();1.要求和目的要求:建立一個(gè)應(yīng)用程序,使用SqlCommand對(duì)象和SqlDataReader對(duì)象讀取數(shù)據(jù)庫(kù)內(nèi)容。目的:掌握SqlCommand對(duì)象的使用方法;掌握SqlDataReader對(duì)象的使用方法。4.3.3使用SqlCommand對(duì)象與SqlDataReader對(duì)象3.相關(guān)背景知識(shí)(1)應(yīng)用程序連接數(shù)據(jù)庫(kù)的步驟設(shè)計(jì)一個(gè)數(shù)據(jù)庫(kù)應(yīng)用程序可以采用連接和不連接方式。所謂連接方式,是數(shù)據(jù)庫(kù)應(yīng)用程序運(yùn)行期間,一直保持和數(shù)據(jù)庫(kù)連接,數(shù)據(jù)庫(kù)應(yīng)用程序通過(guò)SQL語(yǔ)句直接對(duì)數(shù)據(jù)庫(kù)操作,例如,查找記錄、刪除記錄、修改記錄。所謂不連接方式,是數(shù)據(jù)庫(kù)應(yīng)用程序把數(shù)據(jù)庫(kù)中感興趣的數(shù)據(jù)讀入建立一個(gè)副本,數(shù)據(jù)庫(kù)應(yīng)用程序?qū)Ω北具M(jìn)行操作,必要時(shí)將修改的副本存回?cái)?shù)據(jù)庫(kù)。設(shè)計(jì)一個(gè)不連接方式數(shù)據(jù)庫(kù)應(yīng)用程序一般包括以下基本步驟:①建立數(shù)據(jù)庫(kù),包括若干個(gè)表,在表中添入數(shù)據(jù)。②建立和數(shù)據(jù)庫(kù)的連接。③從數(shù)據(jù)庫(kù)中取出感興趣的數(shù)據(jù)存入數(shù)據(jù)集DataSet對(duì)象,包括指定表和表中滿足條件的記錄,DataSet對(duì)象被建立在內(nèi)存中,可以包含若干表,可以認(rèn)為是數(shù)據(jù)庫(kù)在內(nèi)存中的一個(gè)子集。然后斷開(kāi)和數(shù)據(jù)庫(kù)的聯(lián)接。④用數(shù)據(jù)綁定的方法顯示這個(gè)子集的數(shù)據(jù),供用戶瀏覽、查詢、修改。⑤把修改的數(shù)據(jù)存回源數(shù)據(jù)庫(kù)。設(shè)計(jì)一個(gè)連接方式數(shù)據(jù)庫(kù)應(yīng)用程序一般包括以下基本步驟:①建立數(shù)據(jù)庫(kù),包括若干個(gè)表,在表中添入數(shù)據(jù)。②建立和數(shù)據(jù)庫(kù)的連接。③使用查詢、修改、刪除、更新等Command對(duì)象直接對(duì)數(shù)據(jù)庫(kù)操作。(2)Command對(duì)象的常用屬性Command對(duì)象的常用屬性有Connection、ConnectionString、CommandType、CommandText和CommandTimeout。Connection屬性:用來(lái)獲得或設(shè)置該Command對(duì)象的連接數(shù)據(jù)源。比如某SqlConnection類(lèi)型的conn對(duì)象連在SQLServer服務(wù)器上,又有一個(gè)Command類(lèi)型的對(duì)象cmd,可以通過(guò)cmd.Connection=conn來(lái)讓cmd在conn對(duì)象所指定的數(shù)據(jù)庫(kù)上操作。不過(guò),通常的做法是直接通過(guò)Connection對(duì)象來(lái)創(chuàng)建Command對(duì)象,而Command對(duì)象不宜通過(guò)設(shè)置Connection屬性來(lái)更換數(shù)據(jù)庫(kù),所以上述做法并不推薦。ConnectionString屬性:用來(lái)獲得或設(shè)置連接數(shù)據(jù)庫(kù)時(shí)用到的連接字符串,用法和上述Connection屬性相同。同樣,不推薦使用該屬性來(lái)更換數(shù)據(jù)庫(kù)。CommandType屬性:用來(lái)獲得或設(shè)置CommandText屬性中的語(yǔ)句是SQL語(yǔ)句、數(shù)據(jù)表名還是存儲(chǔ)過(guò)程。1.要求和目的要求:設(shè)計(jì)制作一個(gè)讀取數(shù)據(jù)庫(kù)的程序,能夠顯示數(shù)據(jù)表的內(nèi)容。目的:掌握Sqlconnection連接對(duì)象的用法;掌握Dataset對(duì)象的用法;掌握bindingSource和dataGridView控件的用法。4.3.4使用Dataset對(duì)象)Dataset介紹數(shù)據(jù)集DataSet是斷開(kāi)與數(shù)據(jù)源的連接時(shí),可以被使用的數(shù)據(jù)記錄在內(nèi)存中的緩存??梢园褦?shù)據(jù)集DataSet看作是內(nèi)存中的數(shù)據(jù)庫(kù)。它在應(yīng)用程序中對(duì)數(shù)據(jù)的支持功能十分強(qiáng)大。DataSet一經(jīng)創(chuàng)建,就能在應(yīng)用程序中充當(dāng)數(shù)據(jù)庫(kù)的位置,為應(yīng)用程序提供數(shù)據(jù)支持。數(shù)據(jù)集DataSet的數(shù)據(jù)結(jié)構(gòu)可以在.net開(kāi)發(fā)環(huán)境中通過(guò)向?qū)瓿?,也可以通過(guò)代碼來(lái)增加表、數(shù)據(jù)列、約束以及表之間的關(guān)系。數(shù)據(jù)集DataSet中的數(shù)據(jù)既可以來(lái)自數(shù)據(jù)源,也可以通過(guò)代碼直接向表中增加數(shù)據(jù)行。數(shù)據(jù)集DataSet類(lèi)似一個(gè)客戶端內(nèi)存中的數(shù)據(jù)庫(kù),可以在這個(gè)數(shù)據(jù)庫(kù)中增加、刪除數(shù)據(jù)表,可以定義數(shù)據(jù)表結(jié)構(gòu)和表之間的關(guān)系,可以增加、刪除表中的行。。相關(guān)背景知識(shí)數(shù)據(jù)集DataSet不考慮其中的表結(jié)構(gòu)和數(shù)據(jù)是來(lái)自數(shù)據(jù)庫(kù)、XML文件還是程序代碼,因此數(shù)據(jù)集DataSet不維護(hù)到數(shù)據(jù)源的連接。這緩解了數(shù)據(jù)庫(kù)服務(wù)器和網(wǎng)絡(luò)的壓力。對(duì)數(shù)據(jù)集DataSet的特點(diǎn)總結(jié)可以總結(jié)為四點(diǎn):第一、使用數(shù)據(jù)集對(duì)象DataSet無(wú)需與數(shù)據(jù)庫(kù)直接交互;第二、DataSet對(duì)象是存儲(chǔ)從數(shù)據(jù)庫(kù)檢索到的數(shù)據(jù)的對(duì)象;第三、DataSet對(duì)象是零個(gè)或多個(gè)表對(duì)象的集合,這些表對(duì)象由數(shù)據(jù)行和列、約束和有關(guān)表中數(shù)據(jù)關(guān)系的信息組成;第四、DataSet對(duì)象既可容納數(shù)據(jù)庫(kù)的數(shù)據(jù),也可以容納非數(shù)據(jù)庫(kù)的數(shù)據(jù)源(2)在不連接的數(shù)據(jù)模型中,每次數(shù)據(jù)庫(kù)應(yīng)用程序需要處理下一條記錄時(shí)都連接回?cái)?shù)據(jù)庫(kù)是不可行的,這樣做會(huì)大大消除使用不連接數(shù)據(jù)的優(yōu)越性。解決方案是臨時(shí)存儲(chǔ)從數(shù)據(jù)庫(kù)檢索的記錄,然后使用該臨時(shí)集。這便是數(shù)據(jù)集的概念。數(shù)據(jù)集DataSet是從數(shù)據(jù)庫(kù)檢索的記錄的緩存。數(shù)據(jù)集DataSet中包含一個(gè)或多個(gè)表(這些表基于源數(shù)據(jù)庫(kù)中的表),并且還可以包含有關(guān)這些表之間的關(guān)系,以及對(duì)表包含數(shù)據(jù)的約束信息。數(shù)據(jù)集DataSet的數(shù)據(jù)通常是源數(shù)據(jù)庫(kù)內(nèi)容的子集,可以用與操作實(shí)際數(shù)據(jù)庫(kù)十分類(lèi)似的方式操作數(shù)據(jù)集DataSet,但操作時(shí),將保持與源數(shù)據(jù)庫(kù)的不連接狀態(tài),使數(shù)據(jù)庫(kù)可以自由執(zhí)行其他任務(wù)。因?yàn)閿?shù)據(jù)集DataSet是數(shù)據(jù)庫(kù)數(shù)據(jù)的私有子集,所以它不一定反映源數(shù)據(jù)庫(kù)的當(dāng)前狀態(tài),因此,需要經(jīng)常更新數(shù)據(jù)集DataSet中的數(shù)據(jù)??梢孕薷臄?shù)據(jù)集DataSet中的數(shù)據(jù),然后把這些修改寫(xiě)回到源數(shù)據(jù)庫(kù)。為了從源數(shù)據(jù)庫(kù)獲取數(shù)據(jù)和將修改寫(xiě)回源數(shù)據(jù)庫(kù),請(qǐng)使用數(shù)據(jù)適配器DataAdapter對(duì)象。數(shù)據(jù)適配器DataAdapter對(duì)象包含更新數(shù)據(jù)集DataSet和將修改寫(xiě)回源數(shù)據(jù)庫(kù)的方法。DataAdapter.Fill()方法執(zhí)行更新數(shù)據(jù)集DataSet操作。DataAdapter.Update()方法執(zhí)行將修改寫(xiě)回源數(shù)據(jù)庫(kù)操作。盡管數(shù)據(jù)集是作為從數(shù)據(jù)庫(kù)獲取的數(shù)據(jù)的緩存,但數(shù)據(jù)集與數(shù)據(jù)庫(kù)之間沒(méi)有任何實(shí)際關(guān)系。數(shù)據(jù)集是容器,它用數(shù)據(jù)適配器的SQL命令或存儲(chǔ)過(guò)程填充。
(3)DataSet對(duì)象常用的屬性方法和事件DataSet對(duì)象常用的屬性如表4-6所示。表4-6DataSet對(duì)象常用的屬性屬性名屬性說(shuō)明CaseSensitive用于控制DataTable中的字符串比較是否區(qū)分大小寫(xiě)DataSetName當(dāng)前DataSet的名稱。如果不指定,則該屬性值設(shè)置為"NewDataSet"。如果將DataSet內(nèi)容寫(xiě)入XML文件,DataSetName是XML文件的根節(jié)點(diǎn)名稱DesignMode如果在設(shè)計(jì)時(shí)使用組件中的DataSet,DesignMode返回True,否則返回FalseHasErrors表示DataSet中的DataRow對(duì)象是否包含錯(cuò)誤。如果將一批更改提交給數(shù)據(jù)庫(kù)并將DataAdapter對(duì)象的ContinueUpdateOnError屬性設(shè)置為T(mén)rue,則在提交更改后必須檢查DataSet的HasErrors屬性,以確定是否有更新失敗Relations返回一個(gè)DataRelationCollection對(duì)象Tables檢查現(xiàn)有的DataTable對(duì)象DataSet對(duì)象常用的方法如表4-11所示。方法名方法說(shuō)明AcceptChanges和RejectChanges接受或放棄DataSet中所有掛起更改。調(diào)用AcceptChanges時(shí),RowState屬性值為Added或Modified的所有行的RowState屬性都將被設(shè)置為UnChanged.任何標(biāo)記為Deleted的DataRow對(duì)象將從DataSet中刪除。調(diào)用RejectChanges時(shí),任何標(biāo)記為Added的DataRow對(duì)象將會(huì)被從DataSet中刪除,其他修改過(guò)的DatRow對(duì)象將返回前一狀態(tài)Clear清除DataSet中所有DataRow對(duì)象。該方法比釋放一個(gè)DataSet然后再創(chuàng)建一個(gè)相同結(jié)構(gòu)的新DataSet要快Clone和Copy使用Copy方法會(huì)創(chuàng)建與原DataSet具有相同結(jié)構(gòu)和相同行的新DataSet。使用Clone方法會(huì)創(chuàng)建具有相同結(jié)構(gòu)的新DataSet,但不包含任何行GetChanges返回與原DataSet對(duì)象具有相同結(jié)構(gòu)的新DataSet,并且還包含原DataSet中所有掛起更改的行GetXml和GetXmlSchema使用GetXml方法得到由DataSet的內(nèi)容與她的架構(gòu)信息轉(zhuǎn)換為XML格式后的字符串。如果只希望返回架構(gòu)信息,可以使用GetXmlSchemaHasChange表示DataSet中是否包含掛起更改的DataRow對(duì)象Merge從另一個(gè)DataSet、DataTable或現(xiàn)有DataSet中的一組DataRow對(duì)象載入數(shù)據(jù)ReadXml和WriteXml使用ReadXml方法從文件、TextReader、數(shù)據(jù)流或者XmlReader中將XML數(shù)據(jù)載入DataSet中Reset將DataSet返回為未初始化狀態(tài)。如果想放棄現(xiàn)有DataSet并且開(kāi)始處理新的DataSet,使用Reset方法比創(chuàng)建一個(gè)DataSet的新實(shí)例好表4-74.4.1圖書(shū)管理系統(tǒng)整體功能設(shè)計(jì)圖書(shū)館作為一種信息資源的集散地,圖書(shū)和用戶借閱資料繁多,包含很多的信息數(shù)據(jù)的管理。根據(jù)調(diào)查得知,圖書(shū)館以前對(duì)信息管理的主要方式是基于文本、表格等紙介質(zhì)的手工處理,對(duì)于圖書(shū)借閱情況(如借書(shū)天數(shù)、超過(guò)限定借書(shū)時(shí)間的天數(shù))的統(tǒng)計(jì)和核實(shí)等往往采用對(duì)借書(shū)卡的人工檢查進(jìn)行,對(duì)借閱者的借閱權(quán)限、以及借閱天數(shù)等用人工計(jì)算、手抄進(jìn)行。數(shù)據(jù)信息處理工作量大,容易出錯(cuò)。由于數(shù)據(jù)繁多,容易丟失,且不易查找。總的來(lái)說(shuō),缺乏系統(tǒng)規(guī)范的信息管理手段。盡管有的圖書(shū)館有計(jì)算機(jī),但是尚未用于信息管理,沒(méi)有發(fā)揮它的效力,資源閑置比較突出。因此,需要設(shè)計(jì)一套規(guī)范、高效的圖書(shū)管理系統(tǒng),以提高圖圖書(shū)管理效率。本項(xiàng)目將設(shè)計(jì)制作一套圖書(shū)管理系統(tǒng),功能包括用戶管理、圖書(shū)管理和借閱管理。其中圖書(shū)管理包括入庫(kù)管理、更新管理和圖書(shū)檢索。任務(wù)4.4設(shè)計(jì)制作圖書(shū)管理系統(tǒng)本項(xiàng)目包含的功能界面具體如下:(1)關(guān)于我們界面AboutBox.cs。(2)添加圖書(shū)信息界面frmAddBook.cs。(3)圖書(shū)封面管理界面frmBookPic.cs。(4)借閱圖書(shū)界面frmIssueBook.cs。(5)系統(tǒng)登錄界面frmLogin.cs。(6)系統(tǒng)管理主界面FrmMain.cs。(7)圖書(shū)檢索界面frmSearchBook.cs。(8)圖書(shū)更新界面frmUpdateBook.cs。
圖4-
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 合伙經(jīng)營(yíng)蘭草協(xié)議合同范本
- 土方回填買(mǎi)斷合同范本
- 分揀員兼職合同范本
- 發(fā)包設(shè)計(jì)施工合同范例
- 發(fā)電設(shè)備采購(gòu)合同范例
- 合伙意向合同范本
- 熔煉加工合同范本
- 包裝內(nèi)襯采購(gòu)合同范本
- ppp項(xiàng)目合同范本 旅游
- vi版權(quán)轉(zhuǎn)讓合同范本
- 牛羊定點(diǎn)屠宰廠項(xiàng)目可行性研究報(bào)告寫(xiě)作模板-申批備案
- 2025年黑龍江農(nóng)業(yè)職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試題庫(kù)及答案1套
- 某工程通風(fēng)空調(diào)工程施工方案
- 遼寧省五校聯(lián)考2024-2025學(xué)年高二上學(xué)期期末英語(yǔ)試卷(解析版)
- 2025年湖南食品藥品職業(yè)學(xué)院高職單招職業(yè)技能測(cè)試近5年常考版參考題庫(kù)含答案解析
- 2025年泰山職業(yè)技術(shù)學(xué)院高職單招數(shù)學(xué)歷年(2016-2024)頻考點(diǎn)試題含答案解析
- 近岸海上柔性光伏支架結(jié)構(gòu)研究
- 2025年廣西投資集團(tuán)有限公司招聘筆試參考題庫(kù)含答案解析
- 新版第三類(lèi)醫(yī)療器械分類(lèi)目錄
- 多智能體機(jī)器人系統(tǒng)控制及其應(yīng)用課件全套第1-8章多智能體機(jī)器人系統(tǒng)-異構(gòu)多智能體系統(tǒng)的協(xié)同控制和最優(yōu)控制
- AQL抽樣標(biāo)準(zhǔn)表xls2
評(píng)論
0/150
提交評(píng)論