国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
VB課件

7  數(shù)據(jù)庫應(yīng)用程序設(shè)計(jì)方法 

本章以成績查詢系統(tǒng)為例,較系統(tǒng)地介紹了數(shù)據(jù)庫應(yīng)用程序的開發(fā)模式和基本方法。通過本章學(xué)習(xí),你應(yīng)該能夠達(dá)到如下學(xué)習(xí)目標(biāo):

1.掌握VB數(shù)據(jù)庫應(yīng)用程序的基本框架,以及SQL操縱數(shù)據(jù)的方法,能夠編寫Insert、Update、DeleteSelect語句,并將這些語句嵌入到VB程序中。

2.理解使用VB數(shù)據(jù)庫引擎操縱數(shù)據(jù)庫的方法,以及VB數(shù)據(jù)對象及數(shù)據(jù)庫訪問機(jī)制,能夠運(yùn)用ADO對象進(jìn)行程序設(shè)計(jì)

3.了解使用Excel輸出報(bào)表的方法。

4.了解“成績查詢”程序的設(shè)計(jì)過程,能夠讀懂并完善這類程序的部分語句。

 

一、相關(guān)知識

數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)、數(shù)據(jù)庫系統(tǒng)的概念在數(shù)據(jù)庫領(lǐng)域中是比較常見的。所謂數(shù)據(jù)庫是計(jì)算機(jī)內(nèi)有組織、可共享的數(shù)據(jù)的集合。而數(shù)據(jù)庫管理系統(tǒng)是用戶與操作系統(tǒng)之間的數(shù)據(jù)管理軟件,數(shù)據(jù)庫在建立、運(yùn)行和維護(hù)時(shí)由數(shù)據(jù)庫管理系統(tǒng)統(tǒng)一管理、統(tǒng)一控制。在數(shù)據(jù)庫管理系統(tǒng)之上有應(yīng)用系統(tǒng),例如用VB開發(fā)數(shù)據(jù)庫應(yīng)用程序,以供終端用戶使用。因此,比較嚴(yán)格的說法是數(shù)據(jù)庫系統(tǒng)由數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)、數(shù)據(jù)庫應(yīng)用系統(tǒng)、數(shù)據(jù)庫管理員和用戶構(gòu)成。但有時(shí)數(shù)據(jù)庫管理系統(tǒng)和數(shù)據(jù)庫系統(tǒng)常?;煊?。

1.關(guān)系數(shù)據(jù)庫概念

數(shù)據(jù)庫根據(jù)數(shù)據(jù)組織方式的不同而有所不同,即數(shù)據(jù)模型不同,較常見的數(shù)據(jù)模型有層次模型、網(wǎng)狀模型、關(guān)系模型。根據(jù)數(shù)據(jù)模型的不同,所建立的數(shù)據(jù)庫結(jié)構(gòu)也不同。目前使用最普遍的是關(guān)系數(shù)據(jù)庫。所謂關(guān)系數(shù)據(jù)庫是把數(shù)據(jù)組成一張或多張二維表格,即關(guān)系表,多張彼此關(guān)聯(lián)的表格群組形成數(shù)據(jù)庫,即關(guān)系數(shù)據(jù)庫。

在關(guān)系數(shù)據(jù)庫中,數(shù)據(jù)以數(shù)據(jù)二維表的形式存在,如表7.1、7.2所示。數(shù)據(jù)二維表(簡稱數(shù)據(jù)表)由行和列組成,數(shù)據(jù)表中每一行稱為一個(gè)記錄,每一列稱為一個(gè)字段,如表7.1中有4條記錄,每條記錄包含5個(gè)字段:學(xué)號(Sno),姓名(Sname),性別(Sex),年齡(Sage),所在系(Sdept)。關(guān)系模型要求每個(gè)字段數(shù)據(jù)類型相同,并且是不可再分的,如果某個(gè)字段能唯一地標(biāo)識這條記錄,則這個(gè)字段就被稱為主關(guān)鍵字或主碼(Key),如上表的學(xué)號(Sno)。

7.1 學(xué)生基本情況表(Student)

Sno

Sname

Sex

Sage

Sdept

0001

王磊

19

計(jì)算機(jī)科學(xué)系

