ASP 3.0高級編程(三十九)_ASP教程

      編輯Tag賺U幣
      教程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教程/更新時間:2008-08-22
      相關ASP教程