Transcript HTML

彰化縣政府補助辦理網頁設計資
料庫應用班
ASP與資料庫介紹
建國技術學院資管系
饒瑞佶
資料表的架構
屬性(Attribute)或
欄(Column)或
定義資料型態
定義域(Domain)或
欄位(Filed)
關聯資料表
屬性名稱
值組(Tuple)或
列(Row)
一筆資料Record
欄位
資料集
Recordset
資料列
資料表
資料庫
ASP資料庫三劍客
Connection物件:連結資料庫
RecordSet物件:連結資料表
Command物件:執行Action Query指令
ASP連結資料庫
使用Connection物件連結資料庫

設定連結引擎

設定資料庫位置
使用RecordSet物件連結資料表

設定資料來源的Connection

設定連結的資料表

使用Recordset來操作資料庫
ASP連結資料庫
步驟1
ASP
Connection物件
步驟2
資料庫
步驟3
Recordset物件
操作資料庫的資料,新增、刪除、修改與查詢
Connection物件
使用Server物件建立連結引擎(connection物件)
‘ 建立 Connection 物件與指定資料庫連結引擎
依資料不同而不同
Set conn = Server.CreateObject("ADODB.Connection")
Provider = "Provider=Microsoft.Jet.OLEDB.4.0;"
DBPath = "Data Source=" & Server.MapPath( “message.mdb" )
' 連結資料庫
conn.Open Provider & DBPath
RecordSet物件
使用Server物件建立Recordset物件
' 建立Recordset物件
Set rs = Server.CreateObject("ADODB.Recordset")
' 開啟資料來源, 參數二為 Connection物件
rs.Open “mymessage", conn, 2, 2 Cursor Type & Lock Type
定義操作資料庫時的方式
Cursortype
標示如何操作資料表
種類
值
說明
AdOpenForwardOnly
0
只可向前移動
AdOpenKeySet
1
可以自由移動
AdOpenDynamic
2
可動態更新編輯
AdOpenStatic
3
靜態更新編輯
LockType
標示如何鎖定資料表
種類
值
說明
AdOpenReadOnly
1
唯讀
AdOpenPessimistic
2
悲觀鎖定,取得資料表後所定
AdOpenOptimistic
3
樂觀鎖定,更新時才鎖定
AdOpenBatchOptimistic 4
批次樂觀鎖定
完整連接語法
‘ 建立 Connection 物件與指定資料庫連結引擎
Set conn = Server.CreateObject("ADODB.Connection")
Provider = "Provider=Microsoft.Jet.OLEDB.4.0;"
DBPath = "Data Source=" & Server.MapPath( “message.mdb" )
' 連結資料庫
conn.Open Provider & DBPath
變動部分
' 建立Recordset物件
Set rs = Server.CreateObject("ADODB.Recordset")
' 開啟資料來源, 參數二為 Connection物件
rs.Open “mymessage", conn, 2, 2
之後所有操作就靠rs了喔
使用RecordSet操作資料庫
顯示資料
顯示欄位名稱:recordset(編號).name
顯示欄位資料:recordset(編號)或
recordset(“欄位名稱”)
**這裡的recordset就是前面連接語法的rs
Recordset物件對資料庫的操作
操作項目:
• 資料錄的移動
• 資料錄的編輯
• 新增資料錄
• 刪除資料錄
• 修改資料錄
• 查詢資料錄
對象都是目前紀錄(Current Record)
資料的移動
目前紀錄在資料庫中的移動範圍:BOF~EOF
BOF
資料庫最上方
第一筆
第二筆
檢查點
..
..
最後一筆
EOF
資料庫最下方
克服超過BOF或EOF的錯誤
移動紀錄了使用Move方法外,還可以使用:
MoveFirst:移動指向到第一筆紀錄
MovePrevious:移動指向到前一筆紀錄
MoveNext:移動指向到下一筆紀錄
MoveLast:移動指向到最後一筆紀錄
所以當BOF發生時就使用MoveLast
當EOF發生時就使用MoveFirst
使用RecordSet操作資料庫
顯示資料
顯示欄位名稱:recordset(編號).name
顯示欄位資料:recordset(編號)或
recordset(“欄位名稱”)
如何顯示所有資料?
For敘述+recordset.Fields.count (顯示欄位名稱)
While敘述+資料的移動 (顯示資料內容)
分頁功能 (要注意cursor type & lock type)
新增資料
使用addnew + update方法
Recordset.addnew
recordset(“欄位名稱”)=欄位值
…
Recordset.update
注意Cursor Type & Lock Type
刪除資料
使用Delete:
刪除目前資料錄的資料
Recordset.delete
修改資料
使用update方法
recordset(“欄位名稱”)=欄位值
…
Recordset.update
注意Cursor Type & Lock Type
SQL
Structured Query Language
用以操縱資料庫的指令集
資料操作語言DML:操作資料錄
如DELETE, SELECT, UPDATE ….
資料定義語言DDL:建立資料表及資料欄位
如AFTER TABLE, CREATE TABLE ….
SELECT 敘述
• 對資料庫進行選取查詢的動作
SELECT 語法
SELECT 欄位 FROM 資料表
例如:SELECT 書名,分類,作者 FROM 書籍
SELECT * FROM 書籍
SELECT書籍.書名,書籍.分類,書籍.作者,作者.聯絡電話
FROM 書籍,作者
SELECT 語法 – 篩選記錄
SELECT 欄位 FROM 資料表 WHERE 條件
條件的設定與Filter屬性的設定方法相同
例如:SELECT 書名,作者 FROM 書籍 WHERE 分類=‘程式語言’
SELECT * FROM 書籍 WHERE 頁數>100
SELECT * FROM 作者 WHERE 生日 < #1999/1/31#
SELECT * FROM 書籍 WHERE 頁數>100 AND 頁數 < 500
SELECT * FROM 書籍 WHERE 頁數 BETWEEN 100 AND 500
SELECT 語法 – 排序
SELECT 欄位 FROM 資料表 ORDER BY 排序方式
排序方式:ASC遞增排序,DESC遞減排序
例如:SELECT * FROM 書籍 ORDER BY 頁數 ASC
SELECT * FROM書籍 ORDER BY 頁數 DESC
SELECT * FROM書籍 ORDER BY 頁數 ASC, 分類 DESC
SELECT 語法 – 篩選不重複的紀錄
SELECT DISTINCT 欄位 FROM 資料表
SELECT 語法 – 使用別名
SELECT 欄位1 AS 別名1,欄位2 AS 別名2 FROM 資料表
例如:SELECT 作者 AS 程式設計專家 FROM 書籍
SELECT 作者 FROM 書籍
資料內容一樣,顯示的欄位名稱不同
SELECT 語法 – 限定選取筆數
SELECT TOP n FROM 資料表
SELECT TOP n Percent FROM 資料表
例如:SELECT TOP 5 * FROM 書籍 ORDER BY 售價 DESC
SELECT 語法 – 統計函數
SELECT 統計函數 AS 別名 FROM 資料表
例如:SELECT AVG(售價) AS 平均售價 FROM 書籍
COUNT:統計資料比數
SUM:總合
MIN,MAX:求最小與最大
STDEV:取標準差
VAR:取變異數
SELECT 語法 – 分組統計
SELECT 欄位FROM 資料表 GROUP BY 欄位
例如:SELECT 分類, AVG(售價) AS 平均售價 FROM 書籍
GROUP BY 分類
SELECT 語法 – 分組統計再篩選
SELECT 欄位FROM 資料表 GROUP BY 欄位 HAVING 條件
例如:SELECT 分類, AVG(售價) AS 平均售價 FROM 書籍
GROUP BY 分類 HAVING AVG(售價) > 400
SELECT 語法 – 子集合查詢
SELECT 欄位FROM 資料表 WHERE 欄位 IN 子集合
例如:SELECT * FROM 書籍 WHERE 作者 IN (‘陳徹’,’陳臻’)
SELECT * FROM 書籍 WHERE 作者名 IN (SELECT 作者名
FROM 作者 WHERE 專長 = ‘程式設計’)