0002

劉進(jìn)

20

中文系

0003

李波

21

土建系

0004

張建國

20

計(jì)算機(jī)科學(xué)系

 

7.2 選課表(sc)

Sno

Cno

grade

0001

001

82

0002

002

76

0003

003

80

0004

002

95

在關(guān)系數(shù)據(jù)庫中,我們用到了數(shù)據(jù)庫、數(shù)據(jù)表、字段、記錄等概念,小結(jié)如下:

?         關(guān)系:從用戶觀點(diǎn)看,一個(gè)關(guān)系對應(yīng)通常的一張二維表。

?         記錄:二維表中的每一行數(shù)據(jù)為一個(gè)記錄。如表7.1有4條記錄

?         字段:每一列稱為一個(gè)字段,每個(gè)字段都有一個(gè)名稱。如學(xué)生姓名是一個(gè)字段,它的名稱是Sname。

?         數(shù)據(jù)表:記錄的集合構(gòu)成一個(gè)二維表格,稱為數(shù)據(jù)表。如表7.1。

?         數(shù)據(jù)庫:多個(gè)相關(guān)的數(shù)據(jù)表的集合,構(gòu)成數(shù)據(jù)庫,每個(gè)數(shù)據(jù)庫都已文件的形式存儲在磁盤上

?         主碼:如果某個(gè)字段能夠唯一地標(biāo)識一條記錄,則稱此記錄為主碼,如表7.1中的學(xué)號(Sno)。

?         索引:索引是對某字段的內(nèi)容按大小進(jìn)行排序,然后對該字段索引進(jìn)行快速檢索便可找到相應(yīng)記錄。

 

2.數(shù)據(jù)庫管理系統(tǒng)概念

數(shù)據(jù)庫管理系統(tǒng)(DBMS)是用戶與操作系統(tǒng)之間的數(shù)據(jù)管理軟件系統(tǒng),對數(shù)據(jù)庫的各種管理與操作都是由數(shù)據(jù)庫管理系統(tǒng)進(jìn)行的,用戶在對數(shù)據(jù)庫進(jìn)行操作時(shí),只需向DBMS提出“需要做什么”的請求,不必了解“如何做”。DBMS根據(jù)用戶的請求,完成對數(shù)據(jù)庫的實(shí)際操作。主要包括:創(chuàng)建數(shù)據(jù)庫中的各種對象,如創(chuàng)建新表、索引等;對數(shù)據(jù)表中的數(shù)據(jù)進(jìn)行增加、修改和刪除等;數(shù)據(jù)庫的事務(wù)管理、并發(fā)控制、故障恢復(fù)、完整性控制及安全控制等。

數(shù)據(jù)庫管理系統(tǒng)與數(shù)據(jù)庫是密不可分的,每一種數(shù)據(jù)庫都由某一特定的數(shù)據(jù)庫管理系統(tǒng)進(jìn)行管理,所以數(shù)據(jù)庫管理系統(tǒng)也常常被稱為數(shù)據(jù)庫系統(tǒng)。常用的數(shù)據(jù)庫系統(tǒng)有Access、SQL Server 、Oracle等。

 

3.SQL語言

SQL是結(jié)構(gòu)化查詢語言(Structure Query Language)的縮寫。它是關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言,簡捷易學(xué),功能強(qiáng)大。它可以實(shí)現(xiàn)數(shù)據(jù)查詢、數(shù)據(jù)更新等多種功能。

1)數(shù)據(jù)查詢

SQL提供SELECT語句進(jìn)行數(shù)據(jù)庫的查詢,其一般格式為:

SELECT字段列表FROM表名WHERE條件GROUP BY 分組字段

HAVING分組條件ORDER BY字段

說明如下:

?         字段列表:字段可以是一個(gè)字段,也可以是多個(gè)字段,若是多個(gè)字段,字段之間用逗號分隔,如果要選擇某個(gè)表中的所有字段,可用“*”代替。

?         FROM子句:用于指定一個(gè)或多個(gè)表,如果所選的字段來自不同的表,則字段名前應(yīng)加表名前綴。

?         WHERE子句:用于構(gòu)造查詢條件。

