SQL_Server數(shù)據(jù)庫應用系統(tǒng)的開發(fā)_第1頁
SQL_Server數(shù)據(jù)庫應用系統(tǒng)的開發(fā)_第2頁
SQL_Server數(shù)據(jù)庫應用系統(tǒng)的開發(fā)_第3頁
SQL_Server數(shù)據(jù)庫應用系統(tǒng)的開發(fā)_第4頁
SQL_Server數(shù)據(jù)庫應用系統(tǒng)的開發(fā)_第5頁
已閱讀5頁,還剩135頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、重慶IT論壇 第11章 數(shù)據(jù)庫應用系統(tǒng)的開發(fā)11.1 軟件開發(fā)周期及各階段的任務 11.2 數(shù)據(jù)庫應用系統(tǒng)11.3 創(chuàng)建應用系統(tǒng)數(shù)據(jù)庫11.4 VB/SQL Server學生成績管理系統(tǒng) 11.5 ASP.NET(C#)/SQL Server學生成績管理系統(tǒng) 海量海量IT技術教程下載技術教程下載 重慶IT論壇 11.1 軟件開發(fā)周期及各階段的任務11.1.1 軟件定義開發(fā)一個數(shù)據(jù)庫應用系統(tǒng)首先要進行用戶的需求分析,確定軟件系統(tǒng)的功能、性能需求,搞清楚“做什么”。首先,進行軟件系統(tǒng)的可行性研究。其次,進行軟件需求分析。軟件需求分析的目標是深入描述待開發(fā)數(shù)據(jù)庫應用軟件的功能、性能需求、數(shù)據(jù)的安全與

2、完整性約束等方面的需求,及與其他系統(tǒng)元素的接口。1需求分析的主要任務 通過調查軟件使用部門的業(yè)務活動,明確用戶對軟件系統(tǒng)的功能需求,確定待開發(fā)軟件系統(tǒng)的功能。 綜合分析用戶的信息流程及信息需求,確定將存儲哪些數(shù)據(jù),及這些數(shù)據(jù)的源和目標。 分析用戶對數(shù)據(jù)的安全性和完整性要求,確定系統(tǒng)的性能需求和運行環(huán)境約束。 構建軟件系統(tǒng)的邏輯模型,為軟件要素制定驗收準則,以及軟件驗收測試計劃。對于大型、復雜軟件系統(tǒng)的主要功能、接口、人機接口等,可能還要進行模擬或建造原型,以便向用戶和開發(fā)方展示待開發(fā)軟件系統(tǒng)的主要特征,軟件需求分析過程有時需要反復多次,最終才能使用戶與開發(fā)者達成共識。重慶IT論壇 11.1.1

3、 軟件定義2軟件需求信息獲取 考察現(xiàn)場或跟班作業(yè),了解現(xiàn)場業(yè)務流程。 進行市場調查。 訪問用戶和應用領域的專家。 查閱與原應用系統(tǒng)或應用環(huán)境有關的記錄。3用戶需求的描述方法描述用戶需求傳統(tǒng)的方法大多采用結構化的分析方法(Structured Analysis,SA),即按應用部門的組織結構,對系統(tǒng)內部的數(shù)據(jù)流進行分析,逐層細化,用數(shù)據(jù)流程圖(Data Flow Diagram,DFD)描述數(shù)據(jù)在系統(tǒng)中的流動和處理,并建立相應的數(shù)據(jù)字典(Data Dictionary,DD)。 數(shù)據(jù)流程圖使用的主要符號如圖11.1所示。圖11.1 數(shù)據(jù)流程圖使用的主要符號重慶IT論壇 11.1.1 軟件定義圖1

4、1.2為學生選課系統(tǒng)需求分析頂層數(shù)據(jù)流程圖,圖11.3為第二層的數(shù)據(jù)流程圖,圖11.4是對圖11.3中的“查詢”進一步細化的數(shù)據(jù)流程圖。在需求分析過程中數(shù)據(jù)流程圖的細化程度取決于后繼代碼實現(xiàn)的需要,有興趣的同學可對圖11.3中的“編輯”和“統(tǒng)計”進一步細化。圖11.2 學生選課系統(tǒng)需求分析的頂層數(shù)據(jù)流程圖重慶IT論壇 11.1.1 軟件定義 數(shù)據(jù)字典的主要內容。 數(shù)據(jù)項:包括數(shù)據(jù)項名、類型、長度等。 數(shù)據(jù)結構:反映了數(shù)據(jù)之間的組合關系,包括數(shù)據(jù)結構名、含義說明及定義。 數(shù)據(jù)流:數(shù)據(jù)流是數(shù)據(jù)在系統(tǒng)內傳輸?shù)穆窂?,包括?shù)據(jù)流名、說明、數(shù)據(jù)的源和目標等。 數(shù)據(jù)存儲:是數(shù)據(jù)停留或保存的地方,包括數(shù)據(jù)存儲

