在第六章的第一部分我們已經簡單地介紹了一下Command對象所提供的屬性和方法以及它們的相應功能。而為了更方便大家讀懂如何給留言簿添加在線留言編輯功能的程序,我將先進一步再解釋一下Command對象所提供的屬性及Recordset對象的Open函數。
Command對象所提供的屬性:
ACTIVECONNECTION:ActiveConnection屬性可以用來設定該Command對象要依賴哪一個Connection通道來與數據庫互相溝通,因此該屬性可以直接傳入一已與數據庫建立鏈接的Connection對象或是更方便的使用數據庫鏈接字符串取代。
COMMANDTEXT:CommandText屬性允許三種類型的數據查詢信息,包括一般的SQL語句、數據庫表單名稱以及子程序名稱,而決定是哪一種數據查詢信息則是由另一屬性CommandType來設定。
COMMANDTIMEOUT:有時候網絡的狀況不好造成網絡響應緩慢,這時候Command對象的Execute方法在執行後會因此而造成服務器端數據庫無法正常響應,從而造成停止運行,處於等待狀態,遇到這種情況我們可以利用CommandTimeout屬性來設定從開始執行數據查詢(執行Execute)後允許繼續執行的最長時間。CommandTimeout的默認值來30秒。
COMMANDTYPE:可以用CommandType屬性來指定數據查詢信息的類型見下表:
名稱值 整數值 功能
adcmdtext 1 指定數據查詢信息的類型為SQL語句
adcmdtable 2 指定數據查詢信息的類型為數據庫表名稱
adcmdstoredPRoc 4 指定數據查詢信息的類型為子程序名稱
adcmdunknown 8 未知的請求信息類型
PREPARED:如果服務器的數據庫鏈接控制(例如ODBC)提供數據查詢信息先行編譯的功能,那麼我們可以把Prepared屬性設為true,如此一來可以加快數據庫查詢的速度。
Recordset對象的Open函數:
Rs.Open 數據表名稱或SQL指令,Connection對象,Recordset類型,鎖定類型
參數一:若指定成數據表名稱,則打開整個數據表,若指定成Select指令,則所建立的Recordset對象是Select指令選取的數據記錄的結果。
參數二:傳入某一個已打開的數據庫的Connection對象。
參數三:是Recordset類型,它含有下表的四種設置值:
Recordset類型的設置值 意義
AdOpenForwardOnly(=0) 只讀,且當前數據記錄只能向下移動
AdOpenStatic(=3) 只讀,當前數據記錄可自由移動
AdOpenKeyset(=1) 可讀寫,當前數據記錄可自由移動
AdOpenDynamic(=2) 可讀寫,當前數據記錄可自由移動
AdOpenKeyset和AdOpenDynamic的差別只表現在多人共用數據庫時,若以AdOpenKeyset
模式打開數據表,則無法看到其他人新增的數據記錄(除非重新啟動),如果是以AdOpenDynamic模式打開數據庫,則可以看到其他人新增的數據記錄。
參數四:是鎖定類型,它同樣含有四種設置值,見下表:
鎖定類型的設置值 意義
adLockReadOnly(=1) 默認值,用來打開只讀的數據記錄
adLockPessimistic(=2) 悲觀鎖定
adLockOptimistic(=3) 樂觀鎖定
adLockBatchOptimistic(=4) 批次樂觀鎖定