85
Recordset 物物 – 物物物物物物物物

Recordset 物件 – 存取資料庫的物件

Embed Size (px)

DESCRIPTION

Recordset 物件 – 存取資料庫的物件. 存取資料庫的基本概念. 資料庫是一種特殊組織結構的檔案 , 其存取方法與檔案迥然不同 , 在 ASP 網頁製作中 , 用來存取資料庫的物件統稱 ADO (ActiveX Data Objects) , 主要含有 Connection 、 Recordset 、及 Command 三種物件. 存取資料庫的基本概念. 存取資料庫的基本概念. Connection 物件:負責開啟或連結資料庫檔案 Recordset 物件:存取資料庫的內容 - PowerPoint PPT Presentation

Citation preview

Page 1: Recordset  物件  –  存取資料庫的物件

Recordset 物件 – 存取資料庫的物件

Page 2: Recordset  物件  –  存取資料庫的物件

存取資料庫的基本概念• 資料庫是一種特殊組織結構的檔案 , 其存

取方法與檔案迥然不同 , 在 ASP 網頁製作中 , 用來存取資料庫的物件統稱 ADO (ActiveX Data Objects), 主要含有 Connection 、 Recordset 、及 Command 三種物件

Page 3: Recordset  物件  –  存取資料庫的物件

存取資料庫的基本概念

Page 4: Recordset  物件  –  存取資料庫的物件

存取資料庫的基本概念• Connection 物件:負責開啟或連結資料庫

檔案• Recordset 物件:存取資料庫的內容• Command 物件:下達行動查詢指令給資

料庫 , 以及執行 SQL Server 的 Stored Procedure

Page 5: Recordset  物件  –  存取資料庫的物件

存取資料庫的準備工作

ADO 物件

dBase資料庫

dBase驅動程式

Access資料庫

Access驅動程式

SQL Server資料庫

SQL Server驅動程式

Oracle資料庫

Oracle驅動程式 ¡K

¡K

應用程式 應用程式 應用程式 ¡K

Page 6: Recordset  物件  –  存取資料庫的物件

安裝新版的 ODBC 及 OLE DB 驅動程式

Page 7: Recordset  物件  –  存取資料庫的物件

該選用 OLE DB 或 ODBC 驅動程式 ?

• OLE DB 驅動程式 , 除了版本較新之外 , 其執行效能優於 ODBC 驅動程式 , 所以當我們存取的是 Access 或 SQL Server 資料庫時 , 使用 OLE DB 驅動程式較佳

Page 8: Recordset  物件  –  存取資料庫的物件

使用筆者所提供的函數

Page 9: Recordset  物件  –  存取資料庫的物件

使用 Recordset 物件讀取資料的基礎

Page 10: Recordset  物件  –  存取資料庫的物件

讀取資料的基本敘述

Page 11: Recordset  物件  –  存取資料庫的物件

讀取抬頭的方法

學號 姓名 國文 英文 數學

rs (0) .Name rs (2) .Name rs (4) .Name

rs (1) .Name rs (3) .Name

Page 12: Recordset  物件  –  存取資料庫的物件

讀取資料內容的方法

850301 陳桶一 90 76 98

rs(0) rs(1) rs(2) rs(3) rs(4)

目前資料錄學號 姓名 國文 英文 數學

Page 13: Recordset  物件  –  存取資料庫的物件

改變目前資料錄的方法• MoveNext :將目前資料錄移到下一筆• MovePrevious :將目前資料錄移到上一筆• MoveFirst :將目前資料錄移到第一筆• MoveLast :將目前資料錄移到最後一筆

Page 14: Recordset  物件  –  存取資料庫的物件

改變目前資料錄的方法• BOF 屬性• EOF 方法

12

N

目前資料錄指標BOF 屬性 = True

EOF 屬性 = True

正常的指標範圍

Page 15: Recordset  物件  –  存取資料庫的物件

使用欄位名稱讀取資料

目前資料錄 850301 陳桶一 90 76 98

學號 姓名 國文 英文 數學

rs(" 學號 ") rs(" 姓名 ") rs(" 國文 ") rs(" 英文 ") rs(" 數學 ")= rs(0 ) = rs(1 ) = rs( 2) = rs(3 ) = rs(4 )

