




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、重慶IT論壇 第11章 數(shù)據(jù)庫應(yīng)用系統(tǒng)的開發(fā)11.1 軟件開發(fā)周期及各階段的任務(wù) 11.2 數(shù)據(jù)庫應(yīng)用系統(tǒng)11.3 創(chuàng)建應(yīng)用系統(tǒng)數(shù)據(jù)庫11.4 VB/SQL Server學(xué)生成績(jī)管理系統(tǒng) 11.5 ASP.NET(C#)/SQL Server學(xué)生成績(jī)管理系統(tǒng) 海量海量IT技術(shù)教程下載技術(shù)教程下載 重慶IT論壇 11.1 軟件開發(fā)周期及各階段的任務(wù)11.1.1 軟件定義開發(fā)一個(gè)數(shù)據(jù)庫應(yīng)用系統(tǒng)首先要進(jìn)行用戶的需求分析,確定軟件系統(tǒng)的功能、性能需求,搞清楚“做什么”。首先,進(jìn)行軟件系統(tǒng)的可行性研究。其次,進(jìn)行軟件需求分析。軟件需求分析的目標(biāo)是深入描述待開發(fā)數(shù)據(jù)庫應(yīng)用軟件的功能、性能需求、數(shù)據(jù)的安全與
2、完整性約束等方面的需求,及與其他系統(tǒng)元素的接口。1需求分析的主要任務(wù) 通過調(diào)查軟件使用部門的業(yè)務(wù)活動(dòng),明確用戶對(duì)軟件系統(tǒng)的功能需求,確定待開發(fā)軟件系統(tǒng)的功能。 綜合分析用戶的信息流程及信息需求,確定將存儲(chǔ)哪些數(shù)據(jù),及這些數(shù)據(jù)的源和目標(biāo)。 分析用戶對(duì)數(shù)據(jù)的安全性和完整性要求,確定系統(tǒng)的性能需求和運(yùn)行環(huán)境約束。 構(gòu)建軟件系統(tǒng)的邏輯模型,為軟件要素制定驗(yàn)收準(zhǔn)則,以及軟件驗(yàn)收測(cè)試計(jì)劃。對(duì)于大型、復(fù)雜軟件系統(tǒng)的主要功能、接口、人機(jī)接口等,可能還要進(jìn)行模擬或建造原型,以便向用戶和開發(fā)方展示待開發(fā)軟件系統(tǒng)的主要特征,軟件需求分析過程有時(shí)需要反復(fù)多次,最終才能使用戶與開發(fā)者達(dá)成共識(shí)。重慶IT論壇 11.1.1
3、 軟件定義2軟件需求信息獲取 考察現(xiàn)場(chǎng)或跟班作業(yè),了解現(xiàn)場(chǎng)業(yè)務(wù)流程。 進(jìn)行市場(chǎng)調(diào)查。 訪問用戶和應(yīng)用領(lǐng)域的專家。 查閱與原應(yīng)用系統(tǒng)或應(yīng)用環(huán)境有關(guān)的記錄。3用戶需求的描述方法描述用戶需求傳統(tǒng)的方法大多采用結(jié)構(gòu)化的分析方法(Structured Analysis,SA),即按應(yīng)用部門的組織結(jié)構(gòu),對(duì)系統(tǒng)內(nèi)部的數(shù)據(jù)流進(jìn)行分析,逐層細(xì)化,用數(shù)據(jù)流程圖(Data Flow Diagram,DFD)描述數(shù)據(jù)在系統(tǒng)中的流動(dòng)和處理,并建立相應(yīng)的數(shù)據(jù)字典(Data Dictionary,DD)。 數(shù)據(jù)流程圖使用的主要符號(hào)如圖11.1所示。圖11.1 數(shù)據(jù)流程圖使用的主要符號(hào)重慶IT論壇 11.1.1 軟件定義圖1
4、1.2為學(xué)生選課系統(tǒng)需求分析頂層數(shù)據(jù)流程圖,圖11.3為第二層的數(shù)據(jù)流程圖,圖11.4是對(duì)圖11.3中的“查詢”進(jìn)一步細(xì)化的數(shù)據(jù)流程圖。在需求分析過程中數(shù)據(jù)流程圖的細(xì)化程度取決于后繼代碼實(shí)現(xiàn)的需要,有興趣的同學(xué)可對(duì)圖11.3中的“編輯”和“統(tǒng)計(jì)”進(jìn)一步細(xì)化。圖11.2 學(xué)生選課系統(tǒng)需求分析的頂層數(shù)據(jù)流程圖重慶IT論壇 11.1.1 軟件定義 數(shù)據(jù)字典的主要內(nèi)容。 數(shù)據(jù)項(xiàng):包括數(shù)據(jù)項(xiàng)名、類型、長(zhǎng)度等。 數(shù)據(jù)結(jié)構(gòu):反映了數(shù)據(jù)之間的組合關(guān)系,包括數(shù)據(jù)結(jié)構(gòu)名、含義說明及定義。 數(shù)據(jù)流:數(shù)據(jù)流是數(shù)據(jù)在系統(tǒng)內(nèi)傳輸?shù)穆窂?,包括?shù)據(jù)流名、說明、數(shù)據(jù)的源和目標(biāo)等。 數(shù)據(jù)存儲(chǔ):是數(shù)據(jù)停留或保存的地方,包括數(shù)據(jù)存儲(chǔ)
5、名、說明等。 處理過程:主要包括:過程名、輸入?yún)?shù)、輸出參數(shù)、說明等。圖11.3 學(xué)生選課系統(tǒng)需求分析的第二層數(shù)據(jù)流程圖重慶IT論壇 11.1.1 軟件定義圖11.4 對(duì)圖11.3中的“查詢”進(jìn)一步細(xì)化的數(shù)據(jù)流程圖重慶IT論壇 11.1.2 軟件開發(fā)1概要設(shè)計(jì)概要設(shè)計(jì)又稱為總體設(shè)計(jì),是對(duì)需求規(guī)格說明中提供的軟件系統(tǒng)邏輯模型進(jìn)一步分解,其完成的主要工作有: 數(shù)據(jù)建模。將應(yīng)用需求中的數(shù)據(jù)對(duì)象、對(duì)象的屬性、對(duì)象之間的聯(lián)系抽象為信息世界的概念模型,并對(duì)其進(jìn)行描述,例如,用E-R模型描述學(xué)生管理系統(tǒng)的概念模型。 在軟件的功能設(shè)計(jì)方面,建立軟件系統(tǒng)的總體結(jié)構(gòu)和各子系統(tǒng)之間、各模塊之間的關(guān)系,定義各子系統(tǒng)接
6、口和各功能模塊的接口。 生成概要設(shè)計(jì)規(guī)格說明和組裝測(cè)試計(jì)劃。 評(píng)審概要設(shè)計(jì)的質(zhì)量,重點(diǎn)評(píng)審概要設(shè)計(jì)是否支持軟件需求規(guī)格說明。 進(jìn)一步充實(shí)數(shù)據(jù)字典。概要設(shè)計(jì)的目標(biāo):總體結(jié)構(gòu)具有層次性,盡量降低模塊接口的復(fù)雜度。進(jìn)行概要設(shè)計(jì)時(shí),可提出多種設(shè)計(jì)方案,并在功能、性能、成本、進(jìn)度等方面對(duì)各種方案進(jìn)行比較,選出一種“最佳方案”。概要設(shè)計(jì)的階段性成果:概要設(shè)計(jì)說明書、數(shù)據(jù)庫的概念模型設(shè)計(jì)、擴(kuò)充后的數(shù)據(jù)字典、組裝測(cè)試計(jì)劃等文檔。重慶IT論壇 11.1.2 軟件開發(fā)2詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì)又稱為過程設(shè)計(jì)。通過對(duì)概要設(shè)計(jì)的模型表示進(jìn)一步細(xì)化和轉(zhuǎn)換,得到軟件詳細(xì)的數(shù)據(jù)結(jié)構(gòu)和算法。詳細(xì)設(shè)計(jì)的主要內(nèi)容如下: 對(duì)于數(shù)據(jù)建模,根
7、據(jù)概念模型設(shè)計(jì)數(shù)據(jù)庫的邏輯模型,根據(jù)系統(tǒng)對(duì)數(shù)據(jù)安全性和完整性的要求,確定數(shù)據(jù)的完整性和安全性規(guī)則及實(shí)現(xiàn)策略; 在功能設(shè)計(jì)方面采用結(jié)構(gòu)化的設(shè)計(jì)方法對(duì)概要設(shè)計(jì)產(chǎn)生的功能模塊進(jìn)一步細(xì)化,形成可編程的結(jié)構(gòu)模塊,并設(shè)計(jì)各模塊的單元測(cè)試計(jì)劃。詳細(xì)設(shè)計(jì)的階段性成果:詳細(xì)設(shè)計(jì)規(guī)格說明書、單元測(cè)試計(jì)劃等設(shè)計(jì)文檔。3編碼與單元測(cè)試主要任務(wù)包括如下內(nèi)容: 基于某一數(shù)據(jù)庫管理系統(tǒng)實(shí)現(xiàn)數(shù)據(jù)庫的邏輯模型,如創(chuàng)建數(shù)據(jù)庫、表等,按照數(shù)據(jù)的完整性和安全性實(shí)現(xiàn)策略,實(shí)現(xiàn)數(shù)據(jù)的完整性和安全性,并進(jìn)行相應(yīng)的測(cè)試工作,同時(shí)做好測(cè)試記錄; 選定某一程序設(shè)計(jì)語言實(shí)現(xiàn)各功能模塊,并進(jìn)行相應(yīng)的測(cè)試。一般來說,對(duì)軟件系統(tǒng)各功能模塊所采用的分析方
8、法、設(shè)計(jì)方法、編程方法,以及所選用的程序設(shè)計(jì)語言應(yīng)盡可能保持一致。重慶IT論壇 11.1.2 軟件開發(fā)編碼階段應(yīng)注意遵循編程標(biāo)準(zhǔn)、養(yǎng)成良好的編程風(fēng)格,以便編寫出正確的便于理解、調(diào)試和維護(hù)的程序模塊。編碼與單元測(cè)試的階段性成果:通過單元測(cè)試的各功能模塊的集合、詳細(xì)的單元測(cè)試報(bào)告等文檔。4組裝測(cè)試根據(jù)概要設(shè)計(jì)提供的軟件結(jié)構(gòu)、各功能模塊的說明和組裝測(cè)試計(jì)劃,將數(shù)據(jù)加載到數(shù)據(jù)庫中,對(duì)經(jīng)過單元測(cè)試檢驗(yàn)的模塊按照某種選定的策略逐步進(jìn)行組裝和測(cè)試,檢驗(yàn)應(yīng)用系統(tǒng)在正確性、功能完備性、容錯(cuò)能力、性能指標(biāo)等方面是否滿足設(shè)計(jì)要求。階段性成果: 滿足概要設(shè)計(jì)要求的詳細(xì)設(shè)計(jì)報(bào)告; 可運(yùn)行的軟件系統(tǒng)和源程序清單; 組裝測(cè)
9、試報(bào)告等文檔。5驗(yàn)收測(cè)試又稱為確認(rèn)調(diào)試,主要任務(wù):按照驗(yàn)收測(cè)試計(jì)劃對(duì)軟件系統(tǒng)進(jìn)行測(cè)試,檢驗(yàn)其是否達(dá)到了需求規(guī)格說明中定義的全部功能和性能等方面的需求。階段性成果:驗(yàn)收測(cè)試報(bào)告、項(xiàng)目開發(fā)總結(jié)報(bào)告、軟件系統(tǒng)、源程序清單、用戶操作手冊(cè)等文檔資料。最后,由專家、用戶負(fù)責(zé)人、軟件開發(fā)和管理人員組成軟件評(píng)審小組對(duì)軟件驗(yàn)收測(cè)試報(bào)告、測(cè)試結(jié)果和應(yīng)用軟件系統(tǒng)進(jìn)行評(píng)審,通過后,軟件產(chǎn)品正式通過驗(yàn)收,可以交付用戶使用。重慶IT論壇 11.1.3 軟件的使用與維護(hù)軟件開發(fā)工作結(jié)束后,軟件系統(tǒng)即可投入運(yùn)行,但由于軟件的應(yīng)用環(huán)境不斷變化,因此,在軟件的整個(gè)運(yùn)行期內(nèi),有必要對(duì)應(yīng)用系統(tǒng)有計(jì)劃地維護(hù),使軟件系統(tǒng)持久地滿足用戶的
10、需求。軟件使用和維護(hù)階段的主要工作內(nèi)容如下: 在軟件使用過程中,及時(shí)收集被發(fā)現(xiàn)的軟件錯(cuò)誤,并撰寫“軟件問題報(bào)告”,以便改正軟件系統(tǒng)中潛藏的錯(cuò)誤; 根據(jù)數(shù)據(jù)庫維護(hù)計(jì)劃,對(duì)數(shù)據(jù)庫性能進(jìn)行監(jiān)測(cè),當(dāng)數(shù)據(jù)庫出現(xiàn)故障時(shí),對(duì)數(shù)據(jù)庫進(jìn)行轉(zhuǎn)儲(chǔ)和恢復(fù),并做相應(yīng)的維護(hù)記錄; 根據(jù)軟件系統(tǒng)恢復(fù)計(jì)劃,當(dāng)軟件系統(tǒng)出現(xiàn)故障時(shí),進(jìn)行軟件系統(tǒng)恢復(fù),并做相應(yīng)的維護(hù)記錄。重慶IT論壇 11.2 數(shù)據(jù)庫應(yīng)用系統(tǒng)11.2.1 數(shù)據(jù)庫的連接方式客戶端應(yīng)用程序或應(yīng)用服務(wù)器向數(shù)據(jù)庫服務(wù)器請(qǐng)求服務(wù)時(shí),首先必須和數(shù)據(jù)庫建立連接。雖然RDBMS都遵循SQL標(biāo)準(zhǔn),但不同廠家開發(fā)的數(shù)據(jù)庫管理系統(tǒng)有差異,存在適應(yīng)性和可移植性等方面的問題,因此,人們開始
11、研究和開發(fā)連接不同RDBMS的通用方法、技術(shù)和軟件。1ODBC數(shù)據(jù)庫接口ODBC即開放式數(shù)據(jù)庫互連(Open Database Connectivity),是微軟公司推出的一種實(shí)現(xiàn)應(yīng)用程序和關(guān)系數(shù)據(jù)庫之間通信的接口標(biāo)準(zhǔn)。符合標(biāo)準(zhǔn)的數(shù)據(jù)庫就可以通過SQL語言編寫的命令對(duì)數(shù)據(jù)庫進(jìn)行操作,但只針對(duì)關(guān)系數(shù)據(jù)庫。目前所有的關(guān)系數(shù)據(jù)庫都符合該標(biāo)準(zhǔn)(如SQL Server,Oracle,Access,Excel等)。ODBC本質(zhì)上是一組數(shù)據(jù)庫訪問API(應(yīng)用程序編程接口),由一組函數(shù)調(diào)用組成,核心是SQL語句,其結(jié)構(gòu)如圖11.5所示。重慶IT論壇 11.2.1 數(shù)據(jù)庫的連接方式圖11.5 ODBC數(shù)據(jù)庫接口
12、重慶IT論壇 11.2.1 數(shù)據(jù)庫的連接方式2OLE DB數(shù)據(jù)庫接口OLE DB即數(shù)據(jù)庫鏈接和嵌入對(duì)象(Object Linking and Embedding DataBase)。OLE DB是微軟提出的基于COM思想且面向?qū)ο蟮囊环N技術(shù)標(biāo)準(zhǔn),目的是提供一種統(tǒng)一的數(shù)據(jù)訪問接口訪問各種數(shù)據(jù)源,這里所說的“數(shù)據(jù)”除了標(biāo)準(zhǔn)的關(guān)系型數(shù)據(jù)庫中的數(shù)據(jù)之外,還包括郵件數(shù)據(jù)、Web上的文本或圖形、目錄服務(wù)(Directory Services),以及主機(jī)系統(tǒng)中的文件和地理數(shù)據(jù)和自定義業(yè)務(wù)對(duì)象等。OLE DB標(biāo)準(zhǔn)的核心內(nèi)容就是提供一種相同的訪問接口,使得數(shù)據(jù)的使用者(應(yīng)用程序)可以使用同樣的方法訪問各種數(shù)據(jù),
13、而不用考慮數(shù)據(jù)的具體存儲(chǔ)地點(diǎn)、格式或類型,其結(jié)構(gòu)圖如圖11.6所示。圖11.6 OLE DB數(shù)據(jù)庫接口重慶IT論壇 11.2.1 數(shù)據(jù)庫的連接方式3ADO數(shù)據(jù)庫接口ADO(ActiveX Data Objects)是微軟公司開發(fā)的基于COM的數(shù)據(jù)庫應(yīng)用程序接口,通過ADO連接數(shù)據(jù)庫,可以靈活地操作數(shù)據(jù)庫中的數(shù)據(jù)。圖11.7展示了應(yīng)用程序通過ADO訪問SQL Server數(shù)據(jù)庫接口。從圖中可看出,使用ADO訪問SQL Server數(shù)據(jù)庫有兩種途徑:一種是通過ODBC驅(qū)動(dòng)程序,另一種是通過SQL Server專用的OLE DB Provider,后者有更高的訪問效率。圖11.7 ADO訪問SQL
14、Server的接口重慶IT論壇 11.2.1 數(shù)據(jù)庫的連接方式4ADO.NET數(shù)據(jù)庫接口ASP.NET使用ADO.NET數(shù)據(jù)模型。該模型從ADO發(fā)展而來,但它不只是對(duì)ADO的改進(jìn),而是采用了一種全新的技術(shù)。主要表現(xiàn)在以下3個(gè)方面: ADO.NET不是采用ActiveX技術(shù),而是與.NET框架緊密結(jié)合的產(chǎn)物。 ADO.NET包含對(duì)XML標(biāo)準(zhǔn)的完全支持,這對(duì)于跨平臺(tái)交換數(shù)據(jù)具有重要的意義。 ADO.NET既能在與數(shù)據(jù)源連接的環(huán)境下工作,又能在斷開與數(shù)據(jù)源連接的條件下工作。ADO.NET 提供了面向?qū)ο蟮臄?shù)據(jù)庫視圖,并且在ADO.NET對(duì)象中封裝了許多數(shù)據(jù)庫屬性和關(guān)系。最重要的是,ADO.NET 通
15、過很多方式封裝和隱藏了很多數(shù)據(jù)庫訪問的細(xì)節(jié)??梢酝耆恢缹?duì)象在與 ADO.NET 對(duì)象交互,也不用擔(dān)心數(shù)據(jù)移動(dòng)到另外一個(gè)數(shù)據(jù)庫,或者從另一個(gè)數(shù)據(jù)庫獲得數(shù)據(jù)的細(xì)節(jié)問題。ADO.NET架構(gòu)如圖11.8所示。數(shù)據(jù)集是實(shí)現(xiàn)ADO.NET斷開式連接的核心,從數(shù)據(jù)源讀取的數(shù)據(jù)先緩存到數(shù)據(jù)集中,然后被程序或控件調(diào)用。數(shù)據(jù)源可以是數(shù)據(jù)庫或者XML數(shù)據(jù)。重慶IT論壇 11.2.1 數(shù)據(jù)庫的連接方式數(shù)據(jù)提供器用于建立數(shù)據(jù)源與數(shù)據(jù)集之間的聯(lián)系,它能連接各種類型的數(shù)據(jù),并能按要求將數(shù)據(jù)源中的數(shù)據(jù)提供給數(shù)據(jù)集,或者從數(shù)據(jù)集向數(shù)據(jù)源返回編輯后的數(shù)據(jù)。圖11.8 ADO.NET架構(gòu)總覽重慶IT論壇 11.2.1 數(shù)據(jù)庫的
16、連接方式5JDBC數(shù)據(jù)庫接口JDBC(Java Data Base Connectivity)是Java Soft公司開發(fā)的,一組Java語言編寫的用于數(shù)據(jù)庫連接和操作的類和接口,可為多種關(guān)系數(shù)據(jù)庫提供統(tǒng)一的訪問方式。通過JDBC完成對(duì)數(shù)據(jù)庫的訪問包括4個(gè)主要組件:Java應(yīng)用程序、JDBC驅(qū)動(dòng)管理器、驅(qū)動(dòng)器和數(shù)據(jù)源。在JDBC API中有兩層接口:應(yīng)用程序?qū)雍万?qū)動(dòng)程序?qū)?,前者使開發(fā)人員可以通過SQL調(diào)用數(shù)據(jù)庫和取得結(jié)果,后者處理與具體數(shù)據(jù)庫驅(qū)動(dòng)程序的所有通信。使用JDBC接口對(duì)數(shù)據(jù)庫操作有如下優(yōu)點(diǎn): .JDBC API與ODBC十分相似,有利于用戶理解; 使編程人員從復(fù)雜的驅(qū)動(dòng)器調(diào)用命令和函
17、數(shù)中解脫出來,而致力于應(yīng)用程序功能的實(shí)現(xiàn); JDBC支持不同的關(guān)系數(shù)據(jù)庫,增強(qiáng)了程序的可移植性。使用JDBC的主要缺點(diǎn):訪問數(shù)據(jù)記錄的速度會(huì)受到一定影響,此外,由于JDBC結(jié)構(gòu)中包含了不同廠家的產(chǎn)品,這給數(shù)據(jù)源的更改帶來了較大麻煩。6數(shù)據(jù)庫連接池技術(shù)對(duì)于網(wǎng)絡(luò)環(huán)境下的數(shù)據(jù)庫應(yīng)用,由于用戶眾多,使用傳統(tǒng)的JDBC方式進(jìn)行數(shù)據(jù)庫連接,系統(tǒng)資源開銷過大成為制約大型企業(yè)級(jí)應(yīng)用效率的瓶頸,采用數(shù)據(jù)庫連接池技術(shù)對(duì)數(shù)據(jù)庫連接進(jìn)行管理,可以大大提高系統(tǒng)的效率和穩(wěn)定性。重慶IT論壇 11.2.2 客戶/服務(wù)器(C/S)模式對(duì)于一般的數(shù)據(jù)庫應(yīng)用系統(tǒng),除了使用數(shù)據(jù)庫管理系統(tǒng)外,需要設(shè)計(jì)適合普通人員操作數(shù)據(jù)庫的應(yīng)用程序
18、。目前,流行的開發(fā)數(shù)據(jù)庫應(yīng)用程序的工具主要包括Visual BASIC,Visual C+,Visual FoxPro,Delphi,PowerBuilder等。數(shù)據(jù)庫應(yīng)用程序與數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)之間的關(guān)系如圖11.9所示。圖11.9 數(shù)據(jù)庫應(yīng)用程序與數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)之間的關(guān)系 重慶IT論壇 11.2.3 瀏覽器/服務(wù)器(B/S)模式基于Web的數(shù)據(jù)庫應(yīng)用采用瀏覽器/服務(wù)器模式,也稱B/S結(jié)構(gòu)。第一層為瀏覽器,第二層為Web服務(wù)器,第三層為數(shù)據(jù)庫服務(wù)器。瀏覽器是用戶輸入數(shù)據(jù)和顯示結(jié)果的交互接口,用戶在瀏覽器窗體中輸入數(shù)據(jù),然后將窗體中的數(shù)據(jù)提交并發(fā)送到Web服務(wù)器,Web服務(wù)器應(yīng)用程
19、序接受并處理用戶的數(shù)據(jù),通過數(shù)據(jù)庫服務(wù)器,從數(shù)據(jù)庫中查詢需要的數(shù)據(jù)(或把數(shù)據(jù)錄入數(shù)據(jù)庫)送Web服務(wù)器,Web服務(wù)器把返回的結(jié)果插入HTML頁面,傳送到客戶端,在瀏覽器中顯示出來,如圖1.10所示。圖11.10 瀏覽器/服務(wù)器結(jié)構(gòu)重慶IT論壇 11.3 創(chuàng)建應(yīng)用系統(tǒng)數(shù)據(jù)庫11.3.1 學(xué)生成績(jī)數(shù)據(jù)庫表結(jié)構(gòu)學(xué)生成績(jī)數(shù)據(jù)庫XSCJ使用的表結(jié)構(gòu)如下。1學(xué)生信息表(XS)學(xué)生信息表(XS)存放學(xué)生的基本信息。 學(xué)生的基本信息表結(jié)構(gòu)字段說明見表11.1。表11.1 學(xué)生的基本信息表字段說明字 段 名XHXMXBZYCSSJZXFBZZP項(xiàng)目學(xué)號(hào)姓名性別專業(yè)名出生時(shí)間總學(xué)分備注照片2課程信息表(KC)課程
20、信息表(KC)存放課程的基本信息,課程的基本信息表結(jié)構(gòu)字段說明見表11.2。表11.2 課程的基本信息表字段說明字 段 名KCHKCMLBXQXSXF項(xiàng)目課程號(hào)課程名類別開課學(xué)期學(xué)時(shí)學(xué)分重慶IT論壇 11.3.1 學(xué)生成績(jī)數(shù)據(jù)庫表結(jié)構(gòu)3學(xué)生課程成績(jī)表(XSKE)學(xué)生課程成績(jī)表(XSKE)存放學(xué)生課程的成績(jī)信息,學(xué)生課程的成績(jī)表結(jié)構(gòu)字段說明見表11.3。表11.3 學(xué)生課程的成績(jī)表字段說明字 段 名XHKCHCJXF項(xiàng)目學(xué)號(hào)課程號(hào)成績(jī)學(xué)分重慶IT論壇 11.3.2 學(xué)生成績(jī)數(shù)據(jù)庫數(shù)據(jù)樣本1學(xué)生信息表(表名XS)數(shù)據(jù)樣本2課程表(表名KC)數(shù)據(jù)樣本課程號(hào)(KCH)課程名(KCM)開課學(xué)期(XQ)學(xué)
21、時(shí)(XS)學(xué)分(XF)101計(jì)算機(jī)基礎(chǔ)1805102程序設(shè)計(jì)與語言2684206離散數(shù)學(xué)4684208數(shù)據(jù)結(jié)構(gòu)5684209操作系統(tǒng)6684210計(jì)算機(jī)原理5855212數(shù)據(jù)庫原理7684301計(jì)算機(jī)網(wǎng)絡(luò)7513302軟件工程7513重慶IT論壇 11.3.2 學(xué)生成績(jī)數(shù)據(jù)庫數(shù)據(jù)樣本3學(xué)生與課程表(表名XS_KC)數(shù)據(jù)樣本學(xué)號(hào)(XH)課程號(hào)(KCH)成績(jī)(CJ)學(xué)號(hào)(XH)課程號(hào)(KCH)成績(jī)(CJ)學(xué)號(hào)(XH)課程號(hào)(KCH)成績(jī)(CJ)081101101800811071017808111120676081101102780811071028008111310163081101206760
22、811072066808111310279081103101620811081018508111320660081103102700811081026408120110180081103206810811082068708120210165081104101900811091016608120310187081104102840811091028308120410191081104206650811092067008121010176081102102780811101019508121610181081102206780811101029008121810170081106101650811
23、102068908122010182081106102710811111019108122110176081106206800811111027008124110190重慶IT論壇 11.4 VB/SQL Server學(xué)生成績(jī)管理系統(tǒng)11.4.1 連接SQL Server數(shù)據(jù)庫1通過ODBC連接SQL Server數(shù)據(jù)庫數(shù)據(jù)庫管理器是VB6.0環(huán)境下可視化管理數(shù)據(jù)庫的工具,下面介紹如何通過數(shù)據(jù)庫管理器以O(shè)DBC方式連接SQL Server。(1)創(chuàng)建ODBC數(shù)據(jù)源首先在“控制面板”的“管理工具”中創(chuàng)建ODBC數(shù)據(jù)源,方法如下。 在“控制面板”的“管理工具”中選擇“ODBC數(shù)據(jù)源”圖標(biāo)雙擊,出現(xiàn)
24、如圖11.11所示的接口,在圖中單擊“添加”按鈕,進(jìn)入如圖11.12所示的接口。 圖11.11 ODBC數(shù)據(jù)源接口 圖11.12 安裝數(shù)據(jù)源驅(qū)動(dòng)程序的接口重慶IT論壇 11.4.1 連接SQL Server數(shù)據(jù)庫 在圖11.12的接口中,選擇安裝的驅(qū)動(dòng)程序?yàn)椤癝QL Server”,單擊“完成”按鈕,出現(xiàn)如圖11.13所示的接口。圖11.13 安裝數(shù)據(jù)源驅(qū)動(dòng)程序的接口重慶IT論壇 11.4.1 連接SQL Server數(shù)據(jù)庫 在圖11.13中,單擊“下一步”按鈕,出現(xiàn)如圖11.14所示的接口。圖11.14 選擇SQL Server服務(wù)器登錄認(rèn)證方式的接口重慶IT論壇 11.4.1 連接SQL
25、Server數(shù)據(jù)庫 在圖11.14所示的接口中,選擇SQL Server服務(wù)器登錄認(rèn)證方式,在此選擇為SQL Server認(rèn)證方式,并輸入用戶登錄賬號(hào)和密碼,本例中以系統(tǒng)管理員身份sa登錄。執(zhí)行“下一步”,出現(xiàn)如圖11.15所示的接口。在如圖11.15所示的接口中,可更改默認(rèn)的數(shù)據(jù)庫,在此設(shè)置默認(rèn)數(shù)據(jù)庫為XSCJ,然后按照提示完成剩余工作。(2)連接SQL Server數(shù)據(jù)庫創(chuàng)建ODBC數(shù)據(jù)源后,即可通過VB6.0提供的數(shù)據(jù)庫管理器,連接SQL Server數(shù)據(jù)庫,使用步驟如下。 在VB接口中,執(zhí)行“外接程序”菜單的“可視化數(shù)據(jù)管理器”命令。 在“文件”菜單中執(zhí)行“新建”可新建數(shù)據(jù)庫,執(zhí)行“打
26、開”可打開指定的數(shù)據(jù)庫,在此,執(zhí)行以“ODBC”方式打開XSCJ數(shù)據(jù)庫,執(zhí)行結(jié)果如圖11.16所示。重慶IT論壇 11.4.1 連接SQL Server數(shù)據(jù)庫圖11.15 選擇默認(rèn)數(shù)據(jù)庫的接口重慶IT論壇 11.4.1 連接SQL Server數(shù)據(jù)庫圖11.16 通過數(shù)據(jù)管理器連接XSCJ數(shù)據(jù)庫重慶IT論壇 11.4.1 連接SQL Server數(shù)據(jù)庫在如圖11.6所示的接口中,可在數(shù)據(jù)庫中創(chuàng)建表、對(duì)表中的數(shù)據(jù)進(jìn)行查詢、插入、刪除、修改操作。在SQL文本框中,可輸入SQL語句,并單擊中“執(zhí)行”按鈕執(zhí)行。2通過OLE連接SQL Server數(shù)據(jù)庫數(shù)據(jù)環(huán)境設(shè)計(jì)器(Data Environment)
27、是用于建立數(shù)據(jù)庫連接和定義命令的圖形接口,下面介紹數(shù)據(jù)環(huán)境設(shè)計(jì)器下通過OLE建立與SQL Server數(shù)據(jù)庫的連接。(1)給工程添加數(shù)據(jù)環(huán)境設(shè)計(jì)器在VB接口的工程菜單中選擇“添加Data Environment”菜單項(xiàng),出現(xiàn)如圖11.17所示的接口,在屬性窗口可修改默認(rèn)的數(shù)據(jù)環(huán)境對(duì)象名;(2)通過OLE建立與數(shù)據(jù)庫的連接 在圖11.17的Connection對(duì)象圖標(biāo)上右擊,出現(xiàn)一快捷菜單,選擇“屬性”菜單項(xiàng),出現(xiàn)如圖11.18所示的接口。在圖11.18中,對(duì)于“提供者”選項(xiàng)卡,選擇“Microsoft OLE DB Provider for SQL Server”;對(duì)于“連接”選項(xiàng)卡,設(shè)置各項(xiàng)
28、連接屬性,“在服務(wù)器上選擇數(shù)據(jù)庫”下拉表中選擇指定的數(shù)據(jù)庫。如圖11.19所示,單擊“測(cè)試連接”按鈕,測(cè)試成功,則建立了與數(shù)據(jù)庫的連接。重慶IT論壇 11.4.1 連接SQL Server數(shù)據(jù)庫圖11.17 數(shù)據(jù)環(huán)境設(shè)計(jì)器的接口重慶IT論壇 11.4.1 連接SQL Server數(shù)據(jù)庫圖11.18 建立數(shù)據(jù)庫連接的接口重慶IT論壇 11.4.1 連接SQL Server數(shù)據(jù)庫圖11.19 設(shè)置數(shù)據(jù)庫連接屬性的接口重慶IT論壇 11.4.1 連接SQL Server數(shù)據(jù)庫3ADO Data和ADODB連接SQL Server數(shù)據(jù)庫(1)用可視ADODC控件連接數(shù)據(jù)庫 在VB選“工程”菜單“部件”
29、菜單項(xiàng),系統(tǒng)打開“部件”對(duì)話框,如圖11.20所示。圖11.20 “部件”對(duì)話框重慶IT論壇 11.4.1 連接SQL Server數(shù)據(jù)庫選擇兩個(gè)ADO控件,他們是“Microsoft ADO Data Control 6.0”和“Microsoft DataGrid Control 6.0”。最后單擊“確定”按鈕,此后VB6.0工具欄中就增加了上述兩個(gè)控件的圖標(biāo)。前者用于連接數(shù)據(jù)庫,后者用于以表格形式顯示數(shù)據(jù)庫表的內(nèi)容。 在VB窗體中加入“Microsoft ADO Data Control 6.0”控件(簡(jiǎn)稱ADODC),命名合適的名稱,如StuADO。 設(shè)置控件ADODC的Connect
30、ionString屬性。選擇該屬性,如圖11.21所示。單擊“”,系統(tǒng)打開對(duì)話框,如圖11.22所示。單擊“生成”,系統(tǒng)顯示“數(shù)據(jù)鏈接屬性”對(duì)話框,如圖11.23所示。選擇“連接”選項(xiàng)卡,進(jìn)行設(shè)置。最后單擊“確定”按鈕。 設(shè)置ADODC的RecordSource屬性。打開“屬性頁”,如圖11.24所示。重慶IT論壇 11.4.1 連接SQL Server數(shù)據(jù)庫 圖11.21 設(shè)置ConnectionString屬性圖 圖11.22 生成連接字符串重慶IT論壇 11.4.1 連接SQL Server數(shù)據(jù)庫 圖11.23 “數(shù)據(jù)鏈接屬性”對(duì)話框 圖11.24 屬性頁重慶IT論壇 11.4.1 連接
31、SQL Server數(shù)據(jù)庫選擇命令類型:1 - adCmdText:表示命令為SQL語句。2 - adCmdTable:表示命令為一個(gè)表名。4 - adCmdStoredProc:表示命令是一個(gè)存儲(chǔ)過程名。8 - adCmdUnknown:表示不確定命令類型。如果命令類型為表名或存儲(chǔ)過程名,則選擇對(duì)應(yīng)的名稱,否則在命令文本中寫入SQL語句。最后單擊“確定”按鈕。數(shù)據(jù)源控件連接數(shù)據(jù)庫完成。此時(shí)可以直接訪問它,或者可以充當(dāng)數(shù)據(jù)表格控件的數(shù)據(jù)源使用。(2)ADODB.CONNECTION對(duì)象連接數(shù)據(jù)庫 創(chuàng)建ADODB.CONNECTION對(duì)象:Private SqlCon As New ADODB.
32、ConnectionSqlCon.Provider = SQLOLEDBSqlCon.Open Server=microsof-cee903dcr;DataBase=XSCJ;UID=wmx;PWD=1234; 用ADODB.CONNECTION對(duì)象:Private SqlCmd As New ADODB.Command指定Command對(duì)象所使用的連接SqlCmd.ActiveConnection = SqlConSqlCmd.CommandText = select * from XS執(zhí)行命令Set SqlRes=SqlCmd.Execute重慶IT論壇 11.4.2 學(xué)生成績(jī)管理系統(tǒng)主接
33、口本系統(tǒng)是一個(gè)用VB實(shí)現(xiàn)的簡(jiǎn)單的學(xué)生成績(jī)管理系統(tǒng),使用可視ADODC控件和ADODB對(duì)象來訪問后臺(tái)數(shù)據(jù)庫服務(wù)器,系統(tǒng)包含學(xué)生信息的查詢、學(xué)生信息的錄入修改刪除、學(xué)生成績(jī)的錄入修改。系統(tǒng)主頁面如圖11.25所示。主要功能:主接口,導(dǎo)航作用,單擊可進(jìn)入操作窗口。創(chuàng)建過程:圖11.25 系統(tǒng)主接口重慶IT論壇 11.4.2 學(xué)生成績(jī)管理系統(tǒng)主接口1創(chuàng)建菜單創(chuàng)建菜單如圖11.26所示。圖11.26 創(chuàng)建菜單重慶IT論壇 11.4.2 學(xué)生成績(jī)管理系統(tǒng)主接2創(chuàng)建工具條創(chuàng)建工具條如圖11.27所示。圖11.27 創(chuàng)建工具條創(chuàng)建工具條包括:先創(chuàng)建工具條,創(chuàng)建ImageList控件,導(dǎo)入圖標(biāo),最后與菜單關(guān)聯(lián)。
34、功能包括:退出系統(tǒng)、學(xué)生信息查詢、學(xué)生信息修改、學(xué)生成績(jī)修改等。其index分別為3,6,7,8。重慶IT論壇 11.4.2 學(xué)生成績(jī)管理系統(tǒng)主接3主要代碼菜單Click的處理過程退出系統(tǒng)菜單Private Sub msQuitSys_Click() EndEnd Sub學(xué)生信息修改菜單Private Sub msStuInfo_Click() AddStu.ShowEnd Sub學(xué)生成績(jī)錄入菜單Private Sub msStuScore_Click() AddStuScore.ShowEnd Sub學(xué)生信息查詢菜單Private Sub msStuSearch_Click() StuSea
35、rch.ShowEnd Sub重慶IT論壇 11.4.2 學(xué)生成績(jī)管理系統(tǒng)主接 工具條Click的處理單擊工具條的圖標(biāo),分別對(duì)應(yīng)調(diào)用菜單中的處理過程。Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)學(xué)生信息查詢圖標(biāo)If Button.Index = 6 Then msStuSearch_ClickEnd If學(xué)生信息修改圖標(biāo)If Button.Index = 7 Then msStuInfo_ClickEnd If 學(xué)生成績(jī)修改圖標(biāo)If Button.Index = 8 Then msStuScore_Cl
36、ickEnd If退出系統(tǒng)圖標(biāo)If Button.Index = 3 Then msQuitSys_ClickEnd IfEnd Sub重慶IT論壇 11.4.3 學(xué)生信息查詢目的與要求:了解使用控件如何顯示數(shù)據(jù)庫中的數(shù)據(jù),同時(shí)了解查詢的基本方法。程序接口:程序接口如圖11.28所示。圖11.28 程序接口重慶IT論壇 11.4.3 學(xué)生信息查詢主要功能:可以滿足簡(jiǎn)單查詢的需要,什么條件也不輸則分頁顯示所有記錄,可以輸入條件進(jìn)行簡(jiǎn)單的模糊查詢,各條件之間為與的關(guān)系,在查詢的結(jié)果中移動(dòng)記錄指針可以查看這個(gè)學(xué)生的具體選課信息。創(chuàng)建過程: 在窗體上放入學(xué)生信息查詢的ADODC和學(xué)生選課信息的ADOD
37、C、創(chuàng)建兩個(gè)學(xué)生信息顯示的DataGrid和學(xué)生選課信息顯示的DataGrid,并分別起名為StuADO,StuKCADO,StuDG,StuKCDG。放入學(xué)號(hào)Edit、姓名Edit和專業(yè)下拉列表框。為了美觀,StuKCADO隱藏在StuKCDG后面。 設(shè)置StuADO的ConnectionString屬性為:Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;User ID=sa;Initial Catalog=XSCJ;Data Source=microsof-cee903dcr 設(shè)置StuADO
38、的RecordSource屬性為:select * from XS,CXB where XS.XB=CXB.XB 設(shè)置StuDG的DataSource屬性為StuADO。重慶IT論壇 11.4.3 學(xué)生信息查詢 設(shè)置StuKCADO的ConnectionString屬性為:Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;User ID=sa;Initial Catalog=XSCJ;Data Source=microsof-cee903dcr 設(shè)置StuKCADO的RecordSource屬性為:
39、select * from XS,KC,XS_KCwhere XS.XH=XS_KC.XH and KC.KCH=XS_KC.KCH 設(shè)置StuKCDG的DataSource屬性為StuKCADO。實(shí)現(xiàn)過程:直接打開時(shí)由于控件屬性的設(shè)置,所以顯示所有記錄,當(dāng)輸入查詢條件時(shí)單擊查詢按鈕,則調(diào)用MMakeSqlStr函數(shù)產(chǎn)生查詢字符串,然后重新設(shè)置控件的屬性,打開控件顯示查詢結(jié)果集。當(dāng)專業(yè)改變時(shí)調(diào)用StuZY_Click函數(shù)來分別顯示所選的專業(yè)學(xué)生記錄,當(dāng)在查詢結(jié)果學(xué)生信息記錄集中移動(dòng)記錄指針時(shí),可以在下面的選課表中看到學(xué)生選課的信息。重慶IT論壇 11.4.3 學(xué)生信息查詢主要代碼:根據(jù)學(xué)號(hào)、姓
40、名的輸入信息和專業(yè)的選擇生成模糊查詢的SQL字符串。Dim SqlStr As String 保存查詢字符串的Public Sub MakeSqlStr()產(chǎn)生查詢字符串的SqlStr = If Trim(StuXH) Then SqlStr = and XH like % + Trim(StuXH.Text)+ %End IfIf Trim(StuXM) Then SqlStr = SqlStr + and XM like % + Trim(StuXM.Text)+ %End IfIf Trim(StuZY) 所有專業(yè) Then SqlStr = SqlStr + and ZY = + Tr
41、im(StuZY.Text)+ End IfEnd Sub重慶IT論壇 11.4.3 學(xué)生信息查詢 “專業(yè)”列表Click事件處理。顯示選擇當(dāng)前專業(yè),并且符合學(xué)號(hào)、姓名查詢條件的學(xué)生的信息。Private Sub StuZY_Click()當(dāng)專業(yè)改變時(shí)重新從數(shù)據(jù)庫中提取數(shù)據(jù)MakeSqlStrStuADO.RecordSource = select * from XS,CXB where XS.XB=CXB.XB _& SqlStr + and ZY = + Trim(StuZY.Text)+ StuADO.RefreshEnd Sub “查詢”Click事件處理。用生成的模糊查詢的S
42、QL字符串,來刷新StuADO,并顯示到關(guān)聯(lián)的DataGrid中。Private Sub StuSch_Click()單擊查詢按鈕從數(shù)據(jù)庫中提取數(shù)據(jù)MakeSqlStrStuADO.RecordSource = select * from XS,CXB where XS.XB=CXB.XB _& SqlStrStuADO.RefreshEnd Sub重慶IT論壇 11.4.3 學(xué)生信息查詢 學(xué)生信息顯示的DataGrid的Click事件處理。以當(dāng)前學(xué)生信息的學(xué)號(hào)作為查詢條件,從XS_KC表中查找當(dāng)前學(xué)生的選課記錄,并顯示到學(xué)生課程顯示的StuKCDG中。Private Sub StuD
43、G_Click()單擊DataGrid中學(xué)生記錄,在下面顯示學(xué)生課程成績(jī)StuKCADO.RecordSource = select * from XS,KC,XS_KC _ & Where XS.XH = XS_KC.XH And KC.KCH = XS_KC.KCH _ & and XS.XH= + StuADO.Recordset(XH)+ StuKCADO.RefreshEnd Sub注意:為了方便控件顯示學(xué)生性別,這里建立了一個(gè)表CXB(XB bit,XBM varchar(4)存放數(shù)據(jù)1,男;0,女,這樣把要顯示的表與其連接便可以顯示中文的性別,如有類似情況可參照此
44、方法。重慶IT論壇 11.4.4 學(xué)生信息修改目的要求:了解對(duì)數(shù)據(jù)庫操作的基本方法(增、刪、改)。程序接口:程序接口如圖11.29所示。圖11.29 程序接口重慶IT論壇 11.4.4 學(xué)生信息修改主要功能:用戶可以單擊下面的表格,用戶資料便反映到上面的控件中去,這時(shí)可以修改控件中的信息,單擊更新實(shí)現(xiàn)修改。如輸入一個(gè)新的學(xué)號(hào),單擊更新按鈕實(shí)現(xiàn)記錄的添加,當(dāng)選中當(dāng)前記錄,單擊刪除按鈕時(shí),則可以刪除此學(xué)生記錄,雙擊照片可以選擇學(xué)生照片,用于更新學(xué)生照片信息。創(chuàng)建過程: 在窗體上放入ADODC,DataGrid并起名為StuADO,StuDG。 設(shè)置StuADO的ConnectionString屬性
45、為:Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;User ID=sa;Initial Catalog=XSCJ;Data Source=microsof-cee903dcr 設(shè)置StuADO的RecordSource屬性為:select * from XS,CXB where XS.XB=CXB.XB 設(shè)置StuDG的DataSource屬性為StuADO。 在窗體上放入Image控件并起名為StuPic,用來顯示學(xué)生照片,選擇Image控件的DataSource屬性為StuADO,設(shè)置Dat
46、aField屬性為ZP,這就完成了Image控件和數(shù)據(jù)庫的綁定,記錄集移動(dòng)時(shí)Image里面會(huì)顯示當(dāng)前學(xué)生的照片。重慶IT論壇 11.4.4 學(xué)生信息修改 并在窗體上放入如圖所需控件。實(shí)現(xiàn)過程:當(dāng)單擊DataGrid中的記錄時(shí)記錄集游標(biāo)也跟著移動(dòng),在StuADO_MoveComplete事件中取出本條記錄顯示在上面的控件中,可以在控件中修改學(xué)生信息,雙擊選擇學(xué)生照片,按更新調(diào)用StuUpd_Click更新到數(shù)據(jù)庫中,當(dāng)輸入新的學(xué)生記錄時(shí)按更新調(diào)用StuUpd_Click添加到數(shù)據(jù)庫中,也可以按刪除調(diào)用StuDel_Click函數(shù)刪除此記錄,系統(tǒng)會(huì)調(diào)用CheckXs觸發(fā)器來保持?jǐn)?shù)據(jù)的參照完整性。1
47、SQL Server數(shù)據(jù)庫中定義的觸發(fā)器為了保證數(shù)據(jù)的參照完整性,在刪除學(xué)生時(shí)要檢查成績(jī)表中此學(xué)生的記錄,有就刪除。此過程放在觸發(fā)器中完成的。CREATE TRIGGER CheckXs ON dbo.XS FOR DELETE ASdelete from XS_KCwhere XH in( select XH from deleted)重慶IT論壇 11.4.4 學(xué)生信息修改2VB主要代碼General中定義的全局變量Private FileName As StringPrivate SqlCon As New ADODB.ConnectionPrivate SqlRes As New AD
48、ODB.RecordsetPrivate SqlCmd As New ADODB.Command Form加載時(shí)打開數(shù)據(jù)庫連接Private Sub Form_Load() SqlCon.Provider = SQLOLEDB SqlCon.Open Server=microsof-cee903dcr;DataBase=XSCJ;UID=wmx;PWD=1234;End Sub Form卸載時(shí)關(guān)閉數(shù)據(jù)庫連接Private Sub Form_Unload(Cancel As Integer) SqlCon.CloseEnd Sub重慶IT論壇 11.4.4 學(xué)生信息修改 學(xué)生信息記錄集記錄指針移
49、動(dòng)完成事件代碼當(dāng)單擊StuADO控件記錄移動(dòng)圖標(biāo)時(shí)產(chǎn)生,在這個(gè)過程中取出當(dāng)前記錄中的學(xué)生信息,更新到學(xué)號(hào)、姓名等顯示控件中去,實(shí)現(xiàn)顯示和StuADO控件記錄移動(dòng)連動(dòng)。Private Sub StuADO_MoveComplete(ByVal adReason As ADODB.EventReasonEnum,ByVal pError As ADODB.Error,adStatus As ADODB.EventStatusEnum,ByVal pRecordset As ADODB.Recordset) If Not pRecordset.EOF And Not pRecordset.BOF T
50、hen StuXH.Text = pRecordset(XH) StuXM.Text = pRecordset(XM) StuCSSJ.Text = pRecordset(CSSJ) StuZY.Text = pRecordset(ZY) StuZXF.Text = pRecordset(ZXF) StuBZ.Text = CStr(pRecordset(BZ)& ) If pRecordset(XB)= 0 Then StuXBF.Value = True Else StuXBM.Value = True End If End IfEnd Sub重慶IT論壇 11.4.4 學(xué)生信息修
51、改 “刪除”Click事件處理代碼從StuADO記錄集中取出當(dāng)前記錄的學(xué)號(hào),然后通過commad對(duì)象執(zhí)行delete語句來刪除當(dāng)前的學(xué)生記錄,delete語句的調(diào)用會(huì)引起CheckXs觸發(fā)器的動(dòng)作。Private Sub StuDel_Click(Index As Integer) Ret = MsgBox(是否要?jiǎng)h除 + StuADO.Recordset(XH)+ 號(hào)學(xué)生的記錄!,vbYesNo,提示) If Ret = vbYes Then SqlCmd.ActiveConnection = SqlCon SqlCmd.CommandText = delete from XS where
52、XH= + StuADO.Recordset(XH)+ SqlCmd.Execute StuADO.RecordSource = select * from XS,CXB where XS.XB=CXB.XB StuADO.Refresh End IfEnd Sub重慶IT論壇 11.4.4 學(xué)生信息修改 “照片”Double Click事件的處理代碼打開對(duì)話框,給用戶選擇照片,并顯示在StuPic控件中,同時(shí)記錄下選擇的文件名和路徑到全局FileName變量中,給后面的更新學(xué)生信息使用。Private Sub StuPic_DblClick()顯示打開文件的公用對(duì)話框,選擇需要加入數(shù)據(jù)庫的圖
53、片CDlg.Filter = 位圖(*.bmp)|*.bmp|圖像(*.jpg)|*.jpgCDlg.ShowOpenFileName = CDlg.FileNameStuPic.Picture = LoadPicture(FileName)預(yù)覽圖片End Sub 讀取照片數(shù)據(jù)的函數(shù)代碼根據(jù)輸入的照片的文件名,打開文件讀入照片數(shù)據(jù)到數(shù)組中,然后通過AppendChunk函數(shù)把照片數(shù)據(jù)寫入到Field對(duì)象中去。 “更新”Click事件處理代碼 先查詢當(dāng)前學(xué)號(hào)的學(xué)生信息,有當(dāng)前學(xué)生的信息則修改相應(yīng)的記錄字段,調(diào)用PicSaveToDB保存選擇的照片到記錄集中的“ZP”字段,更新記錄集到數(shù)據(jù)庫中去。
54、沒有則通過AddNew新增一條記錄,然后修改相應(yīng)的記錄字段,并更新記錄集到數(shù)據(jù)庫中去,這里在調(diào)用PicSaveToDB前先要判斷FileName中是否選擇了照片,有才保存到數(shù)據(jù)庫中去。重慶IT論壇 11.4.5 學(xué)生成績(jī)的錄入目的要求:了解VB中調(diào)用SQL Server存儲(chǔ)過程的基本方法。Parameter參數(shù)對(duì)象的使用,視圖的使用,觸發(fā)器的使用。程序接口:程序接口如圖11.30所示。圖11.30 程序接口重慶IT論壇 11.4.5 學(xué)生成績(jī)的錄入主要功能:用戶可以選擇專業(yè),這時(shí)會(huì)列出本專業(yè)所有的學(xué)生學(xué)號(hào),選擇課程,這時(shí)下面的DataGrid中會(huì)顯示相應(yīng)課程的學(xué)生的成績(jī)和學(xué)分,可以在DataG
55、rid中輸入學(xué)生成績(jī),修改單個(gè)學(xué)生成績(jī),學(xué)分不允許修改,輸入成績(jī),觸發(fā)器會(huì)自動(dòng)添加相應(yīng)的學(xué)分。創(chuàng)建過程: 參照上面學(xué)生信息修改窗口,姓名和學(xué)分Enable = FALSE。 置StuADO的RecordSource屬性為:select * from XS_KC_CJ,XS_KC_CJ為視圖名稱 DataGrid窗口屬性中AllowUpdate=Enable,這樣DataGrid修改才允許更新到視圖中去,從而更新到數(shù)據(jù)庫相應(yīng)的表中。添加4列,分別選擇DataField為XH,XM,CJ,XF,如圖11.31、圖11.32所示。重慶IT論壇 11.4.5 學(xué)生成績(jī)的錄入圖11.31 窗口屬性1重慶
56、IT論壇 11.4.5 學(xué)生成績(jī)的錄入圖11.32 窗口屬性2重慶IT論壇 11.4.5 學(xué)生成績(jī)的錄入實(shí)現(xiàn)過程:在Form_Load事件中編寫專業(yè)、課程列表項(xiàng)的添加,各專業(yè)通過調(diào)用GetStuZY存儲(chǔ)過程來得到,同時(shí)檢索視圖中這個(gè)專業(yè)、選擇這門課程的學(xué)生,顯示在下面的DataGrid中,輸入成績(jī),觸發(fā)器會(huì)自動(dòng)添入學(xué)分,可以選擇學(xué)號(hào),添加一個(gè)學(xué)生的某門課程的成績(jī)和選課到學(xué)生選課表中,刪除XS_KC表中刪除此學(xué)生此門課程的成績(jī)記錄。主要代碼:(1)SQL Server中定義的存儲(chǔ)過程 創(chuàng)建GetStuZY的存儲(chǔ)過程,從學(xué)生表中查詢專業(yè)信息:CREATE PROCEDURE-GetStuZYASs
57、elect DISTINCT ZY from XS 加DISTINCT,以返回不重復(fù)的專業(yè)GO重慶IT論壇 11.4.5 學(xué)生成績(jī)的錄入 創(chuàng)建顯示學(xué)生成績(jī)ShowScore存儲(chǔ)過程。查看此學(xué)生的這門課成績(jī)是否存在,在返回成績(jī)記錄,否則返回學(xué)號(hào)、姓名、專業(yè)、課程名信息。CREATE PROCEDURE ShowScore (XH varchar(6),KCM varchar(16) AS declare KCH varchar(3),count intbeginselect KCH=KCH from KC where KCM=KCMselect count =count( *) from XS_
58、KC where XH=XH and KCH=KCHif count=0檢查查詢記錄結(jié)果數(shù)目select XH,XM,ZY,KCM from XS where XH=XH返回學(xué)生記錄elseselect XS.XH,XS.XM,CJ,XS_KC.XF,KCM from XS,KC,XS_KC where XS. XH=XH and KC.KCH=KCH and XS.XH=XS_KC.XH and KC.KCH=XS_KC.KCH返回成績(jī)記錄endGO重慶IT論壇 11.4.5 學(xué)生成績(jī)的錄入 創(chuàng)建插入學(xué)生成績(jī)的AddStuScore存儲(chǔ)過程。學(xué)生此門課程成績(jī)記錄如存在則修改成績(jī),如不存在則添
59、加這條記錄。CREATE PROCEDURE AddStuScore (XH varchar(6),KCM varchar(16),CJ int,XF int)ASbegindeclare KCH varchar(3)select KCH=KCH from KC where KCM=KCMselect * from XS_KC where XH=XH and KCH=KCHif RowCount =1update XS_KC set CJ=CJ,XF=XF where XH=XH and KCH=KCHelseinsert into XS_KC values(XH,KCH,CJ,XF)endG
60、O重慶IT論壇 11.4.5 學(xué)生成績(jī)的錄入 創(chuàng)建XS_KC_CJ視圖。用來在DataGrid中顯示學(xué)生、課程、成績(jī)的信息。CREATE VIEW dbo.XS_KC_CJASSELECT dbo.XS_KC.XH,dbo.KC.KCM,dbo.XS_KC.CJ,dbo.XS_KC.XF,dbo.XS.XM,dbo.XS.ZYFROM dbo.KC INNER JOINdbo.XS_KC ON dbo.KC.KCH = dbo.XS_KC.KCH INNER JOINdbo.XS ON dbo.XS_KC.XH = dbo.XS.XHGO重慶IT論壇 11.4.5 學(xué)生成績(jī)的錄入 創(chuàng)建XS_KC的INSERT,UPDATE觸發(fā)器。當(dā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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- CAB 1025-2013汽車塑料(注塑)腳墊
- 2024年微波集成電路AL2O3基片資金籌措計(jì)劃書代可行性研究報(bào)告
- 2024年甲氧基酚資金籌措計(jì)劃書代可行性研究報(bào)告
- 直播銷售電子教案 項(xiàng)目七任務(wù)一:直播銷售數(shù)據(jù)采集 教案
- 2025年中國(guó)變色玻璃行業(yè)市場(chǎng)前景預(yù)測(cè)及投資價(jià)值評(píng)估分析報(bào)告
- 2025年嵌入式考試政策解讀試題及答案
- 高端體育賽事品牌贊助全面合作協(xié)議
- 抖音火花汽車行業(yè)品牌合作共贏合同
- 虛擬偶像IP與動(dòng)漫產(chǎn)業(yè)聯(lián)合開發(fā)合同
- 2025年中國(guó)保險(xiǎn)杠行業(yè)市場(chǎng)前景預(yù)測(cè)及投資價(jià)值評(píng)估分析報(bào)告
- 【MOOC】結(jié)構(gòu)力學(xué)(一)-西南交通大學(xué) 中國(guó)大學(xué)慕課MOOC答案
- 【MOOC】系統(tǒng)解剖學(xué)-山東大學(xué) 中國(guó)大學(xué)慕課MOOC答案
- 改革開放簡(jiǎn)史(北方工業(yè)大學(xué))知到智慧樹章節(jié)答案
- 急診科臨床診療指南-技術(shù)操作規(guī)范更新版
- 知識(shí)付費(fèi)領(lǐng)域內(nèi)容創(chuàng)業(yè)模式研究報(bào)告
- 2024年江西省高考物理試卷真題(含答案解析)
- 基于單片機(jī)的汽車智能照明系統(tǒng)-畢業(yè)設(shè)計(jì)(論文)
- 【民族非物質(zhì)文化遺產(chǎn)的保護(hù)與傳承探究的國(guó)內(nèi)外文獻(xiàn)綜述3000字】
- 2024年河南住院醫(yī)師-河南住院醫(yī)師口腔修復(fù)科考試近5年真題集錦(頻考類試題)帶答案
- 廣州市主要河道采砂技術(shù)方案
- 中國(guó)基建課件教學(xué)課件
評(píng)論
0/150
提交評(píng)論