5、名、說明等。 處理過程:主要包括:過程名、輸入?yún)?shù)、輸出參數(shù)、說明等。圖11.3 學生選課系統(tǒng)需求分析的第二層數(shù)據(jù)流程圖重慶IT論壇 11.1.1 軟件定義圖11.4 對圖11.3中的“查詢”進一步細化的數(shù)據(jù)流程圖重慶IT論壇 11.1.2 軟件開發(fā)1概要設計概要設計又稱為總體設計,是對需求規(guī)格說明中提供的軟件系統(tǒng)邏輯模型進一步分解,其完成的主要工作有: 數(shù)據(jù)建模。將應用需求中的數(shù)據(jù)對象、對象的屬性、對象之間的聯(lián)系抽象為信息世界的概念模型,并對其進行描述,例如,用E-R模型描述學生管理系統(tǒng)的概念模型。 在軟件的功能設計方面,建立軟件系統(tǒng)的總體結構和各子系統(tǒng)之間、各模塊之間的關系,定義各子系統(tǒng)接

6、口和各功能模塊的接口。 生成概要設計規(guī)格說明和組裝測試計劃。 評審概要設計的質量,重點評審概要設計是否支持軟件需求規(guī)格說明。 進一步充實數(shù)據(jù)字典。概要設計的目標:總體結構具有層次性,盡量降低模塊接口的復雜度。進行概要設計時,可提出多種設計方案,并在功能、性能、成本、進度等方面對各種方案進行比較,選出一種“最佳方案”。概要設計的階段性成果:概要設計說明書、數(shù)據(jù)庫的概念模型設計、擴充后的數(shù)據(jù)字典、組裝測試計劃等文檔。重慶IT論壇 11.1.2 軟件開發(fā)2詳細設計詳細設計又稱為過程設計。通過對概要設計的模型表示進一步細化和轉換,得到軟件詳細的數(shù)據(jù)結構和算法。詳細設計的主要內容如下: 對于數(shù)據(jù)建模,根

7、據(jù)概念模型設計數(shù)據(jù)庫的邏輯模型,根據(jù)系統(tǒng)對數(shù)據(jù)安全性和完整性的要求,確定數(shù)據(jù)的完整性和安全性規(guī)則及實現(xiàn)策略; 在功能設計方面采用結構化的設計方法對概要設計產生的功能模塊進一步細化,形成可編程的結構模塊,并設計各模塊的單元測試計劃。詳細設計的階段性成果:詳細設計規(guī)格說明書、單元測試計劃等設計文檔。3編碼與單元測試主要任務包括如下內容: 基于某一數(shù)據(jù)庫管理系統(tǒng)實現(xiàn)數(shù)據(jù)庫的邏輯模型,如創(chuàng)建數(shù)據(jù)庫、表等,按照數(shù)據(jù)的完整性和安全性實現(xiàn)策略,實現(xiàn)數(shù)據(jù)的完整性和安全性,并進行相應的測試工作,同時做好測試記錄; 選定某一程序設計語言實現(xiàn)各功能模塊,并進行相應的測試。一般來說,對軟件系統(tǒng)各功能模塊所采用的分析方

8、法、設計方法、編程方法,以及所選用的程序設計語言應盡可能保持一致。重慶IT論壇 11.1.2 軟件開發(fā)編碼階段應注意遵循編程標準、養(yǎng)成良好的編程風格,以便編寫出正確的便于理解、調試和維護的程序模塊。編碼與單元測試的階段性成果:通過單元測試的各功能模塊的集合、詳細的單元測試報告等文檔。4組裝測試根據(jù)概要設計提供的軟件結構、各功能模塊的說明和組裝測試計劃,將數(shù)據(jù)加載到數(shù)據(jù)庫中,對經過單元測試檢驗的模塊按照某種選定的策略逐步進行組裝和測試,檢驗應用系統(tǒng)在正確性、功能完備性、容錯能力、性能指標等方面是否滿足設計要求。階段性成果: 滿足概要設計要求的詳細設計報告; 可運行的軟件系統(tǒng)和源程序清單; 組裝測

9、試報告等文檔。5驗收測試又稱為確認調試,主要任務:按照驗收測試計劃對軟件系統(tǒng)進行測試,檢驗其是否達到了需求規(guī)格說明中定義的全部功能和性能等方面的需求。階段性成果:驗收測試報告、項目開發(fā)總結報告、軟件系統(tǒng)、源程序清單、用戶操作手冊等文檔資料。最后,由專家、用戶負責人、軟件開發(fā)和管理人員組成軟件評審小組對軟件驗收測試報告、測試結果和應用軟件系統(tǒng)進行評審,通過后,軟件產品正式通過驗收,可以交付用戶使用。重慶IT論壇 11.1.3 軟件的使用與維護軟件開發(fā)工作結束后,軟件系統(tǒng)即可投入運行,但由于軟件的應用環(huán)境不斷變化,因此,在軟件的整個運行期內,有必要對應用系統(tǒng)有計劃地維護,使軟件系統(tǒng)持久地滿足用戶的