Page 16: Recordset  物件  –  存取資料庫的物件

定位式的資料讀取• 以上例說明 , 為避免當我們要讀取第 100

筆資料時 , 須先呼叫 MoveNext 100 次 , 可以先設定 AbsolutePosition 屬性

Page 17: Recordset  物件  –  存取資料庫的物件

資源與執行效能的考慮•利用 AbsolutePosition 屬性來設定目前資料錄的位置固然簡便 , 但卻耗損資源。筆者所提供的 GetMdbRecordset 函數可以節省記憶體 , 且開啟資料表所花費的時間也較少

Page 18: Recordset  物件  –  存取資料庫的物件

具備分頁瀏覽功能的網頁

Page 19: Recordset  物件  –  存取資料庫的物件

Pagev1.asp :分頁的技巧

Page 20: Recordset  物件  –  存取資料庫的物件

Pagev1.asp :分頁的技巧

Page 21: Recordset  物件  –  存取資料庫的物件

Pagev1.asp :分頁的技巧

Page 22: Recordset  物件  –  存取資料庫的物件

Pagev2.asp :在「位址」欄位中輸入頁次

Page 23: Recordset  物件  –  存取資料庫的物件

Pagev3.asp :頁次的瀏覽

Pagev3.asp 將增加這些的功能

Page 24: Recordset  物件  –  存取資料庫的物件

Pagev3.asp :頁次的瀏覽

Page 25: Recordset  物件  –  存取資料庫的物件

Pagev4.asp :增加「輸入頁次」欄位

Pagev4.asp 增加此一功能

Page 26: Recordset  物件  –  存取資料庫的物件

Pagev4.asp :增加「輸入頁次」欄位

Page 27: Recordset  物件  –  存取資料庫的物件

Pagev4.asp :增加「輸入頁次」欄位

Page 28: Recordset  物件  –  存取資料庫的物件

資料錄的新增、刪除、與修改• 刪除資料錄• 修改資料錄• 新增資料錄

Page 29: Recordset  物件  –  存取資料庫的物件

刪除資料錄及連續刪除多筆資料

Page 30: Recordset  物件  –  存取資料庫的物件

修改資料錄

Page 31: Recordset  物件  –  存取資料庫的物件

CancelUpdate 方法:取消更新的資料

• 除了呼叫 Update 方法或改變目前資料錄的位置以促使更新的資料立刻寫到資料庫之外 , Recordset 物件也允許我們在修改資料錄之後、而資料尚未寫入資料庫以前 , 取消更新的資料 , 讓資料錄回復原狀

Page 32: Recordset  物件  –  存取資料庫的物件

直接將想要修改的資料寫入資料庫

Page 33: Recordset  物件  –  存取資料庫的物件

新增資料錄

Page 34: Recordset  物件  –  存取資料庫的物件

直接將想要新增的資料寫入資料庫

Page 35: Recordset  物件  –  存取資料庫的物件

可以篩選與排序資料的 Select 指令

Page 36: Recordset  物件  –  存取資料庫的物件

Select 欄位串列 From 資料表

Page 37: Recordset  物件  –  存取資料庫的物件

欄位串列的規則• 凡是資料表裡的欄位都可以成為「欄位串

列」的一員 , 例如:

Page 38: Recordset  物件  –  存取資料庫的物件

欄位串列的規則• 欄位之順序可以自訂 , 不必與資料表裡的

欄位順序相同 , 例如:

• 欄位名稱若含有空白字元時 , 需以中括號 [ ] 括起來

Page 39: Recordset  物件  –  存取資料庫的物件

Select...From...Where 篩選條件式

Page 40: Recordset  物件  –  存取資料庫的物件

Select...From...Order By 欄位串列

Page 41: Recordset  物件  –  存取資料庫的物件

Select Top :限定選取資料錄的筆數

• 除了 Where 條件式可以篩選資料 , 減少網路流量之外 , 另外有一個方法則是在選取資料錄時 , 指定選取的最大筆數 , 如下:

• 配合 Top n 的使用 , 另一種語法如下:

Page 42: Recordset  物件  –  存取資料庫的物件

「 Where 條件式」變化式• 字串資料

• 萬用字元

Page 43: Recordset  物件  –  存取資料庫的物件

