31
Visual Basic 程程程程 程程 程程程 [email protected] 程程程程程程程程程程程程程

Visual Basic 程式設計

  • Upload
    brone

  • View
    35

  • Download
    1

Embed Size (px)

DESCRIPTION

Visual Basic 程式設計. 講師:戴志華 [email protected] 國立台灣大學電機工程研究所. 第十五章 資料庫 III 與軟體開發流程. 使用 ADO 物件. 優點: 使用範圍廣 較有彈性 Project/References/Microsoft ActiveX Data Object 2.5 Library. ADO 物件模型. Connection 物件 Recordset 物件 Command 物件. Connection. 表示一個通往資料來源的開啟連線 資料庫 ODBC 來源 - PowerPoint PPT Presentation

Citation preview

Visual Basic 程式設計

講師:戴志華[email protected]國立台灣大學電機工程研究所

第十五章 資料庫 III 與軟體開發流程

3

使用 ADO 物件

優點 : 使用範圍廣 較有彈性Project/References/Microsoft ActiveX Data Object 2.5 Library

4

ADO 物件模型

Connection 物件Recordset 物件 Command 物件

5

Connection

表示一個通往資料來源的開啟連線 資料庫 ODBC 來源 其他 OLE DB 提供者存在的來源

6

Connection(cont’d)

Dim 變數名 As New Connection方法: Open ConnectionString

ConnectionString 可參考 Adodc與資料庫建立連線

Close關閉連線

Execute 命令 , 影響的記錄數量 , 命令種類

7

Connection(cont’d)

Dim con As New ConnectionDim conStr As StringDim numRec As IntegerconStr=“Provider=Microsoft.Jet.OLEDB.4.0;DataSource=C:\class13.mdb;Mode=Read|Write;Persist Security Info=False”con.Open conStrcon.Execute(delete * from student where name like ‘王 %’)con.Close

8

Connection(cont’d)

Provider : OLE DB Provider 名稱Data Source: 所要連結的 SQL Server 或 MDB 資料的名稱DSN : 註冊在現行機器上的 ODBC 來源名稱Password : 使用者密碼User ID : 使用者名稱Persist Security Info : 若 ADO 將使用者 ID 與密碼存在 Data Link 中的話,此值為 True 。

9

「全部」頁籤顯示所選取的 OLE DB Provider 的所有屬性

10

Connection(cont’d)Dim con As New ConnectionDim conStr As StringDim numRec As IntegerDim rs As New RecordSetconStr=“Provider=Microsoft.Jet.OLEDB.4.0;Data source=C:\testdb.mdb;Mode=Read|Write;Persist Security Info=False”con.Open conStrSet rs=con.Execute(“select * from student where name like ‘王 %’”, numRec, adCmdText)con.Close

若 SQL 用 Select ,會產生 RecordSet 物件

表示被此命令所影響的記錄筆數 Command

Type

11

RecordSet

資料庫取得的資料放在 recordset 中

屬性BOF 是否在 Recordset 的頭EOF 是否在 Recordset 的尾Fields Recordset 中的資料

Id Name

00001 李小輝00002 連阿戰

cursor

12

RecordSet(cont’d)

使用 Connection.Execute 產生的RecordSet 的 Cursor 不能向前移方法MoveFirst Cursor 移到最前

面MoveLast Cursor 移到最後

面MoveNext Cursor 向後移MovePrevious Cursor 向前移

經驗,不一定永遠對

13

RecordSet(cont’d)Dim con As New ConnectionDim conStr As StringDim rs As RecordsetconStr = “………………………………………”con.Open conStrSet rs = con.Execute("select * from student” _ , , adCmdText)Print rs.Fields(0)rs.MoveNextPrint rs.Fields(”name")rs.MovePreviousPrint rs.Fields("id")

Error

14

RecordSet(cont’d)Dim con As New ConnectionDim conStr As StringDim rs As New RecordsetconStr = “……………………………………”con.Open conStrrs.ActiveConnection = conrs.CursorType = adOpenStaticrs.Open "select * from student"Print rs.Fields(0)rs.MoveNextPrint rs.Fields("au_id")rs.MovePreviousPrint rs.Fields("au_id")

ok

15

CursorType

0-adOpenForwardOnly Recordset只能向下移動而已1-adOpenKeyset

Recordset的 Cursor可以自由的上下移動2-adOpenDynamic

3-adOpenStatic

16

Locktype

adLockReadOnly Recordset 唯讀,無法接受資料異動

adLockOptimistic Recordset 可接受資料異動

17

CursorLocation

adUseServeradUseClient

18

軟體開發流程需求分析

系統分析

系統設計

系統實作

系統測試

系統維護

瀑布模型

19

軟體開發流程 (cont’d)

20

案例探討

圖書管理系統使用 Biblio.mdb功能 查詢書籍 , 作者與出版社 新增書籍 新增作者 刪除書籍

21

需求分析

目的 了使用者真正的需求具體目標 取得 Use Cases ( 使用案例 )Use cases 使用者操作系統完成某一項任務,系統所做的一連串事

22

需求分析

查詢書籍 輸入書籍的 ISBN ,取得書籍資料 輸入書籍的名稱,取得書籍資料查詢作者 輸入作者代碼,取得作者資料 輸入作者姓名,取得作者資料決定操作介面……

23

系統分析

操作介面

VBCode 資料庫

SQL command

24

系統分析 (cont’d)Command3_Click

UI Code Database

Select ……

RecordSet顯示第一筆

Command2_Click

顯示第二筆

25

系統設計

四個副函式 Command1_Click Command2_Click Command3_Click Display 顯示目前的記錄

26

系統設計 (cont’d)

Command3_Click() 與資料庫連線 產生 SQL query 把傳回的 RecordSet 存到記憶體中 中斷與資料庫的連線 顯示第一筆資料 ( 呼叫 display)

27

系統設計 (cont’d)

Command1_Click 顯示前一筆 ( 呼叫 display) 資料Command_Click 顯示後一筆 ( 呼叫 display) 資料

28

系統實作Private Sub Command3_Click() Dim con As New Connection Dim conStr As String Dim rs As New Recordset conStr = <<略 >> con.Open conStr rs.ActiveConnection = con rs.CursorType = adOpenStatic rs.Open <<略 >> records = rs.GetRows() recNo = rs.RecordCount index = 0 display con.CloseEnd Sub

29

系統實作 (cont’d)Dim records As VariantDim index As IntegerDim recNo As IntegerPrivate Sub display() Text1.Text = records(0, index) Text2.Text = records(1, index) Text3.Text = records(2, index)End SubPrivate Sub Command1_Click() If (index > 0) Then index = index - 1 display End IfEnd Sub

30

系統實作 (cont’d)

Private Sub Command2_click() If (index < recNo - 1) Then index = index + 1 display End IfEnd Sub

31

系統測試

利用 User Case 進行測試 輸入資料亂數選定

合法的資料錯誤的資料

如果有錯誤,重回設計或實作階段