10、需求。軟件使用和維護階段的主要工作內容如下: 在軟件使用過程中,及時收集被發(fā)現(xiàn)的軟件錯誤,并撰寫“軟件問題報告”,以便改正軟件系統(tǒng)中潛藏的錯誤; 根據(jù)數(shù)據(jù)庫維護計劃,對數(shù)據(jù)庫性能進行監(jiān)測,當數(shù)據(jù)庫出現(xiàn)故障時,對數(shù)據(jù)庫進行轉儲和恢復,并做相應的維護記錄; 根據(jù)軟件系統(tǒng)恢復計劃,當軟件系統(tǒng)出現(xiàn)故障時,進行軟件系統(tǒng)恢復,并做相應的維護記錄。重慶IT論壇 11.2 數(shù)據(jù)庫應用系統(tǒng)11.2.1 數(shù)據(jù)庫的連接方式客戶端應用程序或應用服務器向數(shù)據(jù)庫服務器請求服務時,首先必須和數(shù)據(jù)庫建立連接。雖然RDBMS都遵循SQL標準,但不同廠家開發(fā)的數(shù)據(jù)庫管理系統(tǒng)有差異,存在適應性和可移植性等方面的問題,因此,人們開始

11、研究和開發(fā)連接不同RDBMS的通用方法、技術和軟件。1ODBC數(shù)據(jù)庫接口ODBC即開放式數(shù)據(jù)庫互連(Open Database Connectivity),是微軟公司推出的一種實現(xiàn)應用程序和關系數(shù)據(jù)庫之間通信的接口標準。符合標準的數(shù)據(jù)庫就可以通過SQL語言編寫的命令對數(shù)據(jù)庫進行操作,但只針對關系數(shù)據(jù)庫。目前所有的關系數(shù)據(jù)庫都符合該標準(如SQL Server,Oracle,Access,Excel等)。ODBC本質上是一組數(shù)據(jù)庫訪問API(應用程序編程接口),由一組函數(shù)調用組成,核心是SQL語句,其結構如圖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思想且面向對象的一種技術標準,目的是提供一種統(tǒng)一的數(shù)據(jù)訪問接口訪問各種數(shù)據(jù)源,這里所說的“數(shù)據(jù)”除了標準的關系型數(shù)據(jù)庫中的數(shù)據(jù)之外,還包括郵件數(shù)據(jù)、Web上的文本或圖形、目錄服務(Directory Services),以及主機系統(tǒng)中的文件和地理數(shù)據(jù)和自定義業(yè)務對象等。OLE DB標準的核心內容就是提供一種相同的訪問接口,使得數(shù)據(jù)的使用者(應用程序)可以使用同樣的方法訪問各種數(shù)據(jù),

13、而不用考慮數(shù)據(jù)的具體存儲地點、格式或類型,其結構圖如圖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ù)庫應用程序接口,通過ADO連接數(shù)據(jù)庫,可以靈活地操作數(shù)據(jù)庫中的數(shù)據(jù)。圖11.7展示了應用程序通過ADO訪問SQL Server數(shù)據(jù)庫接口。從圖中可看出,使用ADO訪問SQL Server數(shù)據(jù)庫有兩種途徑:一種是通過ODBC驅動程序,另一種是通過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的改進,而是采用了一種全新的技術。主要表現(xiàn)在以下3個方面: ADO.NET不是采用ActiveX技術,而是與.NET框架緊密結合的產物。 ADO.NET包含對XML標準的完全支持,這對于跨平臺交換數(shù)據(jù)具有重要的意義。 ADO.NET既能在與數(shù)據(jù)源連接的環(huán)境下工作,又能在斷開與數(shù)據(jù)源連接的條件下工作。ADO.NET 提供了面向對象的數(shù)據(jù)庫視圖,并且在ADO.NET對象中封裝了許多數(shù)據(jù)庫屬性和關系。最重要的是,ADO.NET 通

