ASP 3.0高級編程(三十九)_ASP教程
教程Tag:暫無Tag,歡迎添加,賺取U幣!
推薦:ASP中實現從dbf數據庫導出數據到sql表說明:dbf數據庫結構要與sql表一致 以下為引用的內容: <% Dim conndbf_dbf,Driver_dbf,SourceType_dbf,DBPath_dbf dim Conn_
8.4.3 創建記錄集創建一個記錄集十分容易,通過調用Recordset對象的Open方法來實現:
Recordset.Open [Source], [ActiveConnection], [CursorType], [LockType], [Options]
其參數及說明如表8-3所示:
表8-3 Open方法的參數及說明
參 數
說 明
Source
數據源。可以是數據庫中的表名、存儲的查詢或過程、SQL字符串、Command對象或適用于提供者的其他命令對象
ActiveConnection
記錄集使用的連接。可以是一個連接字符串或者一個打開的Connection對象
CursorType
使用的光標類型。必須是定義的光標類型中的一種,缺省值為adForwardOnly
LockType
使用的鎖定類型。必須是定義的鎖定類型中的一種,缺省值為adLockReadOnly
Options
告訴提供者Source參數的內容是什么,如表、文本字符串等等
例如,要打開數據庫pubs中authors表上的記錄集:
Dim rsAuthors
Set rsAuthors = Server.CreateObject("ADODB.Recordset")
rsAuthors.Open "authors", strConn
' Do something here
rsAuthors.Close
Set rsAuthors = Nothing
注意,有幾個參數沒有指定。實際上,所有的參數都是可選的,可以在打開記錄集之前為它們設置相應的屬性值:
Dim rsAuthors
Set rsAuthors = Server.CreateObject("ADODB.Recordset")
With rsAuthors
.Source = "authors"
.ActiveConnection = strConn
.CursorType = adOpenForwardOnly
.LockType = adLockReadOnly
.Open
End With
' Do something here
rsAuthors.Close
Set rsAuthors = Nothing
一旦打開記錄集,當前指針自動地位于第一條記錄上。如果在記錄集中沒有記錄,那么EOF和BOF屬性都是True:
rsAuthors.Open "authors", strConn
If rsAuthors.BOF and rsAuthors.EOF Then
' Recordset is empty
End If
1. Options參數
Open方法的Options參數允許指定命令文本內容。它可以是以下CommandTypeEnum常數之一:
· adCmdText:文本命令,比如SQL字符串。
· adCmdTable:表名。
· adCmdStoredProc:存儲過程名。
· adCmdFile:保存的記錄集的文件名。
· adCmdTableDirect:表名。
· adCmdURLBind:URL地址。
adCmdTable與adCmdTableDirect的區別很小,如果想使用表中的全部列,使用adCmdTableDirect將由于ADO執行了某些內部優化而使運行速度變得稍快一些。
如果沒有指定命令的類型,ADO必須推算出執行的命令的類型,這將導致額外的開銷。
這里還有兩個選項:adCmdUnspecified表示沒有指定類型;adCmdUnknow表示命令的類型未知。一般地可能不會使用它們。
額外的選項
Options參數可以是以上常數中的任一個,但也可以加入下列ExecuteOptionEnum常數:
· adAsyncExcute:異步地執行命令。
· adAsyncFetch:取得初始的行集后,異步地獲取剩下的行。
· adAsyncFetchBlocking:除了獲取記錄不阻止命令運行以外,其他與adAsyncFetch相似。
· adExechteNoRecords:命令不返回任何記錄。
異步處理意味著在后臺執行操作,可以運行命令,然后繼續其他工作,而不需要等待其執行完畢(同步操作)。當創建用戶界面時,這顯得特別方便,因為可以從命令執行中返回,向用戶顯示一些內容,而同時數據的獲取仍然在后臺進行。當返回記錄集時,這對ASP程序員來說不是很有用,因為腳本語言不支持ADO事件,所以記錄集何時已完成填充移無法得知。當處理更新、刪除或插入數據命令以及不返回記錄集的時候,可以使用異步操作,即僅在不關心結果的情況下才能使用。
在另一方面,adExecuteNoRecords選項十分有用。它告訴ADO執行的命令不返回任何數據。所以,就沒有必要創建記錄集(總之,可能為空)。這會加速正在運行的更新或添加數據的查詢操作。
為了加入這些選項之一,可以使用Or符號(等同于加號“ ”)
adCmdStoredProc Or adExecuteNoRecords
adCmdStoreProc adExecuteNoRecords
在下一章,將看到對相關內容更詳細的介紹,因為這在處理命令(而不是記錄集)時會更有用。
2. 在記錄集中移動
一旦打開一個記錄集,經常需要遍歷每一條記錄。這需要使用EOF屬性。當到達記錄集的末尾時,EOF就變為True,因為可以這樣創建一個循環:
rsAuthors.Open "authors", strConn
While Not rsAuthors.EOF
Response.Write rsAuthors("au_lname:) & ", " & _
rsAuthors("au_fname") & "<BR>"
rsAuthors.MoveNext
Wend
上面的例子一直循環到EOF屬性為True時才退出。MoveNext方法用于移到下一條記錄。
如果記錄集允許向后移動,則可以使用MovePrevious方法。在這種情況下,循環中需要檢測BOF屬性值。另外分別還有移動到第一條和最后一條記錄的MoveFirst和MoveLast方法:
rsAuthors.Open "authors", strConn, adOpenDynamic
' Now on first record
rsAuthors.MoveLast
' Now on last record
rsAuthors.MovePrevious
rsAuthors.MovePrevious
' Now three rows from the end of the recordset
rsAuthors.MoveFirst
' Back at the beginning again
3. 使用Fields集合
Fields集合包含記錄集中每一字段(列)的Fields對象。Fields集合是記錄集的缺省集合,因此在訪問字段時可以省略,就如同上面的While...Wend例子中的情況。因此,有多種訪問字段的方法:
rsAuthors.Fields("au_lname").Value
rsAuthors("au_lname).Value
rsAuthors(1).Value
rsAuthors.Fields(1).Value
可以使用字段名,或使用它在集合中的位
分享:ASP實現在提交表單到數據庫的同時發郵件通知以下為引用的內容: <% dim objCDOMail Set objCDOMail = Server.CreateObject("CDONTS.NewMail") objCDOMail.From ="xxx@h
相關ASP教程:
- 相關鏈接:
- 教程說明:
ASP教程-ASP 3.0高級編程(三十九)。