?         GROUP BY與HAVING子句:共同用于對結(jié)果集進(jìn)行分組過濾處理。它能把在指定字段列表中有相同值的記錄合并成一條記錄。

1.查詢student表(表7.1)中的所有學(xué)生的學(xué)號與姓名。

分析:查詢所有學(xué)生的學(xué)號與姓名,無查詢條件。

SQL語句如下:

SELECT Sno,Sname FROM student

查詢結(jié)果如表7.3所示。

 

7.3 查詢結(jié)果

Sno

Sname

0001

王磊

0002

劉進(jìn)

0003

李波

0004

張建國

此操作在關(guān)系數(shù)據(jù)庫中稱投影操作,投影操作返回二維表格的若干列。

 

2.查詢student表中所有計(jì)算機(jī)科學(xué)系的學(xué)生。

分析:應(yīng)用WHERE子句構(gòu)造查詢條件,使其滿足能夠查詢Student表中所有計(jì)算機(jī)科學(xué)系的學(xué)生。

SQL語句如下:

SELECT * FROM WHERE student.Sdept= '計(jì)算機(jī)科學(xué)系'

查詢結(jié)果如表7.4所示。

7.4 查詢結(jié)果

Sno

Sname

Sex

Sage

Sdept

0001

王磊

19

計(jì)算機(jī)科學(xué)系

0004

張建國

20

計(jì)算機(jī)科學(xué)系

此操作在關(guān)系數(shù)據(jù)庫中稱選擇操作,選擇操作返回二維表格的若干行。

 

3.查詢選修了002號課程的學(xué)生姓名和成績,并按由高到低排列。

分析:學(xué)生姓名在表student中,成績在表sc中,顯然所需信息需要從兩個(gè)表中獲得。按分?jǐn)?shù)由高到低排列需要用關(guān)鍵字DESC,反之,用ASC(默認(rèn)) 。

SQL語句如下:

SELECT student.Sname,sc.grade

FROM student,sc

WHERE student.Sno=sc.Sno and sc.Cno= "002"

ORDER BY grade DESC

查詢結(jié)果如表7.5所示。

7.5查詢結(jié)果

Sname

grade

張建國

95

劉進(jìn)

76

此操作在關(guān)系數(shù)據(jù)庫中稱連接操作,連接操作是通過某個(gè)關(guān)鍵字將兩個(gè)表連接起來。本例中是通過Sno關(guān)鍵字將表student和sc連接起來。在SELECT語句中,特別要指明某個(gè)字段來源于哪個(gè)表,如student.Sname表示Sname這個(gè)字段來源于student表。

 

2)數(shù)據(jù)更新

SQL中數(shù)據(jù)更新包括插入數(shù)據(jù)、修改數(shù)據(jù)和刪除數(shù)據(jù)三種語句。

①插入數(shù)據(jù)

  語句格式為:

   INSERT INTO 表名(屬性列)VALUES(值列)

4.在選課表中插入一條選課信息:學(xué)號為0005的學(xué)生選了003號課程,成績?yōu)?5。

SQL語句如下:

INSERT INTO sc(Sno,Cno,grade)VALUES('0005', ' 003', '85')

②修改數(shù)據(jù)

語句格式為:

   UPDATE 表名SET 列名=值,××× WHERE 條件

注意:如果條件為空,則修改所有的字段。

5.將學(xué)生表中學(xué)號為0002的學(xué)生名字改為趙月,所屬系改為“電子信息工程系”。

SQL語句如下:

  UPDATE student SET Sname='趙月', Sdept= '電子信息工程系'WHERE Sno= '0002'

 

③刪除數(shù)據(jù)

語句格式為:

  DELETE FROM 表名 WHERE 條件

注意:如果條件為空,則刪除所有的記錄。

6.刪除學(xué)號為0002的同學(xué)選002號課的記錄。

SQL語句如下:

   DELETE FROM sc WHERE sno= '0002'and cno='002'

7.刪除計(jì)算機(jī)科學(xué)系同學(xué)所有的選課記錄。

在選課表sc中,沒有計(jì)算機(jī)科學(xué)系的信息,必須在student表中查詢。這時(shí)需要用到謂詞IN所帶的子查詢。

SQL語句如下:

DELETE FROM sc WHERE sno IN

   (SELECT Sno FROM student WHERE Sdept = '計(jì)算機(jī)科學(xué)系'

 

二、本章重要知識點(diǎn)

1.三種數(shù)據(jù)庫類型

VB 將數(shù)據(jù)庫分為三種類型:本地?cái)?shù)據(jù)庫、外部數(shù)據(jù)庫、遠(yuǎn)程數(shù)據(jù)庫

本地?cái)?shù)據(jù)庫:主要指Microsoft Access數(shù)據(jù)庫。

外部數(shù)據(jù)庫:是指采用ISAM的數(shù)據(jù)庫,如dBase,F(xiàn)oxpro,Paradox,Excel等。

遠(yuǎn)程數(shù)據(jù)庫:指SQL Server Oracle DB2等大型數(shù)據(jù)庫。

 

2.VB數(shù)據(jù)庫訪問機(jī)制

VB 通過數(shù)據(jù)引擎訪問數(shù)據(jù)庫

 數(shù)據(jù)引擎:數(shù)據(jù)庫應(yīng)用程序?qū)儆谝环N非常典型的前后臺軟件結(jié)構(gòu),前臺是我們的VB程序,后臺則是數(shù)據(jù)庫管理系統(tǒng),如SQI Server。而前后臺通信的主要機(jī)制稱為數(shù)據(jù)庫引擎。

常用的數(shù)據(jù)庫引擎有三種:Jet引擎、ODBC、OLE DB。

   

 3.數(shù)據(jù)對象

VB采用面向?qū)ο蠹夹g(shù),將三種數(shù)據(jù)庫引擎封裝成三種訪問數(shù)據(jù)庫的對象,即DAO、RDO、ADO。

DAO對象:可以使用Jet引擎和ODBC兩種方式訪問數(shù)據(jù)庫。

RDO對象:一般采用ODBC訪問數(shù)據(jù)庫。

ADO對象:主要采用OLE DB訪問數(shù)據(jù)庫,也支持ODBC訪問,但需要經(jīng)過OLE DB轉(zhuǎn)接。

 

4.ADO對象模型

ADO 是一種基本OLE DB 的 模型。

ADO對象模型共包含7個(gè)對象。它們是Connection、Command、Recordset、Field、Parameter、Property和 Error。其中最常用的是前4個(gè)對象。

 

5. 數(shù)據(jù)庫應(yīng)用程序的大致框架

SQL語句嵌入到VB語言中,采用ADO數(shù)據(jù)對象模型開發(fā)數(shù)據(jù)庫應(yīng)用程序。

(1) 連接后臺數(shù)據(jù)庫

VB應(yīng)用程序中主要用Connection對象連接后臺數(shù)據(jù)庫,基本方法是:

l         首先聲明并創(chuàng)建對象

  Dim ADOcn As Connection       '聲明對象

Set ADOcn = New Connection    '創(chuàng)建新對象

或上述兩條語句直接寫成

Dim ADOcn As New Connection

l         建立數(shù)據(jù)庫連接

一般通過下列語句完成與數(shù)據(jù)庫的連接“

ADOcn.Open 連接字符串

語句中的連接字符串可以通過自動(dòng)生成“連接字符串 “的方法來實(shí)現(xiàn),見教材184-185頁。

(2)對數(shù)據(jù)庫中的數(shù)據(jù)表進(jìn)行更新操作

更新操作包括增加、刪除和修改,這些語句的特點(diǎn)是沒有返回的結(jié)果集,它們僅僅向數(shù)據(jù)庫發(fā)出一條更新命令??梢岳?span lang="EN-US">Connection對象的execute方法來完成。語法如下:

ADOcn.Execute SQL語句字符串

為了提高程序的可讀性和易維護(hù)性,通常采用如下方法完成上述操作:

'聲明一個(gè)字符串變量

 Dim strSQL As String

 '拼寫Insert、Delete、Updata結(jié)構(gòu)化查詢語句