15、過很多方式封裝和隱藏了很多數(shù)據(jù)庫訪問的細節(jié)。可以完全不知道對象在與 ADO.NET 對象交互,也不用擔心數(shù)據(jù)移動到另外一個數(shù)據(jù)庫,或者從另一個數(shù)據(jù)庫獲得數(shù)據(jù)的細節(jié)問題。ADO.NET架構如圖11.8所示。數(shù)據(jù)集是實現(xiàn)ADO.NET斷開式連接的核心,從數(shù)據(jù)源讀取的數(shù)據(jù)先緩存到數(shù)據(jù)集中,然后被程序或控件調用。數(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架構總覽重慶IT論壇 11.2.1 數(shù)據(jù)庫的

16、連接方式5JDBC數(shù)據(jù)庫接口JDBC(Java Data Base Connectivity)是Java Soft公司開發(fā)的,一組Java語言編寫的用于數(shù)據(jù)庫連接和操作的類和接口,可為多種關系數(shù)據(jù)庫提供統(tǒng)一的訪問方式。通過JDBC完成對數(shù)據(jù)庫的訪問包括4個主要組件:Java應用程序、JDBC驅動管理器、驅動器和數(shù)據(jù)源。在JDBC API中有兩層接口:應用程序層和驅動程序層,前者使開發(fā)人員可以通過SQL調用數(shù)據(jù)庫和取得結果,后者處理與具體數(shù)據(jù)庫驅動程序的所有通信。使用JDBC接口對數(shù)據(jù)庫操作有如下優(yōu)點: .JDBC API與ODBC十分相似,有利于用戶理解; 使編程人員從復雜的驅動器調用命令和函

17、數(shù)中解脫出來,而致力于應用程序功能的實現(xiàn); JDBC支持不同的關系數(shù)據(jù)庫,增強了程序的可移植性。使用JDBC的主要缺點:訪問數(shù)據(jù)記錄的速度會受到一定影響,此外,由于JDBC結構中包含了不同廠家的產品,這給數(shù)據(jù)源的更改帶來了較大麻煩。6數(shù)據(jù)庫連接池技術對于網絡環(huán)境下的數(shù)據(jù)庫應用,由于用戶眾多,使用傳統(tǒng)的JDBC方式進行數(shù)據(jù)庫連接,系統(tǒng)資源開銷過大成為制約大型企業(yè)級應用效率的瓶頸,采用數(shù)據(jù)庫連接池技術對數(shù)據(jù)庫連接進行管理,可以大大提高系統(tǒng)的效率和穩(wěn)定性。重慶IT論壇 11.2.2 客戶/服務器(C/S)模式對于一般的數(shù)據(jù)庫應用系統(tǒng),除了使用數(shù)據(jù)庫管理系統(tǒng)外,需要設計適合普通人員操作數(shù)據(jù)庫的應用程序

18、。目前,流行的開發(fā)數(shù)據(jù)庫應用程序的工具主要包括Visual BASIC,Visual C+,Visual FoxPro,Delphi,PowerBuilder等。數(shù)據(jù)庫應用程序與數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)之間的關系如圖11.9所示。圖11.9 數(shù)據(jù)庫應用程序與數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)之間的關系 重慶IT論壇 11.2.3 瀏覽器/服務器(B/S)模式基于Web的數(shù)據(jù)庫應用采用瀏覽器/服務器模式,也稱B/S結構。第一層為瀏覽器,第二層為Web服務器,第三層為數(shù)據(jù)庫服務器。瀏覽器是用戶輸入數(shù)據(jù)和顯示結果的交互接口,用戶在瀏覽器窗體中輸入數(shù)據(jù),然后將窗體中的數(shù)據(jù)提交并發(fā)送到Web服務器,Web服務器應用程

19、序接受并處理用戶的數(shù)據(jù),通過數(shù)據(jù)庫服務器,從數(shù)據(jù)庫中查詢需要的數(shù)據(jù)(或把數(shù)據(jù)錄入數(shù)據(jù)庫)送Web服務器,Web服務器把返回的結果插入HTML頁面,傳送到客戶端,在瀏覽器中顯示出來,如圖1.10所示。圖11.10 瀏覽器/服務器結構重慶IT論壇 11.3 創(chuàng)建應用系統(tǒng)數(shù)據(jù)庫11.3.1 學生成績數(shù)據(jù)庫表結構學生成績數(shù)據(jù)庫XSCJ使用的表結構如下。1學生信息表(XS)學生信息表(XS)存放學生的基本信息。 學生的基本信息表結構字段說明見表11.1。表11.1 學生的基本信息表字段說明字 段 名XHXMXBZYCSSJZXFBZZP項目學號姓名性別專業(yè)名出生時間總學分備注照片2課程信息表(KC)課程

20、信息表(KC)存放課程的基本信息,課程的基本信息表結構字段說明見表11.2。表11.2 課程的基本信息表字段說明字 段 名KCHKCMLBXQXSXF項目課程號課程名類別開課學期學時學分重慶IT論壇 11.3.1 學生成績數(shù)據(jù)庫表結構3學生課程成績表(XSKE)學生課程成績表(XSKE)存放學生課程的成績信息,學生課程的成績表結構字段說明見表11.3。表11.3 學生課程的成績表字段說明字 段 名XHKCHCJXF項目學號課程號成績學分重慶IT論壇 11.3.2 學生成績數(shù)據(jù)庫數(shù)據(jù)樣本1學生信息表(表名XS)數(shù)據(jù)樣本2課程表(表名KC)數(shù)據(jù)樣本課程號(KCH)課程名(KCM)開課學期(XQ)學

21、時(XS)學分(XF)101計算機基礎1805102程序設計與語言2684206離散數(shù)學4684208數(shù)據(jù)結構5684209操作系統(tǒng)6684210計算機原理5855212數(shù)據(jù)庫原理7684301計算機網絡7513302軟件工程7513重慶IT論壇 11.3.2 學生成績數(shù)據(jù)庫數(shù)據(jù)樣本3學生與課程表(表名XS_KC)數(shù)據(jù)樣本學號(XH)課程號(KCH)成績(CJ)學號(XH)課程號(KCH)成績(CJ)學號(XH)課程號(KCH)成績(CJ)081101101800811071017808111120676081101102780811071028008111310163081101206760