其他特殊的條件式• Where 欄位名稱 Between 值一 And 值

二• Where 欄位名稱 In ( 值一 , 值二 , …)

• Where 欄位名稱 Is Null / Where 欄位名稱 Is Not Null

• VB 函數的使用

Page 44: Recordset  物件  –  存取資料庫的物件

在程式中組合條件式

Page 45: Recordset  物件  –  存取資料庫的物件

Connection 物件與 Command 物件

Page 46: Recordset  物件  –  存取資料庫的物件

使用 Connection 物件的基礎• 資料庫存取雖然以 Recordset 物件為主角 ,

但若沒有先用 Connection 物件連結資料庫 , 空有 Recordset 物件 , 也無法存取資料庫中的內容

Page 47: Recordset  物件  –  存取資料庫的物件

資料庫的連結與參數的設定

Page 48: Recordset  物件  –  存取資料庫的物件

程式一:連結 mdb 資料庫

Page 49: Recordset  物件  –  存取資料庫的物件

程式二:連結 dbf 資料庫

Page 50: Recordset  物件  –  存取資料庫的物件

Access 資料庫與 dbf 檔案所定的參數比較

比較點 Access dbf

驅動程式 OLE DB

驅動程式ODBC

驅動程式Data Source mdb 檔案的

實際路徑( 無 )

SourceDB ( 無 ) 目錄的實際路徑

SourceType ( 無 ) DBF

Page 51: Recordset  物件  –  存取資料庫的物件

Mdb 資料庫的參數設定

Page 52: Recordset  物件  –  存取資料庫的物件

Dbf 檔案的參數設定

Page 53: Recordset  物件  –  存取資料庫的物件

Dbc 資料庫的參數設定

Page 54: Recordset  物件  –  存取資料庫的物件

Excel 檔案的參數設定

Page 55: Recordset  物件  –  存取資料庫的物件

Text 檔案的參數設定

Page 56: Recordset  物件  –  存取資料庫的物件

使用筆者提供的函數

Page 57: Recordset  物件  –  存取資料庫的物件

使用筆者提供的函數

Page 58: Recordset  物件  –  存取資料庫的物件

加密的 Mdb 資料庫

1.選取資料庫

2.下拉

3.選取

Page 59: Recordset  物件  –  存取資料庫的物件

加密的 Mdb 資料庫

Page 60: Recordset  物件  –  存取資料庫的物件

開啟加密的 mdb 資料庫• 為 mdb 資料庫設定密碼之後 , 須使用以

下函數方可加以開啟:– GetSecuredMdbConnection– GetSecuredMdbRecordset– GetSecuredMdbStaticRecordset

Page 61: Recordset  物件  –  存取資料庫的物件

使用 Excel 資料庫

含有三個工作表

Page 62: Recordset  物件  –  存取資料庫的物件

使用純文字檔• 使用純文字檔時 , 並不是所有純文字檔都

可以做為 Recordset 物件的資料 , 一般來說 , 以 CSVDelimited ( 或簡稱 CSV) 格式的純文字檔最適合

Page 63: Recordset  物件  –  存取資料庫的物件

CSVDelimited 格式的特點• 第一行表示「欄位」的名稱 , 以上的文字

檔轉入資料庫之後 , 將含有「學號」、「姓名」、「國文」、「英文」、「數學」等 5 個欄位

• 欄位之間以逗號 (,) 分開• 「文字」欄位必須使用雙引號框起來 , 例

如 " 陳桶一 "

Page 64: Recordset  物件  –  存取資料庫的物件

可設定文字格式的 schema.ini 檔案

• Text 驅動程式在讀取文字檔的過程中 , 會根據資料自動判斷欄位的資料類型 , 但也可能使得轉入的資料類型與長度未必符合我們的需求 , 可利用 schema.ini 來設定匯入的資料類型與長度

Page 65: Recordset  物件  –  存取資料庫的物件

schema.ini 的撰寫

[成績單 2.txt]Col1=¾Ç¸¹ LongCol2=©m¦W Char Width 10Col3=°ê¤å ShortCol4= ̂¤å ShortCol5=¼Æ¾Ç Short

文字檔名稱欄位的資料類型與長度

Page 66: Recordset  物件  –  存取資料庫的物件