例如:

 strSQL = "Delete From 學(xué)生成績表"

 strSQL = strSQL + "Where 學(xué)號=" + "'+Combol.Text+'"

 

  '執(zhí)行SQL語句

  ADOcn.Execute strSQL

 (3) 對數(shù)據(jù)表進(jìn)行查詢(Select)操作

    記錄集Recordset對象是數(shù)據(jù)表的查詢結(jié)果,通過使用Recordset進(jìn)行Select語句的操作?;臼褂梅椒ㄈ缦拢?/span>

    '聲明一個(gè)新的Recordset對象

Dim ADOrs As New Recordset

ADO鏈接對象建立關(guān)聯(lián)

ADOrs.ActiveConnection = ADOcn

'執(zhí)行Select操作

ADOrs.Open "Select*From 學(xué)生成績表"

'關(guān)閉記錄集對象

ADOrs.Close

4)顯示記錄集中的數(shù)據(jù)

①在TextBox中顯示

Text1.Text = ADOrs.Fields("學(xué)號")

②讀取到變量中

Dim strNo As String

strNo = ADOrs.Field("學(xué)號")

Text1.Text = strNo

③在Grid控件中以二維表的形式顯示

采用MSFlexGrid控件進(jìn)行顯示,一般步驟是:

l         清空數(shù)據(jù)

l         設(shè)置標(biāo)題欄

l         打開記錄集

l         使用循環(huán)將記錄集中的數(shù)據(jù)添加到Grid中去。

 

8.假設(shè)在d盤根目錄中存在一個(gè)名為“student.mdb”的Access數(shù)據(jù)庫,其中包含一張名為“學(xué)生基本情況”的數(shù)據(jù)表,表中存放了學(xué)生的基本信息,如圖1所示。

現(xiàn)在要求利用VB編寫一個(gè)數(shù)據(jù)庫記錄增加程序,程序的運(yùn)行界面如圖2所示,基本邏輯是:分別在Text1、Text2Text3中輸入學(xué)號、姓名、籍貫信息,然后點(diǎn)擊“保存”按鈕(Command1)將該記錄添加到數(shù)據(jù)庫中。如果數(shù)據(jù)庫中已經(jīng)存在相同的學(xué)號信息,則程序應(yīng)提示用戶“記錄已存在,請重新輸入”,并將焦點(diǎn)置于Text1上,等待用戶修改或重新輸入。當(dāng)點(diǎn)擊退出按鈕(Command2)時(shí)關(guān)閉本窗體。

 

1Access創(chuàng)建的學(xué)生基本情況數(shù)據(jù)表

查詢程序運(yùn)行界面

Private ADOcn As New Connection

Private Sub Form_Load()

     [1]         "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\student.mdb"

End Sub

Private Sub Command1_Click()

  Dim strSQL As  [2]           

  Dim ADOrs As New Recordset

  ADOrs.ActiveConnection = [3]            

strSQL = "Select * from 學(xué)生基本情況一覽表 Where 學(xué)號=" + " ' " + [4]+ " ' "

  ADOrs.Open   [5]           

   If Not ADOrs.EOF Then

     MsgBox "學(xué)號已經(jīng)存在,請重新輸入!", vbOKOnly, "信息提示"

     Text1.SetFocus

   Else

     strSQL = "Insert Into 學(xué)生基本情況一覽表(學(xué)號,姓名,籍貫) "

     strSQL = strSQL + " Values ( '" + Text1 + " ','" + Text2 + "','" + Text3 + " ')"

         [6]       .Execute strSQL

        MsgBox "添加成功!", vbOKOnly, "信息提示"

    [7]               

End Sub

 

Private Sub Command2_Click()

    Unload Me

End Sub

 

答案:

   [1] ADOcn.Open

   [2] string

   [3] ADOcn

   [4] Text1

[5] strSQL

   [6] ADOcn

   [7] End If

 

6.數(shù)據(jù)控件、可視化數(shù)據(jù)管理器、報(bào)表設(shè)計(jì)的基本概念

    見教材。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
《Visual Basic程序設(shè)計(jì)教程(第3版)》第12章 數(shù)據(jù)庫編程
VB數(shù)據(jù)庫編程技術(shù)
第10章 Visual Basic數(shù)據(jù)庫編程
數(shù)據(jù)庫應(yīng)用課程設(shè)計(jì)
VB和數(shù)據(jù)庫
計(jì)算機(jī)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服