




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
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é)生成績管理系統(tǒng) 11.5 ASP.NET(C#)/SQL Server學(xué)生成績管理系統(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ù)活動,明確用戶對軟件系統(tǒng)的功能需求,確定待開發(fā)軟件系統(tǒng)的功能。 綜合分析用戶的信息流程及信息需求,確定將存儲哪些數(shù)據(jù),及這些數(shù)據(jù)的源和目標(biāo)。 分析用戶對數(shù)據(jù)的安全性和完整性要求,確定系統(tǒng)的性能需求和運(yùn)行環(huán)境約束。 構(gòu)建軟件系統(tǒng)的邏輯模型,為軟件要素制定驗(yàn)收準(zhǔn)則,以及軟件驗(yàn)收測試計(jì)劃。對于大型、復(fù)雜軟件系統(tǒng)的主要功能、接口、人機(jī)接口等,可能還要進(jìn)行模擬或建造原型,以便向用戶和開發(fā)方展示待開發(fā)軟件系統(tǒng)的主要特征,軟件需求分析過程有時(shí)需要反復(fù)多次,最終才能使用戶與開發(fā)者達(dá)成共識。重慶IT論壇 11.1.1
3、 軟件定義2軟件需求信息獲取 考察現(xiàn)場或跟班作業(yè),了解現(xiàn)場業(yè)務(wù)流程。 進(jìn)行市場調(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),對系統(tǒng)內(nèi)部的數(shù)據(jù)流進(jìn)行分析,逐層細(xì)化,用數(shù)據(jù)流程圖(Data Flow Diagram,DFD)描述數(shù)據(jù)在系統(tǒng)中的流動和處理,并建立相應(yīng)的數(shù)據(jù)字典(Data Dictionary,DD)。 數(shù)據(jù)流程圖使用的主要符號如圖11.1所示。圖11.1 數(shù)據(jù)流程圖使用的主要符號重慶IT論壇 11.1.1 軟件定義圖1
4、1.2為學(xué)生選課系統(tǒng)需求分析頂層數(shù)據(jù)流程圖,圖11.3為第二層的數(shù)據(jù)流程圖,圖11.4是對圖11.3中的“查詢”進(jìn)一步細(xì)化的數(shù)據(jù)流程圖。在需求分析過程中數(shù)據(jù)流程圖的細(xì)化程度取決于后繼代碼實(shí)現(xiàn)的需要,有興趣的同學(xué)可對圖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)名、類型、長度等。 數(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ù)存儲:是數(shù)據(jù)停留或保存的地方,包括數(shù)據(jù)存儲
5、名、說明等。 處理過程:主要包括:過程名、輸入?yún)?shù)、輸出參數(shù)、說明等。圖11.3 學(xué)生選課系統(tǒng)需求分析的第二層數(shù)據(jù)流程圖重慶IT論壇 11.1.1 軟件定義圖11.4 對圖11.3中的“查詢”進(jìn)一步細(xì)化的數(shù)據(jù)流程圖重慶IT論壇 11.1.2 軟件開發(fā)1概要設(shè)計(jì)概要設(shè)計(jì)又稱為總體設(shè)計(jì),是對需求規(guī)格說明中提供的軟件系統(tǒng)邏輯模型進(jìn)一步分解,其完成的主要工作有: 數(shù)據(jù)建模。將應(yīng)用需求中的數(shù)據(jù)對象、對象的屬性、對象之間的聯(lián)系抽象為信息世界的概念模型,并對其進(jìn)行描述,例如,用E-R模型描述學(xué)生管理系統(tǒng)的概念模型。 在軟件的功能設(shè)計(jì)方面,建立軟件系統(tǒng)的總體結(jié)構(gòu)和各子系統(tǒng)之間、各模塊之間的關(guān)系,定義各子系統(tǒng)接
6、口和各功能模塊的接口。 生成概要設(shè)計(jì)規(guī)格說明和組裝測試計(jì)劃。 評審概要設(shè)計(jì)的質(zhì)量,重點(diǎn)評審概要設(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)度等方面對各種方案進(jìn)行比較,選出一種“最佳方案”。概要設(shè)計(jì)的階段性成果:概要設(shè)計(jì)說明書、數(shù)據(jù)庫的概念模型設(shè)計(jì)、擴(kuò)充后的數(shù)據(jù)字典、組裝測試計(jì)劃等文檔。重慶IT論壇 11.1.2 軟件開發(fā)2詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì)又稱為過程設(shè)計(jì)。通過對概要設(shè)計(jì)的模型表示進(jìn)一步細(xì)化和轉(zhuǎn)換,得到軟件詳細(xì)的數(shù)據(jù)結(jié)構(gòu)和算法。詳細(xì)設(shè)計(jì)的主要內(nèi)容如下: 對于數(shù)據(jù)建模,根
7、據(jù)概念模型設(shè)計(jì)數(shù)據(jù)庫的邏輯模型,根據(jù)系統(tǒng)對數(shù)據(jù)安全性和完整性的要求,確定數(shù)據(jù)的完整性和安全性規(guī)則及實(shí)現(xiàn)策略; 在功能設(shè)計(jì)方面采用結(jié)構(gòu)化的設(shè)計(jì)方法對概要設(shè)計(jì)產(chǎn)生的功能模塊進(jìn)一步細(xì)化,形成可編程的結(jié)構(gòu)模塊,并設(shè)計(jì)各模塊的單元測試計(jì)劃。詳細(xì)設(shè)計(jì)的階段性成果:詳細(xì)設(shè)計(jì)規(guī)格說明書、單元測試計(jì)劃等設(shè)計(jì)文檔。3編碼與單元測試主要任務(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)的測試工作,同時(shí)做好測試記錄; 選定某一程序設(shè)計(jì)語言實(shí)現(xiàn)各功能模塊,并進(jìn)行相應(yīng)的測試。一般來說,對軟件系統(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ù)的程序模塊。編碼與單元測試的階段性成果:通過單元測試的各功能模塊的集合、詳細(xì)的單元測試報(bào)告等文檔。4組裝測試根據(jù)概要設(shè)計(jì)提供的軟件結(jié)構(gòu)、各功能模塊的說明和組裝測試計(jì)劃,將數(shù)據(jù)加載到數(shù)據(jù)庫中,對經(jīng)過單元測試檢驗(yàn)的模塊按照某種選定的策略逐步進(jìn)行組裝和測試,檢驗(yàn)應(yīng)用系統(tǒng)在正確性、功能完備性、容錯(cuò)能力、性能指標(biāo)等方面是否滿足設(shè)計(jì)要求。階段性成果: 滿足概要設(shè)計(jì)要求的詳細(xì)設(shè)計(jì)報(bào)告; 可運(yùn)行的軟件系統(tǒng)和源程序清單; 組裝測
9、試報(bào)告等文檔。5驗(yàn)收測試又稱為確認(rèn)調(diào)試,主要任務(wù):按照驗(yàn)收測試計(jì)劃對軟件系統(tǒng)進(jìn)行測試,檢驗(yàn)其是否達(dá)到了需求規(guī)格說明中定義的全部功能和性能等方面的需求。階段性成果:驗(yàn)收測試報(bào)告、項(xiàng)目開發(fā)總結(jié)報(bào)告、軟件系統(tǒng)、源程序清單、用戶操作手冊等文檔資料。最后,由專家、用戶負(fù)責(zé)人、軟件開發(fā)和管理人員組成軟件評審小組對軟件驗(yàn)收測試報(bào)告、測試結(jié)果和應(yīng)用軟件系統(tǒng)進(jìn)行評審,通過后,軟件產(chǎn)品正式通過驗(yàn)收,可以交付用戶使用。重慶IT論壇 11.1.3 軟件的使用與維護(hù)軟件開發(fā)工作結(jié)束后,軟件系統(tǒng)即可投入運(yùn)行,但由于軟件的應(yīng)用環(huán)境不斷變化,因此,在軟件的整個(gè)運(yùn)行期內(nèi),有必要對應(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ì)劃,對數(shù)據(jù)庫性能進(jìn)行監(jiān)測,當(dāng)數(shù)據(jù)庫出現(xiàn)故障時(shí),對數(shù)據(jù)庫進(jìn)行轉(zhuǎn)儲和恢復(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ù)器請求服務(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語言編寫的命令對數(shù)據(jù)庫進(jìn)行操作,但只針對關(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ù)庫鏈接和嵌入對象(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ù)對象等。OLE DB標(biāo)準(zhǔn)的核心內(nèi)容就是提供一種相同的訪問接口,使得數(shù)據(jù)的使用者(應(yīng)用程序)可以使用同樣的方法訪問各種數(shù)據(jù),
13、而不用考慮數(shù)據(jù)的具體存儲地點(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ū)動程序,另一種是通過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ā)展而來,但它不只是對ADO的改進(jìn),而是采用了一種全新的技術(shù)。主要表現(xiàn)在以下3個(gè)方面: ADO.NET不是采用ActiveX技術(shù),而是與.NET框架緊密結(jié)合的產(chǎn)物。 ADO.NET包含對XML標(biāo)準(zhǔn)的完全支持,這對于跨平臺交換數(shù)據(jù)具有重要的意義。 ADO.NET既能在與數(shù)據(jù)源連接的環(huán)境下工作,又能在斷開與數(shù)據(jù)源連接的條件下工作。ADO.NET 提供了面向?qū)ο蟮臄?shù)據(jù)庫視圖,并且在ADO.NET對象中封裝了許多數(shù)據(jù)庫屬性和關(guān)系。最重要的是,ADO.NET 通
15、過很多方式封裝和隱藏了很多數(shù)據(jù)庫訪問的細(xì)節(jié)。可以完全不知道對象在與 ADO.NET 對象交互,也不用擔(dān)心數(shù)據(jù)移動到另外一個(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完成對數(shù)據(jù)庫的訪問包括4個(gè)主要組件:Java應(yīng)用程序、JDBC驅(qū)動管理器、驅(qū)動器和數(shù)據(jù)源。在JDBC API中有兩層接口:應(yīng)用程序?qū)雍万?qū)動程序?qū)?,前者使開發(fā)人員可以通過SQL調(diào)用數(shù)據(jù)庫和取得結(jié)果,后者處理與具體數(shù)據(jù)庫驅(qū)動程序的所有通信。使用JDBC接口對數(shù)據(jù)庫操作有如下優(yōu)點(diǎn): .JDBC API與ODBC十分相似,有利于用戶理解; 使編程人員從復(fù)雜的驅(qū)動器調(diào)用命令和函
17、數(shù)中解脫出來,而致力于應(yīng)用程序功能的實(shí)現(xiàn); JDBC支持不同的關(guān)系數(shù)據(jù)庫,增強(qiáng)了程序的可移植性。使用JDBC的主要缺點(diǎn):訪問數(shù)據(jù)記錄的速度會受到一定影響,此外,由于JDBC結(jié)構(gòu)中包含了不同廠家的產(chǎn)品,這給數(shù)據(jù)源的更改帶來了較大麻煩。6數(shù)據(jù)庫連接池技術(shù)對于網(wǎng)絡(luò)環(huán)境下的數(shù)據(jù)庫應(yīng)用,由于用戶眾多,使用傳統(tǒng)的JDBC方式進(jìn)行數(shù)據(jù)庫連接,系統(tǒng)資源開銷過大成為制約大型企業(yè)級應(yīng)用效率的瓶頸,采用數(shù)據(jù)庫連接池技術(shù)對數(shù)據(jù)庫連接進(jìn)行管理,可以大大提高系統(tǒng)的效率和穩(wěn)定性。重慶IT論壇 11.2.2 客戶/服務(wù)器(C/S)模式對于一般的數(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é)生成績數(shù)據(jù)庫表結(jié)構(gòu)學(xué)生成績數(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é)號姓名性別專業(yè)名出生時(shí)間總學(xué)分備注照片2課程信息表(KC)課程
20、信息表(KC)存放課程的基本信息,課程的基本信息表結(jié)構(gòu)字段說明見表11.2。表11.2 課程的基本信息表字段說明字 段 名KCHKCMLBXQXSXF項(xiàng)目課程號課程名類別開課學(xué)期學(xué)時(shí)學(xué)分重慶IT論壇 11.3.1 學(xué)生成績數(shù)據(jù)庫表結(jié)構(gòu)3學(xué)生課程成績表(XSKE)學(xué)生課程成績表(XSKE)存放學(xué)生課程的成績信息,學(xué)生課程的成績表結(jié)構(gòu)字段說明見表11.3。表11.3 學(xué)生課程的成績表字段說明字 段 名XHKCHCJXF項(xiàng)目學(xué)號課程號成績學(xué)分重慶IT論壇 11.3.2 學(xué)生成績數(shù)據(jù)庫數(shù)據(jù)樣本1學(xué)生信息表(表名XS)數(shù)據(jù)樣本2課程表(表名KC)數(shù)據(jù)樣本課程號(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é)生成績數(shù)據(jù)庫數(shù)據(jù)樣本3學(xué)生與課程表(表名XS_KC)數(shù)據(jù)樣本學(xué)號(XH)課程號(KCH)成績(CJ)學(xué)號(XH)課程號(KCH)成績(CJ)學(xué)號(XH)課程號(KCH)成績(CJ)081101101800811071017808111120676081101102780811071028008111310163081101206760
22、811072066808111310279081103101620811081018508111320660081103102700811081026408120110180081103206810811082068708120210165081104101900811091016608120310187081104102840811091028308120410191081104206650811092067008121010176081102102780811101019508121610181081102206780811101029008121810170081106101650811
23、102068908122010182081106102710811111019108122110176081106206800811111027008124110190重慶IT論壇 11.4 VB/SQL Server學(xué)生成績管理系統(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ū)動程序的接口重慶IT論壇 11.4.1 連接SQL Server數(shù)據(jù)庫 在圖11.12的接口中,選擇安裝的驅(qū)動程序?yàn)椤癝QL Server”,單擊“完成”按鈕,出現(xiàn)如圖11.13所示的接口。圖11.13 安裝數(shù)據(jù)源驅(qū)動程序的接口重慶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)證方式,并輸入用戶登錄賬號和密碼,本例中以系統(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)建表、對表中的數(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)境對象名;(2)通過OLE建立與數(shù)據(jù)庫的連接 在圖11.17的Connection對象圖標(biāo)上右擊,出現(xiàn)一快捷菜單,選擇“屬性”菜單項(xiàng),出現(xiàn)如圖11.18所示的接口。在圖11.18中,對于“提供者”選項(xiàng)卡,選擇“Microsoft OLE DB Provider for SQL Server”;對于“連接”選項(xiàng)卡,設(shè)置各項(xiàng)
28、連接屬性,“在服務(wù)器上選擇數(shù)據(jù)庫”下拉表中選擇指定的數(shù)據(jù)庫。如圖11.19所示,單擊“測試連接”按鈕,測試成功,則建立了與數(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)打開“部件”對話框,如圖11.20所示。圖11.20 “部件”對話框重慶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”控件(簡稱ADODC),命名合適的名稱,如StuADO。 設(shè)置控件ADODC的Connect
30、ionString屬性。選擇該屬性,如圖11.21所示。單擊“”,系統(tǒng)打開對話框,如圖11.22所示。單擊“生成”,系統(tǒng)顯示“數(shù)據(jù)鏈接屬性”對話框,如圖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ù)鏈接屬性”對話框 圖11.24 屬性頁重慶IT論壇 11.4.1 連接
31、SQL Server數(shù)據(jù)庫選擇命令類型:1 - adCmdText:表示命令為SQL語句。2 - adCmdTable:表示命令為一個(gè)表名。4 - adCmdStoredProc:表示命令是一個(gè)存儲過程名。8 - adCmdUnknown:表示不確定命令類型。如果命令類型為表名或存儲過程名,則選擇對應(yīng)的名稱,否則在命令文本中寫入SQL語句。最后單擊“確定”按鈕。數(shù)據(jù)源控件連接數(shù)據(jù)庫完成。此時(shí)可以直接訪問它,或者可以充當(dāng)數(shù)據(jù)表格控件的數(shù)據(jù)源使用。(2)ADODB.CONNECTION對象連接數(shù)據(jù)庫 創(chuàng)建ADODB.CONNECTION對象:Private SqlCon As New ADODB.
32、ConnectionSqlCon.Provider = SQLOLEDBSqlCon.Open Server=microsof-cee903dcr;DataBase=XSCJ;UID=wmx;PWD=1234; 用ADODB.CONNECTION對象:Private SqlCmd As New ADODB.Command指定Command對象所使用的連接SqlCmd.ActiveConnection = SqlConSqlCmd.CommandText = select * from XS執(zhí)行命令Set SqlRes=SqlCmd.Execute重慶IT論壇 11.4.2 學(xué)生成績管理系統(tǒng)主接
33、口本系統(tǒng)是一個(gè)用VB實(shí)現(xiàn)的簡單的學(xué)生成績管理系統(tǒng),使用可視ADODC控件和ADODB對象來訪問后臺數(shù)據(jù)庫服務(wù)器,系統(tǒng)包含學(xué)生信息的查詢、學(xué)生信息的錄入修改刪除、學(xué)生成績的錄入修改。系統(tǒng)主頁面如圖11.25所示。主要功能:主接口,導(dǎo)航作用,單擊可進(jìn)入操作窗口。創(chuàng)建過程:圖11.25 系統(tǒng)主接口重慶IT論壇 11.4.2 學(xué)生成績管理系統(tǒng)主接口1創(chuàng)建菜單創(chuàng)建菜單如圖11.26所示。圖11.26 創(chuàng)建菜單重慶IT論壇 11.4.2 學(xué)生成績管理系統(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é)生成績修改等。其index分別為3,6,7,8。重慶IT論壇 11.4.2 學(xué)生成績管理系統(tǒng)主接3主要代碼菜單Click的處理過程退出系統(tǒng)菜單Private Sub msQuitSys_Click() EndEnd Sub學(xué)生信息修改菜單Private Sub msStuInfo_Click() AddStu.ShowEnd Sub學(xué)生成績錄入菜單Private Sub msStuScore_Click() AddStuScore.ShowEnd Sub學(xué)生信息查詢菜單Private Sub msStuSearch_Click() StuSea
35、rch.ShowEnd Sub重慶IT論壇 11.4.2 學(xué)生成績管理系統(tǒng)主接 工具條Click的處理單擊工具條的圖標(biāo),分別對應(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é)生成績修改圖標(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é)生信息查詢主要功能:可以滿足簡單查詢的需要,什么條件也不輸則分頁顯示所有記錄,可以輸入條件進(jìn)行簡單的模糊查詢,各條件之間為與的關(guān)系,在查詢的結(jié)果中移動記錄指針可以查看這個(gè)學(xué)生的具體選課信息。創(chuàng)建過程: 在窗體上放入學(xué)生信息查詢的ADODC和學(xué)生選課信息的ADOD
37、C、創(chuàng)建兩個(gè)學(xué)生信息顯示的DataGrid和學(xué)生選課信息顯示的DataGrid,并分別起名為StuADO,StuKCADO,StuDG,StuKCDG。放入學(xué)號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é)生信息記錄集中移動記錄指針時(shí),可以在下面的選課表中看到學(xué)生選課的信息。重慶IT論壇 11.4.3 學(xué)生信息查詢主要代碼:根據(jù)學(xué)號、姓
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é)號、姓名查詢條件的學(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é)號作為查詢條件,從XS_KC表中查找當(dāng)前學(xué)生的選課記錄,并顯示到學(xué)生課程顯示的StuKCDG中。Private Sub StuD
43、G_Click()單擊DataGrid中學(xué)生記錄,在下面顯示學(xué)生課程成績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é)生信息修改目的要求:了解對數(shù)據(jù)庫操作的基本方法(增、刪、改)。程序接口:程序接口如圖11.29所示。圖11.29 程序接口重慶IT論壇 11.4.4 學(xué)生信息修改主要功能:用戶可以單擊下面的表格,用戶資料便反映到上面的控件中去,這時(shí)可以修改控件中的信息,單擊更新實(shí)現(xiàn)修改。如輸入一個(gè)新的學(xué)號,單擊更新按鈕實(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ù)庫的綁定,記錄集移動時(shí)Image里面會顯示當(dāng)前學(xué)生的照片。重慶IT論壇 11.4.4 學(xué)生信息修改 并在窗體上放入如圖所需控件。實(shí)現(xiàn)過程:當(dāng)單擊DataGrid中的記錄時(shí)記錄集游標(biāo)也跟著移動,在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)會調(diào)用CheckXs觸發(fā)器來保持?jǐn)?shù)據(jù)的參照完整性。1
47、SQL Server數(shù)據(jù)庫中定義的觸發(fā)器為了保證數(shù)據(jù)的參照完整性,在刪除學(xué)生時(shí)要檢查成績表中此學(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)單擊StuADO控件記錄移動圖標(biāo)時(shí)產(chǎn)生,在這個(gè)過程中取出當(dāng)前記錄中的學(xué)生信息,更新到學(xué)號、姓名等顯示控件中去,實(shí)現(xiàn)顯示和StuADO控件記錄移動連動。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é)號,然后通過commad對象執(zhí)行delete語句來刪除當(dāng)前的學(xué)生記錄,delete語句的調(diào)用會引起CheckXs觸發(fā)器的動作。Private Sub StuDel_Click(Index As Integer) Ret = MsgBox(是否要?jiǎng)h除 + StuADO.Recordset(XH)+ 號學(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事件的處理代碼打開對話框,給用戶選擇照片,并顯示在StuPic控件中,同時(shí)記錄下選擇的文件名和路徑到全局FileName變量中,給后面的更新學(xué)生信息使用。Private Sub StuPic_DblClick()顯示打開文件的公用對話框,選擇需要加入數(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對象中去。 “更新”Click事件處理代碼 先查詢當(dāng)前學(xué)號的學(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é)生成績的錄入目的要求:了解VB中調(diào)用SQL Server存儲過程的基本方法。Parameter參數(shù)對象的使用,視圖的使用,觸發(fā)器的使用。程序接口:程序接口如圖11.30所示。圖11.30 程序接口重慶IT論壇 11.4.5 學(xué)生成績的錄入主要功能:用戶可以選擇專業(yè),這時(shí)會列出本專業(yè)所有的學(xué)生學(xué)號,選擇課程,這時(shí)下面的DataGrid中會顯示相應(yīng)課程的學(xué)生的成績和學(xué)分,可以在DataG
55、rid中輸入學(xué)生成績,修改單個(gè)學(xué)生成績,學(xué)分不允許修改,輸入成績,觸發(fā)器會自動添加相應(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é)生成績的錄入圖11.31 窗口屬性1重慶
56、IT論壇 11.4.5 學(xué)生成績的錄入圖11.32 窗口屬性2重慶IT論壇 11.4.5 學(xué)生成績的錄入實(shí)現(xiàn)過程:在Form_Load事件中編寫專業(yè)、課程列表項(xiàng)的添加,各專業(yè)通過調(diào)用GetStuZY存儲過程來得到,同時(shí)檢索視圖中這個(gè)專業(yè)、選擇這門課程的學(xué)生,顯示在下面的DataGrid中,輸入成績,觸發(fā)器會自動添入學(xué)分,可以選擇學(xué)號,添加一個(gè)學(xué)生的某門課程的成績和選課到學(xué)生選課表中,刪除XS_KC表中刪除此學(xué)生此門課程的成績記錄。主要代碼:(1)SQL Server中定義的存儲過程 創(chuàng)建GetStuZY的存儲過程,從學(xué)生表中查詢專業(yè)信息:CREATE PROCEDURE-GetStuZYASs
57、elect DISTINCT ZY from XS 加DISTINCT,以返回不重復(fù)的專業(yè)GO重慶IT論壇 11.4.5 學(xué)生成績的錄入 創(chuàng)建顯示學(xué)生成績ShowScore存儲過程。查看此學(xué)生的這門課成績是否存在,在返回成績記錄,否則返回學(xué)號、姓名、專業(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返回成績記錄endGO重慶IT論壇 11.4.5 學(xué)生成績的錄入 創(chuàng)建插入學(xué)生成績的AddStuScore存儲過程。學(xué)生此門課程成績記錄如存在則修改成績,如不存在則添
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é)生成績的錄入 創(chuàng)建XS_KC_CJ視圖。用來在DataGrid中顯示學(xué)生、課程、成績的信息。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é)生成績的錄入 創(chuàng)建XS_KC的INSERT,UPDATE觸發(fā)器。當(dāng)添加
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 老年常見疾病病人的護(hù)理
- 2024年1月化糞池疏通與雨污分流改造聯(lián)動施工合同
- 美甲聊天教學(xué)課件
- 腦卒中靜脈溶栓后的護(hù)理
- 汽車行業(yè)投放指南
- 2024珠海市第一中等職業(yè)學(xué)校工作人員招聘考試及答案
- 2024泉州市南方科技職業(yè)技術(shù)學(xué)校工作人員招聘考試及答案
- 2024滬東中華造船集團(tuán)高級技工學(xué)校工作人員招聘考試及答案
- 2024河南工業(yè)職業(yè)技術(shù)學(xué)院工作人員招聘考試及答案
- 民間借貸及擔(dān)保合同范本
- 2025年中考語文專題復(fù)習(xí):寫作技巧 課件
- 【MOOC】聲樂作品賞析與演唱-揚(yáng)州大學(xué) 中國大學(xué)慕課MOOC答案
- 2025年中考數(shù)學(xué)一輪復(fù)習(xí) 統(tǒng)計(jì)與概率 解答題練習(xí)七(含答案)
- 信息化戰(zhàn)爭課件
- 中班課件恐龍教學(xué)課件
- 靜脈治療護(hù)理技術(shù)操作標(biāo)準(zhǔn)解讀
- 2024年江西省高考物理試卷真題(含答案解析)
- 精益生產(chǎn)知識學(xué)習(xí)考試復(fù)習(xí)題庫300題(含答案)
- 復(fù)方制劑質(zhì)量控制
- 外周灌注指數(shù)PI
- 法律咨詢制度
評論
0/150
提交評論