22、811072066808111310279081103101620811081018508111320660081103102700811081026408120110180081103206810811082068708120210165081104101900811091016608120310187081104102840811091028308120410191081104206650811092067008121010176081102102780811101019508121610181081102206780811101029008121810170081106101650811

23、102068908122010182081106102710811111019108122110176081106206800811111027008124110190重慶IT論壇 11.4 VB/SQL Server學生成績管理系統(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ù)庫管理器以ODBC方式連接SQL Server。(1)創(chuàng)建ODBC數(shù)據(jù)源首先在“控制面板”的“管理工具”中創(chuàng)建ODBC數(shù)據(jù)源,方法如下。 在“控制面板”的“管理工具”中選擇“ODBC數(shù)據(jù)源”圖標雙擊,出現(xiàn)

24、如圖11.11所示的接口,在圖中單擊“添加”按鈕,進入如圖11.12所示的接口。 圖11.11 ODBC數(shù)據(jù)源接口 圖11.12 安裝數(shù)據(jù)源驅動程序的接口重慶IT論壇 11.4.1 連接SQL Server數(shù)據(jù)庫 在圖11.12的接口中,選擇安裝的驅動程序為“SQL Server”,單擊“完成”按鈕,出現(xiàn)如圖11.13所示的接口。圖11.13 安裝數(shù)據(jù)源驅動程序的接口重慶IT論壇 11.4.1 連接SQL Server數(shù)據(jù)庫 在圖11.13中,單擊“下一步”按鈕,出現(xiàn)如圖11.14所示的接口。圖11.14 選擇SQL Server服務器登錄認證方式的接口重慶IT論壇 11.4.1 連接SQL

25、Server數(shù)據(jù)庫 在圖11.14所示的接口中,選擇SQL Server服務器登錄認證方式,在此選擇為SQL Server認證方式,并輸入用戶登錄賬號和密碼,本例中以系統(tǒng)管理員身份sa登錄。執(zhí)行“下一步”,出現(xiàn)如圖11.15所示的接口。在如圖11.15所示的接口中,可更改默認的數(shù)據(jù)庫,在此設置默認數(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í)行結果如圖11.16所示。重慶IT論壇 11.4.1 連接SQL Server數(shù)據(jù)庫圖11.15 選擇默認數(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ù)進行查詢、插入、刪除、修改操作。在SQL文本框中,可輸入SQL語句,并單擊中“執(zhí)行”按鈕執(zhí)行。2通過OLE連接SQL Server數(shù)據(jù)庫數(shù)據(jù)環(huán)境設計器(Data Environment)

27、是用于建立數(shù)據(jù)庫連接和定義命令的圖形接口,下面介紹數(shù)據(jù)環(huán)境設計器下通過OLE建立與SQL Server數(shù)據(jù)庫的連接。(1)給工程添加數(shù)據(jù)環(huán)境設計器在VB接口的工程菜單中選擇“添加Data Environment”菜單項,出現(xiàn)如圖11.17所示的接口,在屬性窗口可修改默認的數(shù)據(jù)環(huán)境對象名;(2)通過OLE建立與數(shù)據(jù)庫的連接 在圖11.17的Connection對象圖標上右擊,出現(xiàn)一快捷菜單,選擇“屬性”菜單項,出現(xiàn)如圖11.18所示的接口。在圖11.18中,對于“提供者”選項卡,選擇“Microsoft OLE DB Provider for SQL Server”;對于“連接”選項卡,設置各項

28、連接屬性,“在服務器上選擇數(shù)據(jù)庫”下拉表中選擇指定的數(shù)據(jù)庫。如圖11.19所示,單擊“測試連接”按鈕,測試成功,則建立了與數(shù)據(jù)庫的連接。重慶IT論壇 11.4.1 連接SQL Server數(shù)據(jù)庫圖11.17 數(shù)據(jù)環(huán)境設計器的接口重慶IT論壇 11.4.1 連接SQL Server數(shù)據(jù)庫圖11.18 建立數(shù)據(jù)庫連接的接口重慶IT論壇 11.4.1 連接SQL Server數(shù)據(jù)庫圖11.19 設置數(shù)據(jù)庫連接屬性的接口重慶IT論壇 11.4.1 連接SQL Server數(shù)據(jù)庫3ADO Data和ADODB連接SQL Server數(shù)據(jù)庫(1)用可視ADODC控件連接數(shù)據(jù)庫 在VB選“工程”菜單“部件”

29、菜單項,系統(tǒng)打開“部件”對話框,如圖11.20所示。圖11.20 “部件”對話框重慶IT論壇 11.4.1 連接SQL Server數(shù)據(jù)庫選擇兩個ADO控件,他們是“Microsoft ADO Data Control 6.0”和“Microsoft DataGrid Control 6.0”。最后單擊“確定”按鈕,此后VB6.0工具欄中就增加了上述兩個控件的圖標。前者用于連接數(shù)據(jù)庫,后者用于以表格形式顯示數(shù)據(jù)庫表的內容。 在VB窗體中加入“Microsoft ADO Data Control 6.0”控件(簡稱ADODC),命名合適的名稱,如StuADO。 設置控件ADODC的Connect