資料類型名稱的差異

Page 67: Recordset  物件  –  存取資料庫的物件

以其他字元為分隔符號• 除了逗號 (,) 之外 , 被匯入的文字檔也可

以採用 Tab 字元或其他字元為欄位的分隔符號 , 但此時必須利用 schema.ini 進行設定

Page 68: Recordset  物件  –  存取資料庫的物件

以其他字元為分隔符號

Page 69: Recordset  物件  –  存取資料庫的物件

以其他字元為分隔符號

Page 70: Recordset  物件  –  存取資料庫的物件

固定長度的文字格式

850301850302850303850304850305850306

學號陳桶一姓名

黃光權胡生妙王為全李日正劉德菖

國文90

數學76

英文98

58 77 7541 14 3395 97 8759 66 5728 11 33

11 10 6 6 6

Page 71: Recordset  物件  –  存取資料庫的物件

其他注意事項• 純文字檔的 ODBC 驅動程式只提供讀取檔

案的功能 , 因此附屬於 Recordset 物件的 AddNew ( 新增 ) 、 Delete ( 刪除 ) 、及 Update ( 更新 ) 方法都不能呼叫

• Excel 驅動程式提供讀取、新增、及修改資料錄的功能 , 但「刪除」的功能則未提供

Page 72: Recordset  物件  –  存取資料庫的物件

其他注意事項• FoxPro 驅動程式 ( 可開啟 dbf 檔案及 db

c 資料庫 ) 所提供的功能較多 , 同時具備讀取、新增、刪除、及修改資料錄的功能 , 但仍有以下限制: (1) 新增資料錄時 , 不可以含有空欄位 (Null)

(2) 執行 SQL 指令時 , 不接受 VB 函數

Page 73: Recordset  物件  –  存取資料庫的物件

SQL Server OLE DB 驅動程式的參數設定

Page 74: Recordset  物件  –  存取資料庫的物件

SQL Server OLE DB 驅動程式的參數設定

• Data Source 參數 ( 安裝 SQL Server 的機器名稱 )

• User ID 及 Password 參數 ( 使用者 ID 及密碼 )

• Initial Catalog 參數

Page 75: Recordset  物件  –  存取資料庫的物件

筆者提供的函數

Page 76: Recordset  物件  –  存取資料庫的物件

無法連線可能的原因• SQL Server 是否已經啟動• SQL Server 資料庫上面是否建立有使用者

ID 及密碼• 您的使用者 ID 是否已經被授權使用某一

( 些 ) 資料庫 ( 表 )

• 您的機器是否已經登入 Server 主機

Page 77: Recordset  物件  –  存取資料庫的物件

注意授權金的問題• SQL Server 屬於 Server 等級的資料庫 ,

如果您提供的網頁會使用到 SQL Server 資料庫 , 這表示進入您網站的上網者都會因此使用到 SQL Server, 因此將 SQL Server 使用於網際網路也是必須付費的 , 而且付費者是網頁提供者 , 不是上網者

Page 78: Recordset  物件  –  存取資料庫的物件

Command 物件的建立

Page 79: Recordset  物件  –  存取資料庫的物件

Action Query 寫入資料的功能種類

• 刪除資料錄: Delete 指令• 更新資料錄: Update 指令• 新增資料錄: Insert Into 指令•建立新資料表: Select Into 指令

Page 80: Recordset  物件  –  存取資料庫的物件

Delete 指令:刪除資料錄• Delete 指令的基本語法如下:

Page 81: Recordset  物件  –  存取資料庫的物件

Update 指令:更新資料錄• Update 指令的語法要這麼下:

Page 82: Recordset  物件  –  存取資料庫的物件

Insert Into 指令:新增資料錄• Insert Into 指令的 2 種格式

Page 83: Recordset  物件  –  存取資料庫的物件

Select Into 指令:建立新資料表

Page 84: Recordset  物件  –  存取資料庫的物件

如何執行 Action Query 指令 ?

Page 85: Recordset  物件  –  存取資料庫的物件

為什麼需要 Action Query 指令 ?

• 對於單筆資料的刪除、更新、及新增來說 , 使用 Recordset 物件較方便 , 但若是大量資料的刪除、更新、及新增 , 則使用 Action Query 其執行效能較高