麻辣家族討論版版's Archiver

小誌 發表於 2010-5-13 01:09

(ASP教學第14篇) 資料庫驅動程式 下篇

[color=DarkOrange][size=5][b]ADO物件群之Recordset物件[/b][/size][/color]
[color=Green][size=4][b]建立Recordset物件[/b][/size][/color]
    Recordset物件是負責瀏覽與操作從資料庫取出來的資料,其標準格式如下所示:
[attach]337[/attach]

上式中的『rs』(物件名)同樣是我們自訂的,沒有強制性的命名規定,不過,最好是取一個有意義的名字,以方便我們使用與記憶。
接著使用open方法來開啟資料表或執行Select指令。
參數設定如下:
[list]
[*]參數一(Source):此參數可為一個Command物件名稱、一段SQL指令、一個指定的資料表格名稱或是一個Stored Procedure;若指定為資料表名稱則開啟整個資料表,若使用Select指令則建立的Recordset物件內所存放的資料為選取資料錄的結果。
[*] 參數二(ActionConnection):recordset可透過此屬性連結connection物件,此參數可為Connection物件名稱或是一串包含『資料庫連結資訊(ConnectionString)』的字串參數。
[*] 參數三(CursorType):表以何種游標開啟資料,包含adOpenForwardOnly、adOpenKeyset、adOpenDynamic、adOpenStatic四種方式。
[*] 參數四(LockType):表採用何種Lock型態,包含adLockReadOnly、adLockPessimistic、adLockOptimistic、adLockBatchOptimistic四種型態。
[*] 參數五(Options):表對資料庫請求的型態,包含adCmdUnknow、adCmdText、adCmdTable、adCmdStoredProc四種參數。
[/list]


[color=Green][size=4][b]讀取Recordset物件資料[/b][/size][/color]
要讀取Recordset物件內的資料,就必須先了解資料表的結構!

[b][color=Red]Field物件:[/color][/b]資料庫中最小的資料單位為『欄位』,在ADO物件群中相對應的就是Field物件,Filed物件擁有三個屬性,分別為『Name』(欄位標題)、『Value』(欄位資料內容)、『Type』(欄位資料型態,例如:數字、文字、日期....等等)等三種:
[attach]338[/attach]

[color=Red][b]Fields 集合物件:[/b][/color]Field物件集合就是Fields集合物件,對比於資料庫的組織結構來看,欄位的集合就構成『資料錄』:
[attach]339[/attach]

了解了Recordset物件內的基本結構,我們可以清楚的知道Fields集合物件基本上就是一個『陣列』,因此我們就可以利用陣列的特性,也就是可以利用『Count』屬性配合『For』迴圈敘述來列舉出Field物件!
[attach]340[/attach]


另外我們還可以搭配下方屬性MoveFirst及BOF將所有資料讀取
[color=Red][b]改變目前資料表的方法[/b][/color]
[list]
[*]MoveNext:移至下一筆資料使其成為現用資料錄
[*] MovePrevious:移至前一筆資料使其成為現用資料錄
[*] MoveFirst:移至第一筆資料使其成為現用資料錄
[*] MoveLast:移至最後一筆資料使其成為現用資料錄
[*] BOF:資料錄指標是否移至第一筆資料錄之前
[*] EOF:資料錄指標是否移至最後一筆資料錄之後
[*] AbsolutePosition:設定或傳回現用資料錄的絕對位置
[/list]

[b][color=Red]資料表的新增、刪除與修改[/color][/b]
[list]
[*]Addnew:新增資料錄
[*] Update:更新資料錄
[*] CancelUpdate:取消更新資料
[*] Delete:刪除資料錄
[/list]


下例即是新增資料錄的使用方法,請注意:『rs』是一個我們自行建立的Recordset物件:[code]rs.addnew
rs("客戶編號")="A100"
rs("客戶名稱")="麻辣學園"
rs("住址")="台灣省台北縣"
rs.update[/code][b][color=Red]注意[/color][/b]
當我們使用『Addnew』方法加入新資料後,最後一定還要加上呼叫『Update』方法來將資料錄更新,如此一來新增的資料才會被存進資料庫檔案中!

小誌 發表於 2010-5-13 01:20

[color=DarkOrange][size=5][b]ADO物件群之Command物件[/b][/size][/color]
[color=Green][size=4][b]Command物件[/b][/size][/color]
    Command 物件負責對資料庫提供請求,也就是傳遞指定的SQL指令,即執行Action Query指令,建立方式如下:
[attach]341[/attach]

[color=Green][size=4][b]何謂Action Query指令?[/b][/size][/color]
Action Query指令是指能夠寫入資料的指令,可分為以下幾種:

[b][color=Red]Delete 指令:[/color][/b]刪除資料錄,語法如下:[code]Delete From 資料表 Where 條件式[/code]例如:我們要將『員工』資料表中『年齡』已經超過『60』歲的人員資料刪除[code]Delete From 員工 Where 年齡 > 60[/code][color=Red]注意:[/color]如果指令中的 『Where 條件式』忽略掉而沒使用,則所有的資料可是都會被刪除的喔!也就是說資料表的內容將會是空的。

[b][color=Red]Update 指令:[/color][/b]更新資料錄,語法如下:[code]Update 資料表 set 運算式[/code]通常我們都會利用Updata指令來進行數學的運算,例如:公司要進行年度薪資調整,因此我們要將『員工薪資』資料表中『薪資』欄位值提高五個百分比:[code]Update 員工薪資 set 薪資 = 薪資*1.05[/code][b][color=Red]Insert Into 指令:[/color][/b]新增資料錄,語法如下:[code]Insert Into 資料表(欄位串列) Values(欄位串列)[/code]例如:公司加入了新的成員,我們要在『員工』資料表中加入這位新員工的資料[code]Insert Into 員工(姓名,年齡) Values(楊小誌,28) [/code][color=Red]注意:[/color]欄位名稱與欄位值必須相對應![code]Insert Into 資料表(欄位一,欄位二,...) select ...[/code]此格式乃是將Select指令所選取的資料錄新增至另一個資料表中。
[color=Red]注意:[/color]此格式中的兩個資料表必須是預先就已經建立完成的呦!

[b][color=Red] Select Into 指令:[/color][/b]建立新資料錄,語法如下:[code]Select * Into 新資料表 From 資料表 Where 條件式[/code]此格式乃是將所選取的資料錄新增至另一個『新的』資料表中。
例如:我們要將『員工薪資』資料表中『薪資』欄位值高於5萬元的員工人員資料建立成另外一個新的『高薪人員』資料表[code]Select * Into 高薪人員 From 員工薪資 Where 薪資>50000[/code][color=Green][size=4][b]如何執行Action Query指令[/b][/size][/color]
在要執行 Action Query 指令非常簡單,我們只要將Action Query 指令指定給『Command』物件的『CommandText』屬性,然後再呼叫『Command』物件的『Execute』方法執行Action Query指令,如下圖所示:
[attach]342[/attach]
[color=Red][b]注意:[/b][/color]
[list]
[*]『cmd』是一個我們已經建立好的『Command』物件,而『SQL』則是我們要執行的Action Query指令。
[*]Action Query指令的使用時機:針對大量資料的刪除、新增與更新,其效率較高。
[/list]

頁: [1]

麻辣家族討論版版為 麻辣學園 網站成員  由 昱得資訊工作室 © Since 1993 所提供