




已閱讀5頁(yè),還剩54頁(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)介
摘要本文首先闡述了基于.NET Framework平臺(tái)的圖書(shū)館管理信息系統(tǒng)的開(kāi)發(fā)背景以及其實(shí)踐意義,其次說(shuō)明了圖書(shū)館管理信息系統(tǒng)的功能以及相比同類(lèi)軟件的創(chuàng)新之處。然后就圖書(shū)館管理系統(tǒng)開(kāi)發(fā)中所使用的一些的技術(shù)進(jìn)行研究探討。主要針對(duì)數(shù)據(jù)庫(kù)的設(shè)計(jì)技術(shù)、存儲(chǔ)過(guò)程技術(shù)、ADO.NET技術(shù)以及用SQL Server .NET Framework 數(shù)據(jù)提供程序訪問(wèn)SQLserver2000數(shù)據(jù)庫(kù)技術(shù)四個(gè)方面進(jìn)行了研究。最后還附上了圖書(shū)館管理信息系統(tǒng)的安裝說(shuō)明、簡(jiǎn)單使用說(shuō)明和一些通用性的經(jīng)典代碼。筆者化了大量的時(shí)間用于程序設(shè)計(jì),這也是筆者工作的重點(diǎn),所開(kāi)發(fā)的軟件具有實(shí)用價(jià)值,所編寫(xiě)的代碼對(duì).NET程序員也有很好的參考性。在系統(tǒng)的開(kāi)發(fā)過(guò)程中,筆者深刻體會(huì)到了.NET平臺(tái)的強(qiáng)大性、優(yōu)越性以及存儲(chǔ)過(guò)程在提高數(shù)據(jù)訪問(wèn)性能和增強(qiáng)數(shù)據(jù)訪問(wèn)安全性上所起到的重要作用。此外,對(duì)于關(guān)系代數(shù)在數(shù)據(jù)庫(kù)科學(xué)里的應(yīng)用,筆者在編程過(guò)程中也做了一定的研究。關(guān)鍵詞: 數(shù)據(jù)庫(kù);.NET Framework;ADO.NET;存儲(chǔ)過(guò)程;SQL Server .NET Framework 數(shù)據(jù)提供程序ABSTRACTThe Management Information System of Library using .NET This paper expatiate the Management Information System of Library using .NET, its background and the significance it has when application. Then, it presents the function of the Management Information System of Library and also discuss some technologies using when develop this system. Especially, it discuss the design technology of database, Stored Procedure, ADO.NET and control SQL Server 2000 using SQL Server .NET Framework Data Provider . In the end, it details the setup introduction and the users guide for the Management Information System of Library and also some classic code. The writer used a lot of time to design the program which is the keystone of all the works. The writer realized the importance of Stored Procedure for better performance and improving the security and also the advantage of .NET when programming. Moreover, the writer also investigates the applications of relational algebra in database science when programming. Keywords: Database; NET Framework; ADO.NET; Stored Procedure; SQL Server .NET Framework Data Provider 目 錄摘要.ABSTRACT.1 系統(tǒng)開(kāi)發(fā)背景以及主要內(nèi)容闡述.2 系統(tǒng)概述.2.1 系統(tǒng)提供的功能.2.2 系統(tǒng)一些新特點(diǎn).3 系統(tǒng)設(shè)計(jì)過(guò)程及原理闡述.3.1 數(shù)據(jù)庫(kù)設(shè)計(jì) .3.1.1 數(shù)據(jù)庫(kù)設(shè)計(jì)重點(diǎn).3.1.2 規(guī)范化設(shè)計(jì).3.1.3 數(shù)據(jù)庫(kù)完整性設(shè)計(jì).3.1.4 數(shù)據(jù)庫(kù)的保護(hù).3.2 使用存儲(chǔ)過(guò)程.3.3 .NET Framework平臺(tái)概述.3.4 ADO.NET技術(shù)探討.3.4.1 ADO.NET概述.3.4.2 ADO.NET訪問(wèn)數(shù)據(jù)的基本方法.3.4.3 使用ADO.NET訪問(wèn)SQLserver2000.4 軟件使用說(shuō)明.4.1 環(huán)境要求.4.2 軟件的安裝.4.3 常見(jiàn)操作.5 程序源代碼經(jīng)典部分選錄.5.1 存儲(chǔ)過(guò)程.5.2 winForms代碼選錄.5.3 ASP.NET WebForms代碼選錄.畢業(yè)設(shè)計(jì)成果.致謝.參考文獻(xiàn).附錄一 英文翻譯.附錄二 英文原文.1245579913131415151718181920242424252626294245464748531 系統(tǒng)開(kāi)發(fā)背景以及主要內(nèi)容闡述隨著當(dāng)今社會(huì)的迅猛發(fā)展,知識(shí)變的越來(lái)越重要,終身學(xué)習(xí)的觀念已經(jīng)深入人心。而圖書(shū)館這一傳統(tǒng)的獲取知識(shí)的場(chǎng)所,它的地位也變的越來(lái)越重要。而圖書(shū)館的管理方法也更新了很多次。從最初的手工管理到現(xiàn)在的計(jì)算機(jī)管理等等。筆者經(jīng)過(guò)調(diào)查一些圖書(shū)館的現(xiàn)狀,發(fā)現(xiàn)各圖書(shū)館使用的管理系統(tǒng)基本都是幾年前的產(chǎn)品,大多使用VB+ADO方式,web平臺(tái)也主要使用asp或php開(kāi)發(fā)。開(kāi)發(fā)技術(shù)比較陳舊,功能上也有一些不足。而且以前的VB面向?qū)ο蠡幊蹋∣OP)支持的不是很好,軟件維護(hù)起來(lái)也相當(dāng)困難。Microsoft.Net技術(shù)的推出,將計(jì)算帶入一個(gè)新時(shí)代?,F(xiàn)在.Net已經(jīng)引起業(yè)界廣泛的關(guān)注。.Net是專(zhuān)門(mén)為程序員設(shè)計(jì)的、功能強(qiáng)大的開(kāi)發(fā)工具,利用該工具能夠構(gòu)建各類(lèi)應(yīng)用程序。.NET可以說(shuō)是博大精深,蘊(yùn)含者豐富的新技術(shù)新思想。.Net使應(yīng)用程序的功能更強(qiáng)大,使系統(tǒng)開(kāi)發(fā)更簡(jiǎn)單,使系統(tǒng)的部署更輕松。而.NET包含的統(tǒng)一的類(lèi)庫(kù),統(tǒng)一的數(shù)據(jù)結(jié)構(gòu)使得各類(lèi)編程模型更統(tǒng)一。筆者個(gè)人對(duì).NET技術(shù)非常感興趣,在這方面也做過(guò)大量的研究。又鑒于當(dāng)前流行的圖書(shū)館管理信息系統(tǒng)技術(shù)都比較陳舊,就萌發(fā)了用.NET開(kāi)發(fā)一個(gè)新圖書(shū)館管理信息系統(tǒng)的想法。很高興它成為為我畢業(yè)設(shè)計(jì)研究的課題。系統(tǒng)的實(shí)踐意義有兩個(gè):1開(kāi)發(fā)出的系統(tǒng)功能強(qiáng)大,可以應(yīng)用于各大中型圖書(shū)館使用,可以根據(jù)客戶(hù)的要求添加功能。2由于.NET推出的時(shí)間不算很長(zhǎng),所以網(wǎng)上很少有用.NET開(kāi)發(fā)的公開(kāi)源代碼的大型系統(tǒng)。本系統(tǒng)可以給廣大的.NET編程愛(ài)好者一些參考。本文理論部分主要針對(duì)數(shù)據(jù)庫(kù)設(shè)計(jì)技術(shù)、存儲(chǔ)過(guò)程技術(shù)、ADO.NET技術(shù)以及用SQL Server .NET Framework 數(shù)據(jù)提供程序訪問(wèn)SQLserver2000數(shù)據(jù)庫(kù)技術(shù)這四個(gè)方面進(jìn)行了研究和探討。圖書(shū)館管理信息系統(tǒng)的每一行代碼都是精雕細(xì)琢出來(lái)的,從里面體現(xiàn)出.NET的強(qiáng)大性以及優(yōu)越性。筆者在編程過(guò)程中查閱了大量的書(shū)籍,參考了大量MSDN以及各大網(wǎng)站的技術(shù)文章,全部代碼約有一萬(wàn)兩千行左右。筆者為此做了大量的工作。在系統(tǒng)的開(kāi)發(fā)過(guò)程中,筆者深刻體會(huì)到了.NET平臺(tái)的強(qiáng)大性以及優(yōu)越性以及存儲(chǔ)過(guò)程在提高數(shù)據(jù)訪問(wèn)性能和增強(qiáng)數(shù)據(jù)訪問(wèn)安全性上所起到的重要作用。2 系統(tǒng)概述圖書(shū)館管理系統(tǒng)基于Microsoft公司最新的.NET Framework平臺(tái)構(gòu)建,編碼的基本語(yǔ)言是VB.NET。開(kāi)發(fā)過(guò)程中統(tǒng)一使用.NET框架的數(shù)據(jù)類(lèi)型、方法,拋棄了原來(lái)vb6的內(nèi)容。充分體現(xiàn)了.NET的優(yōu)越性,使軟件易安裝部署、易維護(hù)。系統(tǒng)使用ADO.NET+SQLserver2000模式,數(shù)據(jù)層基本都基于存儲(chǔ)過(guò)程構(gòu)建,使得速度更快、安全性更高。2.1系統(tǒng)提供的功能:針對(duì)圖書(shū)館管理員設(shè)計(jì)的部分:管理部分是一個(gè)基于WinForms的windows窗體應(yīng)用程序,主要為圖書(shū)館管理人員提供服務(wù)。截圖如下:管理部分提供以下功能:1 用戶(hù)功能。(提供登陸驗(yàn)證、用戶(hù)切換,管理員鎖定系統(tǒng)等功能。)2 事務(wù)處理圖書(shū)證掛失管理。(可以針對(duì)讀者情況對(duì)圖書(shū)證進(jìn)行掛失,以防冒借。)借書(shū)、還書(shū)管理。(實(shí)現(xiàn)日常圖書(shū)借閱及歸還。)3 數(shù)據(jù)管理圖書(shū)、讀者管理。(實(shí)現(xiàn)圖書(shū)、讀者的添加,刪除,編輯。)4 綜合查詢(xún)統(tǒng)計(jì)。(可以根據(jù)不同條件的組合檢索圖書(shū)或讀者以及借閱數(shù)據(jù),對(duì)檢索出來(lái)的數(shù)據(jù)可提供多種方式的操作:導(dǎo)出為Excel格式、pdf格式、或?qū)С鰹樗?bào)表以便打印等。)5 系統(tǒng)設(shè)定。(設(shè)置一些圖書(shū)館基本規(guī)則,如讀者類(lèi)別、圖書(shū)類(lèi)別、讀者借閱最大天數(shù)等,此外設(shè)定數(shù)據(jù)服務(wù)器信息也在這里。)6 幫助功能。(提供一個(gè)chm幫助文檔,幫助圖書(shū)館工作人員快速適應(yīng)本系統(tǒng),此外還提供在線問(wèn)題反饋,軟件更新提示等功能。)針對(duì)讀者設(shè)計(jì)的部分:由于讀者的多元性和位置不確定性,該部分采取基于B/S的方式實(shí)現(xiàn)。代碼使用ASP.NET編寫(xiě),利用ASP.NET的優(yōu)點(diǎn),可以自動(dòng)適應(yīng)多種客戶(hù)瀏覽器。截圖如下:讀者只需要有一臺(tái)聯(lián)網(wǎng)的計(jì)算機(jī)和一個(gè)常用WEB瀏覽器。就可以輕松的進(jìn)行圖書(shū)查詢(xún)、更改個(gè)人信息、向圖書(shū)館反饋信息等。該部分主要提供以下功能:1 登陸驗(yàn)證。(防止讀者信息被盜用。)2 圖書(shū)查詢(xún)。(一個(gè)綜合的圖書(shū)查詢(xún)系統(tǒng),可以方便的使讀者查到需要的書(shū)籍。)3 讀者個(gè)人信息查詢(xún)以及管理。(可以適當(dāng)?shù)母囊恍┳x者個(gè)人的資料,如email等,此外在這里還可以查到讀者當(dāng)前的、所有的借閱記錄等。)4 信息服務(wù)。(定期公布超期的讀者列表,以及新到的圖書(shū)等信息。)2.2系統(tǒng)創(chuàng)新部分以及一些特點(diǎn)1)首先本軟件是基于.net平臺(tái)構(gòu)建的,這是以前從未有過(guò)的。2)軟件很好的解決了一個(gè)關(guān)于時(shí)間沖突的問(wèn)題。時(shí)間沖突問(wèn)題闡述如下:圖書(shū)館管理信息系統(tǒng)是一個(gè)網(wǎng)絡(luò)版的系統(tǒng),其運(yùn)作方式是有一臺(tái)主數(shù)據(jù)服務(wù)器、還有若干個(gè)負(fù)責(zé)各項(xiàng)功能的客戶(hù)端。舉個(gè)例子:圖書(shū)館可能有若干臺(tái)客戶(hù)端電腦用于還書(shū)管理、還可能有若干臺(tái)用于借書(shū)管理、還可能有若干臺(tái)用于圖書(shū)、讀者信息維護(hù)等。因?yàn)槊颗_(tái)電腦的系統(tǒng)時(shí)間可能會(huì)發(fā)生改變,這就會(huì)造成數(shù)據(jù)錯(cuò)誤。比如張某于2月10日在負(fù)責(zé)借書(shū)的A號(hào)電腦上借了一本書(shū),可能A的系統(tǒng)時(shí)間被誤設(shè)定為2月5日。如果張某的最大借書(shū)時(shí)間為一個(gè)月,則他應(yīng)該還書(shū)的時(shí)間就被誤設(shè)定為3月5日。筆者在開(kāi)發(fā)過(guò)程中也參考了一些相關(guān)的圖書(shū)館軟件,發(fā)現(xiàn)有的系統(tǒng)根本沒(méi)有注意到這個(gè)問(wèn)題。有的是在軟件客戶(hù)端設(shè)定一個(gè)時(shí)間校準(zhǔn)的提示或者干脆就手工輸入時(shí)間。這樣無(wú)疑給操作人員增加了負(fù)擔(dān),而且校準(zhǔn)還不一定正確。在本系統(tǒng)中,所有的時(shí)間都是基于服務(wù)器時(shí)間的。即軟件中必要的與時(shí)間有關(guān)的操作。都采用標(biāo)準(zhǔn)的TSQL函數(shù)GETDATE()從數(shù)據(jù)服務(wù)器返回時(shí)間。這就避免了功能上的錯(cuò)誤,也避免了給操作人員帶來(lái)的不必要負(fù)擔(dān)。3)用ADO.NET的開(kāi)放式并發(fā)進(jìn)行并發(fā)控制在圖書(shū)館系統(tǒng)的使用過(guò)程中,可能同時(shí)有多臺(tái)客戶(hù)機(jī)在操作同一個(gè)數(shù)據(jù)行。比如負(fù)責(zé)修改圖書(shū)信息的A號(hào)電腦正在修改編號(hào)為XXX的書(shū)籍,而編號(hào)為B的電腦正試圖刪除編號(hào)為XXX的書(shū)籍。這樣做肯定會(huì)有一些沖突,這就要討論并發(fā)控制。當(dāng)多個(gè)用戶(hù)試圖同時(shí)修改數(shù)據(jù)時(shí),需要建立控制機(jī)制來(lái)防止一個(gè)用戶(hù)的修改對(duì)同時(shí)操作的其他用戶(hù)所作的修改產(chǎn)生不利的影響。處理這種情況的系統(tǒng)叫做“并發(fā)控制”。在以前的編程模型中,大多使用保守式并發(fā)控制,即在從獲取記錄直到記錄在數(shù)據(jù)庫(kù)中更新的這段時(shí)間內(nèi),該行對(duì)用戶(hù)不可用。ADO.NET的數(shù)據(jù)集DataSet是一個(gè)斷開(kāi)式的模型,不適合保守式并發(fā)。在我所編寫(xiě)的圖書(shū)館管理信息系統(tǒng)中,使用了開(kāi)放式并發(fā)控制(參見(jiàn)附錄中我翻譯的英文文章),即只有當(dāng)實(shí)際更新數(shù)據(jù)時(shí),該行才對(duì)其他用戶(hù)不可用。更新將在數(shù)據(jù)庫(kù)中檢查該行并確定是否進(jìn)行了任何更改。如果試圖更新已更改的記錄,則將導(dǎo)致并發(fā)沖突。4)全部數(shù)據(jù)層都基于存儲(chǔ)過(guò)程構(gòu)建使用存儲(chǔ)過(guò)程,可以減少網(wǎng)絡(luò)流量,提高程序的速度以及安全性。具體內(nèi)容請(qǐng)參見(jiàn)筆者文章里對(duì)存儲(chǔ)過(guò)程的研究討論。3 系統(tǒng)設(shè)計(jì)過(guò)程及原理闡述管理信息系統(tǒng)(以下簡(jiǎn)稱(chēng)MIS)服務(wù)于現(xiàn)代化的企事業(yè)管理,是提供企事業(yè)工作效率和經(jīng)濟(jì)效益的計(jì)算機(jī)網(wǎng)絡(luò)系統(tǒng)。管理信息系統(tǒng)涉及的因素非常多、非常復(fù)雜,開(kāi)發(fā)起來(lái)具有一定的難度。如果掌握了一套行之有效的開(kāi)發(fā)方法,以及把握好MIS開(kāi)發(fā)中的重點(diǎn),開(kāi)發(fā)中就可以大量的解約人力、財(cái)力等。我個(gè)人經(jīng)過(guò)大量的研究、實(shí)踐。認(rèn)為在MIS開(kāi)發(fā)中,首先數(shù)據(jù)庫(kù)技術(shù)是MIS開(kāi)發(fā)中的重要技術(shù)。數(shù)據(jù)庫(kù)開(kāi)發(fā)成敗直接影響到整個(gè)MIS的開(kāi)發(fā)。所以,構(gòu)架一個(gè)優(yōu)秀的MIS一定要有好的數(shù)據(jù)庫(kù)設(shè)計(jì)。本文討論的重點(diǎn)就是數(shù)據(jù)庫(kù)設(shè)計(jì)理論。主要是兩方面,一是基本的數(shù)據(jù)庫(kù)理論;二是.NET平臺(tái)上的ADO.NET數(shù)據(jù)訪問(wèn)技術(shù)。其次,在MIS開(kāi)發(fā)過(guò)程中,所使用的開(kāi)發(fā)工具和應(yīng)開(kāi)發(fā)應(yīng)用程序的種類(lèi)也很重要。這里就不能不提到Microsoft公司的.NET Framework平臺(tái)。.NET Framework 是一種新的計(jì)算平臺(tái),它簡(jiǎn)化了在高度分布式 Internet 環(huán)境中的應(yīng)用程序開(kāi)發(fā)。它提供一個(gè)一致的面向?qū)ο蟮木幊汰h(huán)境、提供一個(gè)將軟件部署和版本控制沖突最小化的代碼執(zhí)行環(huán)境等等非常優(yōu)秀的特點(diǎn)。在以后介紹開(kāi)發(fā)過(guò)程中將簡(jiǎn)單闡述。再次,界面的設(shè)計(jì)也是MIS的一個(gè)重點(diǎn)。界面一定要具有易學(xué)性及易使用性。在當(dāng)今流行的程序設(shè)計(jì)中,設(shè)計(jì)包含用戶(hù)界面的應(yīng)用程序時(shí)有兩種選擇:Windows 窗體和 Web 窗體。兩者在開(kāi)發(fā)環(huán)境中都具有完全的設(shè)計(jì)時(shí)支持,并且可以提供豐富的用戶(hù)界面和高級(jí)應(yīng)用程序功能以解決業(yè)務(wù)問(wèn)題。要根據(jù)應(yīng)用程序的具體功能來(lái)選擇到底開(kāi)發(fā)何種應(yīng)用程序。我所開(kāi)發(fā)的這個(gè)圖書(shū)館管理信息系統(tǒng)是這兩者的結(jié)合。在管理功能方面,我使用了傳統(tǒng)的WinForms技術(shù)。而在讀者使用方面的功能模塊,是用webForms開(kāi)發(fā)的。3.1 數(shù)據(jù)庫(kù)設(shè)計(jì)數(shù)據(jù)庫(kù)技術(shù)是20世紀(jì)60年代后期產(chǎn)生何發(fā)展起來(lái)的一項(xiàng)計(jì)算機(jī)數(shù)據(jù)管理技術(shù),現(xiàn)廣泛運(yùn)用與各種信息處理以及科學(xué)研究上。數(shù)據(jù)庫(kù)技術(shù)已經(jīng)成為當(dāng)今時(shí)代非常重要的技術(shù)。當(dāng)今流行的數(shù)據(jù)庫(kù)系統(tǒng)主要是以關(guān)系數(shù)據(jù)庫(kù)為代表的第二代數(shù)據(jù)庫(kù)系統(tǒng)。當(dāng)今流行的大型數(shù)據(jù)庫(kù)管理系統(tǒng)主要有SQL Server、Oracle、Sybase等。圖書(shū)館管理信息系統(tǒng)選用的是SQLserver2000數(shù)據(jù)庫(kù)管理系統(tǒng)。選擇它的原因有:SQLserver2000功能強(qiáng)大,能完整實(shí)現(xiàn)數(shù)據(jù)庫(kù)系統(tǒng)的所有功能。再者,我們選用的系統(tǒng)開(kāi)發(fā)平臺(tái)是微軟公司的.Net Framework平臺(tái),它很好的支持了其公司的數(shù)據(jù)庫(kù)產(chǎn)品SQLserver2000,而且為了加快數(shù)據(jù)處理速度,.NET Framework平臺(tái)中還專(zhuān)門(mén)有一個(gè)SQL Server數(shù)據(jù)提供程序(System.Data.SqlClient)。圖書(shū)館管理信息系統(tǒng)使用SQLserver2000數(shù)據(jù)庫(kù)管理系統(tǒng),最后設(shè)計(jì)的數(shù)據(jù)庫(kù)表如下:數(shù)據(jù)庫(kù)名稱(chēng)lib2004數(shù)據(jù)表有:管理員表(manager)名稱(chēng)類(lèi)型長(zhǎng)度說(shuō)明Man_idnvarchar50管理員賬號(hào)(主鍵)Man_pwdnvarchar12管理員密碼(not null)Man_purviewnvarchar10管理員權(quán)限(not null)圖書(shū)館信息表(libInfo)存放圖書(shū)館信息,只有一條記錄字段名稱(chēng)類(lèi)型長(zhǎng)度說(shuō)明NoInt4等于1Lib_namenvarchar50圖書(shū)館名稱(chēng)Lib_orgnvarchar50隸屬單位Lib_telnvarchar50電話號(hào)碼Lib_adrNvarchar100詳細(xì)地址圖書(shū)表(book) 字段名稱(chēng)類(lèi)型長(zhǎng)度說(shuō)明Book_idInt4圖書(shū)編號(hào)(自動(dòng)增長(zhǎng)) unique約束B(niǎo)ook_codenvarchar50條碼號(hào)(主鍵)Book_namenvarchar50圖書(shū)題名(not null)Book_pubnvarchar50出版社Book_isbnnvarchar50ISBN號(hào)Book_pubdatesmalldatetime4出版日期Book_authornvarchar50圖書(shū)作者Book_pageInt4圖書(shū)頁(yè)數(shù)Book_pricemoney8圖書(shū)價(jià)格Book_adddatesmalldatetime4入館日期Book_placenvarchar50存放位置(外部鍵- place. Book_place)Book_sortnvarchar50圖書(shū)分類(lèi)(外部鍵- booksort. Book_sort)Book_remarksnvarchar4000備注讀者表(au)字段名稱(chēng)字段類(lèi)型長(zhǎng)度說(shuō)明Au_serialint4讀者序號(hào)(自動(dòng)增長(zhǎng)) unique約束Au_idnvarchar50借書(shū)證號(hào)(主鍵)Au_namenvarchar50讀者姓名Au_sexnvarchar2讀者性別(只能為男或女)Au_sortnvarchar50讀者類(lèi)別(外部鍵- ausort.Au_sort)Au_adddatesmalldatetime4添加日期Au_adrnvarchar50讀者地址Au_passwordnvarchar12讀者密碼(12位)Au_emailnvarchar50讀者emailAu_remarksnvarchar4000讀者詳細(xì)資料借閱情況表(borrow)字段名稱(chēng)字段類(lèi)型長(zhǎng)度說(shuō)明Numberint4編號(hào)(自動(dòng)編號(hào) 主鍵)Au_idnvarchar50讀者編號(hào)(外部鍵-au.Au_id)book_codenvarchar50圖書(shū)編號(hào)(外部鍵-book.book_code)Borrow_datesmalldatetime4借閱日期(not null)Should_datesmalldatetime4應(yīng)歸還日期(not null)Return_datesmalldatetime4歸還日期forfeitmoney4罰款金額圖書(shū)存放位置(place)字段名稱(chēng)字段類(lèi)型字段長(zhǎng)度說(shuō)明Book_placenvarchar50存放位置(主鍵)Place_remarksnvarchar4000存放位置具體說(shuō)明圖書(shū)分類(lèi)(booksort)字段名稱(chēng)字段類(lèi)型字段長(zhǎng)度說(shuō)明Book_sortnvarchar50圖書(shū)類(lèi)型(主鍵)Sort_remarksnvarchar4000分類(lèi)具體說(shuō)明讀者分類(lèi)(ausort)字段名稱(chēng)字段類(lèi)型長(zhǎng)度說(shuō)明Au_sortnvarchar50讀者類(lèi)型(主鍵)Au_borrowdaysInt4最長(zhǎng)借閱時(shí)間Au_borrowbooksInt4最大借閱圖書(shū)數(shù)借書(shū)證掛失(aulost)字段名稱(chēng)字段類(lèi)型字段長(zhǎng)度說(shuō)明Lost_idnvarchar50掛失的讀者編號(hào) 主鍵Lost_datesmalldatetime4掛失時(shí)間圖書(shū)損壞賠償 (booklost)字段名稱(chēng)字段類(lèi)型字段長(zhǎng)度說(shuō)明NumberInt4編號(hào)(自動(dòng)增加,主鍵)Au_idnvarchar50丟失圖書(shū)的讀者編號(hào)Book_namenvarchar50圖書(shū)名稱(chēng)Book_isbnnvarchar50ISBNLost_moneyMoney8賠償金額數(shù)據(jù)庫(kù)表關(guān)系如下:圖3-1以下我們討論數(shù)據(jù)庫(kù)設(shè)計(jì)方法時(shí)均以圖書(shū)館管理信息系統(tǒng)數(shù)據(jù)庫(kù)(lib2004)為例.3.1.1數(shù)據(jù)庫(kù)設(shè)計(jì)重點(diǎn)(1) 數(shù)據(jù)規(guī)范化(2) 數(shù)據(jù)完整性(3) 數(shù)據(jù)庫(kù)的保護(hù)3.1.2規(guī)范化設(shè)計(jì)良好的數(shù)據(jù)規(guī)范可以減少數(shù)據(jù)冗余和一些插入異常和刪除異常。使關(guān)系模式盡量滿(mǎn)足3NF。規(guī)范化設(shè)計(jì)的內(nèi)容比較多,在這里就不一一闡述。請(qǐng)?jiān)敿?xì)體會(huì)lib2004數(shù)據(jù)庫(kù)中每個(gè)表的構(gòu)建。如在這方面想有進(jìn)一步研究的化,請(qǐng)參閱一些數(shù)據(jù)庫(kù)原理與技術(shù)方面的書(shū)籍。3.1.3數(shù)據(jù)庫(kù)完整性設(shè)計(jì)數(shù)據(jù)庫(kù)完整性共分三類(lèi)(1) 實(shí)體完整性規(guī)則 實(shí)體完整性規(guī)則是指主關(guān)鍵字的任何部分不能為空值比如在圖書(shū)表(book)中圖書(shū)表(book) 字段名稱(chēng)類(lèi)型長(zhǎng)度說(shuō)明Book_idInt4圖書(shū)編號(hào)(自動(dòng)增長(zhǎng)) unique約束B(niǎo)ook_codenvarchar50條碼號(hào)(主鍵)Book_namenvarchar50圖書(shū)題名(not null)條碼號(hào)(Book_code)是主關(guān)鍵字,其值就不能夠?yàn)榭?。主關(guān)鍵字不一定由一個(gè)字段組成,可以是多個(gè)字段的組合。(2)引用完整性,又稱(chēng)參照完整性,主要是描述存在關(guān)系間引用時(shí),不能引用不存在的元組. 圖3-2比如在圖書(shū)分類(lèi)表(booksort)與圖書(shū)表(book)之間的關(guān)系(如圖3-2),這是一個(gè)典型的一對(duì)多關(guān)系。關(guān)系的主鍵方是booksort表中的Book_sort(圖書(shū)類(lèi)別)字段,關(guān)系的外鍵方是book表中的Book_code(圖書(shū)類(lèi)別)字段。其引用完整性就是book表中的每一本書(shū)的圖書(shū)類(lèi)別Book_sort或者為空值,或等于圖書(shū)分類(lèi)表(booksort)中某行的Book_sort值。通俗的說(shuō)法就是圖書(shū)不能屬于一個(gè)沒(méi)有定義的類(lèi)別。(3)用戶(hù)自定義完整性這是一種比較有針對(duì)性的完整性,由具體環(huán)境決定。例如:在讀者表(au)中,讀者的性別字段(Au_sex)的值必須為男或女。這就是一條用戶(hù)自定義完整性規(guī)則。這類(lèi)完整性在SQLserver2000中的實(shí)現(xiàn)就是對(duì)相關(guān)表建一個(gè)check約束即可。比如在au表中建立一個(gè)CK_au約束,其約束表達(dá)式為(Au_sex = 男 or Au_sex = 女),就實(shí)現(xiàn)了值必須為男或女的用戶(hù)自定義完整規(guī)則。3.1.4數(shù)據(jù)庫(kù)的保護(hù)數(shù)據(jù)庫(kù)的保護(hù)主要內(nèi)容是數(shù)據(jù)庫(kù)的備份恢復(fù)、數(shù)據(jù)的事務(wù)性、以及如何進(jìn)行并發(fā)控制。其中備份和恢復(fù)容易理解,這里主要闡述其它兩項(xiàng)。(1) 事務(wù)是一組操作序列.但是從用戶(hù)的角度看來(lái),事務(wù)是一個(gè)不可分割的操作序列。事務(wù)中的操作要么都做,要么都不做.事務(wù)不應(yīng)該丟失,不應(yīng)該被分割完成。舉個(gè)例子,從某個(gè)銀行帳戶(hù)向另一個(gè)帳戶(hù)轉(zhuǎn)入資金。這個(gè)過(guò)程分兩步,首先將資金從一個(gè)帳戶(hù)扣除,然后轉(zhuǎn)入另一帳戶(hù)。這個(gè)過(guò)程中,如果資金扣除以后由于一些因素導(dǎo)致失敗。則資金就從一個(gè)帳戶(hù)上扣除但沒(méi)有轉(zhuǎn)到另一個(gè)帳戶(hù)上,就導(dǎo)致了兩個(gè)用戶(hù)都失去了這筆資金。如果將這兩步組成一個(gè)事務(wù),充分利用事務(wù)的共進(jìn)共退性就可以避免這一點(diǎn)。SQLserver2000事務(wù)語(yǔ)句主要包括BEGIN TRANSACTION(開(kāi)始一個(gè)事務(wù)),COMMIT TRANSACTION(提交事務(wù)),ROLLBACK TRANSACTION(回滾事務(wù))。(2) 數(shù)據(jù)庫(kù)并發(fā)控制:在圖書(shū)館管理信息系統(tǒng)中,同時(shí)可能有多個(gè)客戶(hù)端在進(jìn)行數(shù)據(jù)操作。當(dāng)多個(gè)用戶(hù)試圖同時(shí)修改數(shù)據(jù)時(shí),需要建立控制機(jī)制來(lái)防止一個(gè)用戶(hù)的修改對(duì)同時(shí)操作的其他用戶(hù)所作的修改產(chǎn)生不利的影響。處理這種情況的系統(tǒng)叫做“并發(fā)控制”。處理并發(fā)的技術(shù)主要是封鎖。ADO.NET數(shù)據(jù)結(jié)構(gòu)基于斷開(kāi)的數(shù)據(jù),使用開(kāi)放式并發(fā)。3.2 使用存儲(chǔ)過(guò)程在使用 SQL Server 2000 創(chuàng)建應(yīng)用程序時(shí),T-SQL 編程語(yǔ)言是應(yīng)用程序和 SQL Server 數(shù)據(jù)庫(kù)之間的主要編程接口。使用 T-SQL 程序時(shí),可用兩種方法存儲(chǔ)和執(zhí)行程序。可以在本地存儲(chǔ)程序,并創(chuàng)建向 SQL Server 發(fā)送命令并處理結(jié)果的應(yīng)用程序;也可以將程序在 SQL Server 中存儲(chǔ)為存儲(chǔ)過(guò)程,并創(chuàng)建執(zhí)行存儲(chǔ)過(guò)程并處理結(jié)果的應(yīng)用程序。 SQL Server 中的存儲(chǔ)過(guò)程與其它編程語(yǔ)言中的過(guò)程類(lèi)似,原因是存儲(chǔ)過(guò)程可以: 接受輸入?yún)?shù)并以輸出參數(shù)的形式將多個(gè)值返回至調(diào)用過(guò)程或批處理。 包含執(zhí)行數(shù)據(jù)庫(kù)操作(包括調(diào)用其它過(guò)程)的編程語(yǔ)句。 向調(diào)用過(guò)程或批處理返回狀態(tài)值,以表明成功或失敗(以及失敗原因)。 使用 SQLServer 中的存儲(chǔ)過(guò)程而不使用存儲(chǔ)在客戶(hù)計(jì)算機(jī)本地的 Transact-SQL 程序的優(yōu)點(diǎn)有: 允許模塊化程序設(shè)計(jì)。 只需創(chuàng)建過(guò)程一次并將其存儲(chǔ)在數(shù)據(jù)庫(kù)中,以后即可在程序中調(diào)用該過(guò)程任意次。存儲(chǔ)過(guò)程可由在數(shù)據(jù)庫(kù)編程方面有專(zhuān)長(zhǎng)的人員創(chuàng)建,并可獨(dú)立于程序源代碼而單獨(dú)修改。 允許更快執(zhí)行。 如果某操作需要大量 T-SQL 代碼或需重復(fù)執(zhí)行,存儲(chǔ)過(guò)程將比 T-SQL 批代碼的執(zhí)行要快。將在創(chuàng)建存儲(chǔ)過(guò)程時(shí)對(duì)其進(jìn)行分析和優(yōu)化,并可在首次執(zhí)行該過(guò)程后使用該過(guò)程的內(nèi)存中版本。每次運(yùn)行 T-SQL 語(yǔ)句時(shí),都要從客戶(hù)端重復(fù)發(fā)送,并且在SQL Server每次執(zhí)行這些語(yǔ)句時(shí),都要對(duì)其進(jìn)行編譯和優(yōu)化。 減少網(wǎng)絡(luò)流量。一個(gè)需要數(shù)百行 T-SQL 代碼的操作由一條執(zhí)行過(guò)程代碼的單獨(dú)語(yǔ)句就可實(shí)現(xiàn),而不需要在網(wǎng)絡(luò)中發(fā)送數(shù)百行代碼。 可作為安全機(jī)制使用。 即使對(duì)于沒(méi)有直接執(zhí)行存儲(chǔ)過(guò)程中語(yǔ)句的權(quán)限的用戶(hù),也可授予他們執(zhí)行該存儲(chǔ)過(guò)程的權(quán)限。此外在web編程方面,存儲(chǔ)過(guò)程在安全問(wèn)題上還可以防止動(dòng)態(tài)SQL漏洞攻擊,筆者經(jīng)過(guò)一些調(diào)查,發(fā)現(xiàn)現(xiàn)在很多網(wǎng)站都有動(dòng)態(tài)sql漏洞。只需要將密碼字段的值設(shè)定為( or 1=1)即可使用該網(wǎng)站的管理功能。我所開(kāi)發(fā)的圖書(shū)館管理信息系統(tǒng),無(wú)論在windows窗體編程和 Web編程上都使用存儲(chǔ)過(guò)程與數(shù)據(jù)庫(kù)交互。3.3 .NET Framework平臺(tái)概述圖書(shū)館管理信息系統(tǒng)的開(kāi)發(fā)是基于.NET Framework平臺(tái)的,所有在這里我們簡(jiǎn)單的介紹一下.NET Framework平臺(tái)以及它的一些重要的技術(shù).NET Framework 是一種新的計(jì)算平臺(tái),它簡(jiǎn)化了在高度分布式 Internet 環(huán)境中的應(yīng)用程序開(kāi)發(fā)。.NET Framework 旨在實(shí)現(xiàn)下列目標(biāo): 提供一個(gè)一致的面向?qū)ο蟮木幊汰h(huán)境,而無(wú)論對(duì)象代碼是在本地存儲(chǔ)和執(zhí)行,還是在本地執(zhí)行但在 Internet 上分布,或者是在遠(yuǎn)程執(zhí)行的。 提供一個(gè)將軟件部署和版本控制沖突最小化的代碼執(zhí)行環(huán)境。 提供一個(gè)保證代碼(包括由未知的或不完全受信任的第三方創(chuàng)建的代碼)安全執(zhí)行的代碼執(zhí)行環(huán)境。 提供一個(gè)可消除腳本環(huán)境或解釋環(huán)境的性能問(wèn)題的代碼執(zhí)行環(huán)境。 使開(kāi)發(fā)人員的經(jīng)驗(yàn)在面對(duì)類(lèi)型大不相同的應(yīng)用程序(如基于 Windows 的應(yīng)用程序和基于 Web 的應(yīng)用程序)時(shí)保持一致。 按照工業(yè)標(biāo)準(zhǔn)生成所有通信,以確保基于 .NET Framework 的代碼可與任何其他代碼集成。 圖3-3.NET Framework 具有兩個(gè)主要組件:公共語(yǔ)言運(yùn)行庫(kù)和 .NET Framework 類(lèi)庫(kù)。公共語(yǔ)言運(yùn)行庫(kù)是 .NET Framework 的基礎(chǔ)。您可以將運(yùn)行庫(kù)看作一個(gè)在執(zhí)行時(shí)管理代碼的代理,它提供核心服務(wù)(如內(nèi)存管理、線程管理和遠(yuǎn)程處理),而且還強(qiáng)制實(shí)施嚴(yán)格的類(lèi)型安全以及可確保安全性和可靠性的其他形式的代碼準(zhǔn)確性。事實(shí)上,代碼管理的概念是運(yùn)行庫(kù)的基本原則。以運(yùn)行庫(kù)為目標(biāo)的代碼稱(chēng)為托管代碼,而不以運(yùn)行庫(kù)為目標(biāo)的代碼稱(chēng)為非托管代碼。.NET Framework 的另一個(gè)主要組件是類(lèi)庫(kù),它是一個(gè)綜合性的面向?qū)ο蟮目芍赜妙?lèi)型集合,您可以使用它開(kāi)發(fā)多種應(yīng)用程序,這些應(yīng)用程序包括傳統(tǒng)的命令行或圖形用戶(hù)界面 (GUI) 應(yīng)用程序,也包括基于 ASP.NET 所提供的最新創(chuàng)新的應(yīng)用程序(如 Web 窗體和 XML Web services)。.NET Framework還具有多編程語(yǔ)言,現(xiàn)在可提供Visual Basic.NET、Visual C#.NET、Visual C+.NET、Visual J#.NET等。.NET Framework為幾種語(yǔ)言提供了統(tǒng)一的平臺(tái)和統(tǒng)一的編程模型。ADO.NET 是一組向 .NET 程序員公開(kāi)數(shù)據(jù)訪問(wèn)服務(wù)的類(lèi)。ADO.NET 為創(chuàng)建分布式數(shù)據(jù)共享應(yīng)用程序提供了一組豐富的組件。它提供了對(duì)關(guān)系數(shù)據(jù)、XML 和應(yīng)用程序數(shù)據(jù)的訪問(wèn),因此是 .NET Framework 中不可缺少的一部分。ADO.NET 支持多種開(kāi)發(fā)需求,包括創(chuàng)建由應(yīng)用程序、工具、語(yǔ)言或 Internet 瀏覽器使用的前端數(shù)據(jù)庫(kù)客戶(hù)端和中間層業(yè)務(wù)對(duì)象??墒褂?.NET Framework 開(kāi)發(fā)下列類(lèi)型的應(yīng)用程序和服務(wù): 控制臺(tái)應(yīng)用程序。 Windows GUI 應(yīng)用程序(Windows 窗體)。 ASP.NET 應(yīng)用程序。 XML Web services。 Windows 服務(wù)。 我的圖書(shū)館管理信息系統(tǒng)中包括Windows窗體和ASP.NET兩種應(yīng)用程序。3.4 ADO.NET技術(shù)探討3.4.1 ADO.NET概述ADO.NET 提供對(duì) Microsoft SQL Server 等數(shù)據(jù)源以及通過(guò) OLE DB 和 XML 公開(kāi)的數(shù)據(jù)源的一致訪問(wèn)。數(shù)據(jù)共享使用者應(yīng)用程序可以使用 ADO.NET 來(lái)連接到這些數(shù)據(jù)源,并檢索、操作和更新數(shù)據(jù)。ADO.NET 有效地從數(shù)據(jù)操作中將數(shù)據(jù)訪問(wèn)分解為多個(gè)可以單獨(dú)使用或一前一后使用的不連續(xù)組件。ADO.NET 包含用于連接到數(shù)據(jù)庫(kù)、執(zhí)行命令和檢索結(jié)果的 .NET Framework 數(shù)據(jù)提供程序。您可以直接處理檢索到的結(jié)果,或?qū)⑵浞湃?ADO.NET DataSet 對(duì)象,以便與來(lái)自多個(gè)源的數(shù)據(jù)或在層之間進(jìn)行遠(yuǎn)程處理的數(shù)據(jù)組合在一起,以特殊方式向用戶(hù)公開(kāi)。ADO.NET DataSet 對(duì)象也可以獨(dú)立于 .NET Framework 數(shù)據(jù)提供程序使用,以管理應(yīng)用程序本地的數(shù)據(jù)。3.4.2 ADO.NET訪問(wèn)數(shù)據(jù)的基本方法ADO.NET 結(jié)構(gòu)如下: 圖3-4從圖3-4可以看出,ADO.NET提供了兩種訪問(wèn)數(shù)據(jù)的基本方法:通過(guò)DataReader和DataSet。下面分別討論這兩種方法:1) DataReader: ADO.NET DataReader 從數(shù)據(jù)庫(kù)中檢索只讀、只進(jìn)的數(shù)據(jù)流。查詢(xún)結(jié)果在查詢(xún)執(zhí)行時(shí)返回,在并存儲(chǔ)在客戶(hù)端的網(wǎng)絡(luò)緩沖區(qū)中,直到您使用 DataReader 的 Read 方法對(duì)它們發(fā)出請(qǐng)求。使用 DataReader 可以提高應(yīng)用程序的性能,因?yàn)橐坏?shù)據(jù)可用,DataReader 方法就立即檢索該數(shù)據(jù),而不是等待返回查詢(xún)的全部結(jié)果;并且在默認(rèn)情況下,該方法一次只在內(nèi)存中存儲(chǔ)一行,從而降低了系統(tǒng)開(kāi)銷(xiāo)。DataReader 提供未緩沖的數(shù)據(jù)流,該數(shù)據(jù)流使過(guò)程邏輯可以有效地按順序處理從數(shù)據(jù)源中返回的結(jié)果。由于數(shù)據(jù)不在內(nèi)存中緩存,所以在檢索大量數(shù)據(jù)時(shí),DataReader 是一種適合的選擇。 2) DataSetADO.NET DataSet 是數(shù)據(jù)的一種內(nèi)存駐留表示形式,無(wú)論它包含的數(shù)據(jù)來(lái)自什么數(shù)據(jù)源,它都會(huì)提供一致的關(guān)系編程模型。一個(gè) DataSet 表示整個(gè)數(shù)據(jù)集,其中包含對(duì)數(shù)據(jù)進(jìn)行包含、排序和約束的表以及表間的關(guān)系。如圖3-4所示,一個(gè)DataSet可以包含多個(gè)DataTable,利用數(shù)據(jù)存儲(chǔ)的信息對(duì)它們進(jìn)行填充.可以在DataSet中包含DataRelation對(duì)象, DataRelation對(duì)象用來(lái)描述DataSet中表之間的關(guān)系。這個(gè)DataRelation對(duì)象的所包含的約束就是我們?cè)?.14中所講的數(shù)據(jù)庫(kù)完整性設(shè)計(jì)的內(nèi)容。總之DataSet最大的特點(diǎn)就是:不依賴(lài)于連續(xù)的活動(dòng)連接,其值是數(shù)據(jù)源的一個(gè)內(nèi)存副本。圖3-5圖3-5描述了用DataSet操作SQLserver2000的一般方法。用DataSet訪問(wèn)常規(guī)數(shù)據(jù)源的基本步驟是,先建立一個(gè)DataAdapter對(duì)象,如果只需只讀訪問(wèn)數(shù)據(jù),那么只要對(duì)DataAdapter指定一個(gè)SelectCommand即可。然后用DataAdapter填充DataSet。如果需要插入,更新或者刪除數(shù)據(jù),則需要在DataAdapter中相應(yīng)的指定InsertCommand、UpdateCommand以及DeleteCommand,最后調(diào)用DataAdapter的Update方法。3.4.3 使用ADO.NET操作SQLserver2000我的圖書(shū)館管理信息系統(tǒng)使用的是SQLserver2000數(shù)據(jù)庫(kù)。在闡述了一些ADO.NET的基本內(nèi)容后,我們來(lái)有針對(duì)性的講一下如何通過(guò)ADO.NET訪問(wèn)SQLserver2000數(shù)據(jù)庫(kù)。最新的.NET Framework1.1 包括 SQL Server .NET Framework 數(shù)據(jù)提供程序(用于 Microsoft SQL Server 7.0 版或更高版本)、OLE DB .NET Framework 數(shù)據(jù)提供程序和 ODBC .NET Framework 數(shù)據(jù)提供程序以及Oracle .NET Framework 數(shù)據(jù)提供程序。分別可以建立四種不同連接,其主要功能如下。(1) SqlConnection - 該對(duì)象管理與 SQL Server 7.0 版或更高版本的連接。通過(guò)忽略 OLE DB 層(還包括其他措施),對(duì)該對(duì)象進(jìn)行優(yōu)化以便將其用于 SQL Server 7.0 或更高版本。 (2) OleDbConnection - 該對(duì)象管理與可通過(guò) OLE DB 訪問(wèn)的任何數(shù)據(jù)存儲(chǔ)區(qū)的連接。 (3) OdbcConnection 該對(duì)象管理與通過(guò)使用連接字符串或 ODBC 數(shù)據(jù)源名稱(chēng) (DSN) 創(chuàng)建的數(shù)據(jù)源的連接。 (4) OracleConnection 該對(duì)象管理與 Oracle 數(shù)據(jù)庫(kù)的連接。 雖說(shuō)SQL Server .NET Framework 數(shù)據(jù)提供程序、OLE DB .NET Framework 數(shù)據(jù)提供程序和 ODBC .NET Framework 數(shù)據(jù)提供程序都能訪問(wèn)SQLserver數(shù)據(jù)庫(kù),但微軟公司推薦使用SQL Server .NET Framework 數(shù)據(jù)提供程序圖書(shū)館管理信息系統(tǒng)使用的就是SQL Server .NET Framework 數(shù)據(jù)提供程序。以下通過(guò)一些例子介紹圖書(shū)館管理系統(tǒng)中是如何通過(guò)SQL Server .NET Framework 數(shù)據(jù)提供程序與SQLserver2000數(shù)據(jù)庫(kù)進(jìn)行交互的。在.net中使用SQL Server .NET Framework 數(shù)據(jù)提供程序,首先要導(dǎo)入System.Data.SqlClient命名空間。我們舉例說(shuō)明ADO.NET與SQLserver2000數(shù)據(jù)庫(kù)交互的兩種常見(jiàn)方式:A.直接使用數(shù)據(jù)命令;B.使用數(shù)據(jù)集。A. 使用數(shù)據(jù)命令與數(shù)據(jù)庫(kù)交互要在數(shù)據(jù)庫(kù)中執(zhí)行操作,應(yīng)執(zhí)行 SQL 語(yǔ)句或存儲(chǔ)過(guò)程(它包括 SQL 語(yǔ)句)。您使用 SQL 語(yǔ)句或存儲(chǔ)過(guò)程讀寫(xiě)行并執(zhí)行聚合函數(shù),例如添加或求平均值。您還使用 SQL 語(yǔ)句或存儲(chǔ)過(guò)程創(chuàng)建或修改表或列、執(zhí)行事務(wù)等。以下是一個(gè)圖書(shū)館管理系統(tǒng)中一個(gè)驗(yàn)證登陸的函數(shù)Public Function validateLogin(ByVal uid As String, ByVal pwd As String) As Boolean Dim IsCorrect As Boolean = False Dim cnmy As New SqlConnection(“server=(local);database=lib2004;uid=sa;pwd=”) Dim cmd As New SqlCommand With cmd .Connection = cnmy .CommandType = CommandType.Text .CommandText = select count(*) from manager where Man_id=Man_id and Man_pwd=Man_pwd End With Dim mMan_id As New SqlParameter(Man_id, SqlDbType.NVarChar, 50) Dim mMan_pwd As New SqlParameter(Man_pwd, SqlDbType.NVarChar, 12) With cmd.Parameters .Add(mMan_id) .Add(mMan_pwd) End With mMan_id.Value = uid mMan_pwd.Value = pwd Try cnmy.Open() If cmd.ExecuteScalar = 1 Then IsCorrect = True End If Catch ex As Exception MessageBox.Show(登陸驗(yàn)證時(shí)數(shù)據(jù)庫(kù)發(fā)生錯(cuò)誤 + vbCrLf + ex.Message, _ error, MessageBoxButtons.OK, MessageBoxIcon.Stop) Return False Finally cnmy.Close() If Not cnmy Is Nothing Then cnmy.Dispose() End If End Try Return IsCorrect End Function現(xiàn)在對(duì)這個(gè)函數(shù)按步驟詳細(xì)說(shuō)明。該例子體現(xiàn)了如何執(zhí)行sql語(yǔ)句。該實(shí)例用到了System.Data.SqlClient命名空間中兩個(gè)重要的對(duì)象:1.連接對(duì)象SqlConnection;2.sql命令對(duì)象SqlCommand。SqlConnection 對(duì)象表示與 SQL Server 數(shù)據(jù)源的一個(gè)唯一的會(huì)話。對(duì)于客戶(hù)端/服務(wù)器數(shù)據(jù)庫(kù)系統(tǒng),它相當(dāng)于到服務(wù)器的網(wǎng)絡(luò)連接。其重要屬性如下表:ConnectionString 獲取或設(shè)置用于打開(kāi) SQL Server 數(shù)據(jù)庫(kù)的字符串。ConnectionString格式如下:使用sql驗(yàn)證方式:(server服務(wù)器名稱(chēng);database數(shù)據(jù)庫(kù)名稱(chēng);uid用戶(hù)名;pwd密碼)使用windows集成驗(yàn)證(server服務(wù)器名稱(chēng);database數(shù)據(jù)庫(kù)名稱(chēng);Integrated Security=SSPI)SqlCommand對(duì)象表示要對(duì) SQL Server 數(shù)據(jù)庫(kù)執(zhí)行的一個(gè) T-SQL 語(yǔ)句或存儲(chǔ)過(guò)程。其重要屬性如下:CommandText獲取或設(shè)置要對(duì)數(shù)據(jù)源執(zhí)行的 Tran
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年七年級(jí)第一學(xué)期志愿服務(wù)計(jì)劃
- 大班幼小銜接期的營(yíng)養(yǎng)與健康計(jì)劃
- 八年級(jí)道德與法治知識(shí)拓展計(jì)劃
- 湘教版小學(xué)二年級(jí)上冊(cè)科學(xué)家長(zhǎng)參與計(jì)劃
- 2025年校園心理輔導(dǎo)與支持計(jì)劃
- 2024-2025學(xué)年人教部編版八年級(jí)道德與法治下冊(cè)評(píng)估計(jì)劃
- 2025幼兒園語(yǔ)言教育提升計(jì)劃
- 人教版五年級(jí)下冊(cè)綜合素質(zhì)評(píng)價(jià)計(jì)劃
- IT行業(yè)技術(shù)人員在線進(jìn)修計(jì)劃
- 一年級(jí)下學(xué)期校園運(yùn)動(dòng)會(huì)計(jì)劃
- 測(cè)溫儀及測(cè)振儀的原理及使用 課件
- 船舶操縱與避碰智慧樹(shù)知到期末考試答案2024年
- 食品加工肉類(lèi)行業(yè)食品安全培訓(xùn)
- 公司酒后駕車(chē)管理制度
- 重慶中煙考試題庫(kù)2024
- 臨終關(guān)懷課件
- 文印設(shè)備維修維護(hù)服務(wù)投標(biāo)方案(技術(shù)標(biāo))
- 醫(yī)院行政部主任年度工作總結(jié)
- 悅納自我向陽(yáng)而生心理健康教育主題班會(huì)課件
- 保安服務(wù)月度考核表
- 手動(dòng)液壓叉車(chē)安全技術(shù)培訓(xùn)
評(píng)論
0/150
提交評(píng)論