30、ionString屬性。選擇該屬性,如圖11.21所示。單擊“”,系統(tǒng)打開對話框,如圖11.22所示。單擊“生成”,系統(tǒng)顯示“數(shù)據(jù)鏈接屬性”對話框,如圖11.23所示。選擇“連接”選項卡,進行設置。最后單擊“確定”按鈕。 設置ADODC的RecordSource屬性。打開“屬性頁”,如圖11.24所示。重慶IT論壇 11.4.1 連接SQL Server數(shù)據(jù)庫 圖11.21 設置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:表示命令為一個表名。4 - adCmdStoredProc:表示命令是一個存儲過程名。8 - adCmdUnknown:表示不確定命令類型。如果命令類型為表名或存儲過程名,則選擇對應的名稱,否則在命令文本中寫入SQL語句。最后單擊“確定”按鈕。數(shù)據(jù)源控件連接數(shù)據(jù)庫完成。此時可以直接訪問它,或者可以充當數(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 學生成績管理系統(tǒng)主接

33、口本系統(tǒng)是一個用VB實現(xiàn)的簡單的學生成績管理系統(tǒng),使用可視ADODC控件和ADODB對象來訪問后臺數(shù)據(jù)庫服務器,系統(tǒng)包含學生信息的查詢、學生信息的錄入修改刪除、學生成績的錄入修改。系統(tǒng)主頁面如圖11.25所示。主要功能:主接口,導航作用,單擊可進入操作窗口。創(chuàng)建過程:圖11.25 系統(tǒng)主接口重慶IT論壇 11.4.2 學生成績管理系統(tǒng)主接口1創(chuàng)建菜單創(chuàng)建菜單如圖11.26所示。圖11.26 創(chuàng)建菜單重慶IT論壇 11.4.2 學生成績管理系統(tǒng)主接2創(chuàng)建工具條創(chuàng)建工具條如圖11.27所示。圖11.27 創(chuàng)建工具條創(chuàng)建工具條包括:先創(chuàng)建工具條,創(chuàng)建ImageList控件,導入圖標,最后與菜單關聯(lián)。

34、功能包括:退出系統(tǒng)、學生信息查詢、學生信息修改、學生成績修改等。其index分別為3,6,7,8。重慶IT論壇 11.4.2 學生成績管理系統(tǒng)主接3主要代碼菜單Click的處理過程退出系統(tǒng)菜單Private Sub msQuitSys_Click() EndEnd Sub學生信息修改菜單Private Sub msStuInfo_Click() AddStu.ShowEnd Sub學生成績錄入菜單Private Sub msStuScore_Click() AddStuScore.ShowEnd Sub學生信息查詢菜單Private Sub msStuSearch_Click() StuSea

35、rch.ShowEnd Sub重慶IT論壇 11.4.2 學生成績管理系統(tǒng)主接 工具條Click的處理單擊工具條的圖標,分別對應調用菜單中的處理過程。Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)學生信息查詢圖標If Button.Index = 6 Then msStuSearch_ClickEnd If學生信息修改圖標If Button.Index = 7 Then msStuInfo_ClickEnd If 學生成績修改圖標If Button.Index = 8 Then msStuScore_Cl

36、ickEnd If退出系統(tǒng)圖標If Button.Index = 3 Then msQuitSys_ClickEnd IfEnd Sub重慶IT論壇 11.4.3 學生信息查詢目的與要求:了解使用控件如何顯示數(shù)據(jù)庫中的數(shù)據(jù),同時了解查詢的基本方法。程序接口:程序接口如圖11.28所示。圖11.28 程序接口重慶IT論壇 11.4.3 學生信息查詢主要功能:可以滿足簡單查詢的需要,什么條件也不輸則分頁顯示所有記錄,可以輸入條件進行簡單的模糊查詢,各條件之間為與的關系,在查詢的結果中移動記錄指針可以查看這個學生的具體選課信息。創(chuàng)建過程: 在窗體上放入學生信息查詢的ADODC和學生選課信息的ADOD

37、C、創(chuàng)建兩個學生信息顯示的DataGrid和學生選課信息顯示的DataGrid,并分別起名為StuADO,StuKCADO,StuDG,StuKCDG。放入學號Edit、姓名Edit和專業(yè)下拉列表框。為了美觀,StuKCADO隱藏在StuKCDG后面。 設置StuADO的ConnectionString屬性為:Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;User ID=sa;Initial Catalog=XSCJ;Data Source=microsof-cee903dcr 設置StuADO

38、的RecordSource屬性為:select * from XS,CXB where XS.XB=CXB.XB 設置StuDG的DataSource屬性為StuADO。重慶IT論壇 11.4.3 學生信息查詢 設置StuKCADO的ConnectionString屬性為:Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;User ID=sa;Initial Catalog=XSCJ;Data Source=microsof-cee903dcr 設置StuKCADO的RecordSource屬性為:

39、select * from XS,KC,XS_KCwhere XS.XH=XS_KC.XH and KC.KCH=XS_KC.KCH 設置StuKCDG的DataSource屬性為StuKCADO。實現(xiàn)過程:直接打開時由于控件屬性的設置,所以顯示所有記錄,當輸入查詢條件時單擊查詢按鈕,則調用MMakeSqlStr函數(shù)產生查詢字符串,然后重新設置控件的屬性,打開控件顯示查詢結果集。當專業(yè)改變時調用StuZY_Click函數(shù)來分別顯示所選的專業(yè)學生記錄,當在查詢結果學生信息記錄集中移動記錄指針時,可以在下面的選課表中看到學生選課的信息。重慶IT論壇 11.4.3 學生信息查詢主要代碼:根據(jù)學號、姓

40、名的輸入信息和專業(yè)的選擇生成模糊查詢的SQL字符串。Dim SqlStr As String 保存查詢字符串的Public Sub MakeSqlStr()產生查詢字符串的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 學生信息查詢 “專業(yè)”列表Click事件處理。顯示選擇當前專業(yè),并且符合學號、姓名查詢條件的學生的信息。Private Sub StuZY_Click()當專業(yè)改變時重新從數(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,并顯示到關聯(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 學生信息查詢 學生信息顯示的DataGrid的Click事件處理。以當前學生信息的學號作為查詢條件,從XS_KC表中查找當前學生的選課記錄,并顯示到學生課程顯示的StuKCDG中。Private Sub StuD

43、G_Click()單擊DataGrid中學生記錄,在下面顯示學生課程成績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注意:為了方便控件顯示學生性別,這里建立了一個表CXB(XB bit,XBM varchar(4)存放數(shù)據(jù)1,男;0,女,這樣把要顯示的表與其連接便可以顯示中文的性別,如有類似情況可參照此

44、方法。重慶IT論壇 11.4.4 學生信息修改目的要求:了解對數(shù)據(jù)庫操作的基本方法(增、刪、改)。程序接口:程序接口如圖11.29所示。圖11.29 程序接口重慶IT論壇 11.4.4 學生信息修改主要功能:用戶可以單擊下面的表格,用戶資料便反映到上面的控件中去,這時可以修改控件中的信息,單擊更新實現(xiàn)修改。如輸入一個新的學號,單擊更新按鈕實現(xiàn)記錄的添加,當選中當前記錄,單擊刪除按鈕時,則可以刪除此學生記錄,雙擊照片可以選擇學生照片,用于更新學生照片信息。創(chuàng)建過程: 在窗體上放入ADODC,DataGrid并起名為StuADO,StuDG。 設置StuADO的ConnectionString屬性

45、為:Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;User ID=sa;Initial Catalog=XSCJ;Data Source=microsof-cee903dcr 設置StuADO的RecordSource屬性為:select * from XS,CXB where XS.XB=CXB.XB 設置StuDG的DataSource屬性為StuADO。 在窗體上放入Image控件并起名為StuPic,用來顯示學生照片,選擇Image控件的DataSource屬性為StuADO,設置Dat

46、aField屬性為ZP,這就完成了Image控件和數(shù)據(jù)庫的綁定,記錄集移動時Image里面會顯示當前學生的照片。重慶IT論壇 11.4.4 學生信息修改 并在窗體上放入如圖所需控件。實現(xiàn)過程:當單擊DataGrid中的記錄時記錄集游標也跟著移動,在StuADO_MoveComplete事件中取出本條記錄顯示在上面的控件中,可以在控件中修改學生信息,雙擊選擇學生照片,按更新調用StuUpd_Click更新到數(shù)據(jù)庫中,當輸入新的學生記錄時按更新調用StuUpd_Click添加到數(shù)據(jù)庫中,也可以按刪除調用StuDel_Click函數(shù)刪除此記錄,系統(tǒng)會調用CheckXs觸發(fā)器來保持數(shù)據(jù)的參照完整性。1

47、SQL Server數(shù)據(jù)庫中定義的觸發(fā)器為了保證數(shù)據(jù)的參照完整性,在刪除學生時要檢查成績表中此學生的記錄,有就刪除。此過程放在觸發(fā)器中完成的。CREATE TRIGGER CheckXs ON dbo.XS FOR DELETE ASdelete from XS_KCwhere XH in( select XH from deleted)重慶IT論壇 11.4.4 學生信息修改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ù)據(jù)庫連接Private Sub Form_Load() SqlCon.Provider = SQLOLEDB SqlCon.Open Server=microsof-cee903dcr;DataBase=XSCJ;UID=wmx;PWD=1234;End Sub Form卸載時關閉數(shù)據(jù)庫連接Private Sub Form_Unload(Cancel As Integer) SqlCon.CloseEnd Sub重慶IT論壇 11.4.4 學生信息修改 學生信息記錄集記錄指針移

49、動完成事件代碼當單擊StuADO控件記錄移動圖標時產生,在這個過程中取出當前記錄中的學生信息,更新到學號、姓名等顯示控件中去,實現(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 學生信息修

51、改 “刪除”Click事件處理代碼從StuADO記錄集中取出當前記錄的學號,然后通過commad對象執(zhí)行delete語句來刪除當前的學生記錄,delete語句的調用會引起CheckXs觸發(fā)器的動作。Private Sub StuDel_Click(Index As Integer) Ret = MsgBox(是否要刪除 + StuADO.Recordset(XH)+ 號學生的記錄!,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 學生信息修改 “照片”Double Click事件的處理代碼打開對話框,給用戶選擇照片,并顯示在StuPic控件中,同時記錄下選擇的文件名和路徑到全局FileName變量中,給后面的更新學生信息使用。Private Sub StuPic_DblClick()顯示打開文件的公用對話框,選擇需要加入數(shù)據(jù)庫的圖

53、片CDlg.Filter = 位圖(*.bmp)|*.bmp|圖像(*.jpg)|*.jpgCDlg.ShowOpenFileName = CDlg.FileNameStuPic.Picture = LoadPicture(FileName)預覽圖片End Sub 讀取照片數(shù)據(jù)的函數(shù)代碼根據(jù)輸入的照片的文件名,打開文件讀入照片數(shù)據(jù)到數(shù)組中,然后通過AppendChunk函數(shù)把照片數(shù)據(jù)寫入到Field對象中去。 “更新”Click事件處理代碼 先查詢當前學號的學生信息,有當前學生的信息則修改相應的記錄字段,調用PicSaveToDB保存選擇的照片到記錄集中的“ZP”字段,更新記錄集到數(shù)據(jù)庫中去。

54、沒有則通過AddNew新增一條記錄,然后修改相應的記錄字段,并更新記錄集到數(shù)據(jù)庫中去,這里在調用PicSaveToDB前先要判斷FileName中是否選擇了照片,有才保存到數(shù)據(jù)庫中去。重慶IT論壇 11.4.5 學生成績的錄入目的要求:了解VB中調用SQL Server存儲過程的基本方法。Parameter參數(shù)對象的使用,視圖的使用,觸發(fā)器的使用。程序接口:程序接口如圖11.30所示。圖11.30 程序接口重慶IT論壇 11.4.5 學生成績的錄入主要功能:用戶可以選擇專業(yè),這時會列出本專業(yè)所有的學生學號,選擇課程,這時下面的DataGrid中會顯示相應課程的學生的成績和學分,可以在DataG

55、rid中輸入學生成績,修改單個學生成績,學分不允許修改,輸入成績,觸發(fā)器會自動添加相應的學分。創(chuàng)建過程: 參照上面學生信息修改窗口,姓名和學分Enable = FALSE。 置StuADO的RecordSource屬性為:select * from XS_KC_CJ,XS_KC_CJ為視圖名稱 DataGrid窗口屬性中AllowUpdate=Enable,這樣DataGrid修改才允許更新到視圖中去,從而更新到數(shù)據(jù)庫相應的表中。添加4列,分別選擇DataField為XH,XM,CJ,XF,如圖11.31、圖11.32所示。重慶IT論壇 11.4.5 學生成績的錄入圖11.31 窗口屬性1重慶

56、IT論壇 11.4.5 學生成績的錄入圖11.32 窗口屬性2重慶IT論壇 11.4.5 學生成績的錄入實現(xiàn)過程:在Form_Load事件中編寫專業(yè)、課程列表項的添加,各專業(yè)通過調用GetStuZY存儲過程來得到,同時檢索視圖中這個專業(yè)、選擇這門課程的學生,顯示在下面的DataGrid中,輸入成績,觸發(fā)器會自動添入學分,可以選擇學號,添加一個學生的某門課程的成績和選課到學生選課表中,刪除XS_KC表中刪除此學生此門課程的成績記錄。主要代碼:(1)SQL Server中定義的存儲過程 創(chuàng)建GetStuZY的存儲過程,從學生表中查詢專業(yè)信息:CREATE PROCEDURE-GetStuZYASs

57、elect DISTINCT ZY from XS 加DISTINCT,以返回不重復的專業(yè)GO重慶IT論壇 11.4.5 學生成績的錄入 創(chuàng)建顯示學生成績ShowScore存儲過程。查看此學生的這門課成績是否存在,在返回成績記錄,否則返回學號、姓名、專業(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檢查查詢記錄結果數(shù)目select XH,XM,ZY,KCM from XS where XH=XH返回學生記錄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 學生成績的錄入 創(chuàng)建插入學生成績的AddStuScore存儲過程。學生此門課程成績記錄如存在則修改成績,如不存在則添

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 學生成績的錄入 創(chuàng)建XS_KC_CJ視圖。用來在DataGrid中顯示學生、課程、成績的信息。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 學生成績的錄入 創(chuàng)建XS_KC的INSERT,UPDATE觸發(fā)器。當添加

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論