WaitTime
控製以毫秒計的時間量,在經過這段時間之後,VisualFoxPro檢查SQL語句是否已執行完畢
QueryTimeout
控製返回一個一般超時錯誤之前的等待時間(以秒為單位)
管理事務處理
Transactions
決定連接如何管理遠程表上的事務處理
控製將結果集合放入到視圖臨時表中的方式
Asynchronous
指定結果集合是同步返回(默認值)還是異步返回
BatchMode
指定SQLEXEC()是一次返回所有結果集(默認值),還是由SQLMORERESULTS()逐個返回
PacketSize
指定連接使用的網絡包的大小
顯示內部ODBC句柄
ODBChdbc2
內部ODBC連接句柄,可被外部庫文件(.fll文件)用來調用ODBCAPI函數
ODBChstmt2
內部ODBC語句句柄,可被外部庫文件(.fll文件)用來調用ODBCAPI函數
在人工事務處理模式,連接將保持活動狀態。
如果連接不活動,ODBChdbc 和 ODBChstmt 的值不再有效。在用戶庫中不能自由改變這些值。
可以使用SQLSETPROP( )設置連接屬性及其默認設置。用 0 句柄在 Visval FoxPro 環境中設置的值在每一個後續的連接或附件中被作為原型或默認值。
要查看當前環境屬性設置,可使用 SQLGETPROP( ),並將 0 作為句柄值。
下麵的例子將在屏幕上顯示當前環境的 WaitTime 屬性設置:
? SQLGETPROP(0, "WaitTime")
如果把 DispWarnings 屬性設置為"真"(.T.),Visual FoxPro 將從設置時刻開始把所有環境錯誤顯示出來,而且對於以後創建的連接也都設置 DispWarnings 屬性為"真"(.T.)。
除了使用句柄 0 設置的值作為原型值用於每個連接以外,還可以為一個單獨的連接設置自定義的屬性,隻要以該連接句柄為參數使用 SQLSETPROP( )即可。屬性 ConnectTimeout 例外,它在連接時刻便確定了。如果改變 ConnectTimeout 屬性設置,新的設置隻有重新連接時才能使用。
通過對連接和視圖對象的屬性進行設置,以控製連接和視圖。那些對數據庫、表、表字段、視圖定義、視圖字段、命名連接、活動連接以及活動的視圖臨時表進行控製的屬性,我們稱之為引擎屬性。使用表9-7中的 Visual FoxPro 函數,可以顯示或者設置引擎屬性:
表9-7 顯示和設置引擎的函數
使用如下函數顯示引擎屬性
使用如下函數設置引擎屬性
CURSORGETPROP()
CURSORSETPROP()
DBGETPROP()
DBSETPROP()
SQLGETPROP()
SQLSETPROP()
要使用什麼樣的函數,主要依賴於是否想為對象 0(連接 0 和 臨時表 0)、數據庫中的對象定義(命名連接定義或視圖定義)以及活動對象(活動連接或活動的視圖臨時表)設置屬性。表9-8中,列出了對象以及要為該對象設置屬性的函數:
表9-8 與對象相適應的連結函數
為以下對象設置屬性
連 接
視 圖
對象0
SQLSETPROP()
CURSORSETPROP()
數據庫中的對象定義
DBSETPROP()
DBSETPROP()
活動對象
SQLSETPROP()
CURSORSETPROP()
表9-9中,按照字母的順序列出了引擎屬性,同時注明每個屬性所適用的對象。
表9-9 引擎屬性及所適應的對象
引擎屬性
適用於
Asynchronous
連接定義,請參閱函數DBSETPROP()。活動連接,請參閱函數SQLSETPROP()
Batchmode
連接定義,請參閱函數DBSETPROP()。活動連接,請參閱函數SQLSETPROP()
BatchUpdateCount1
視圖定義,請參閱函數DBSETPROP()。活動視圖臨時表,請參閱函數CURSORSETPROP()
Buffering
活動視圖臨時表,請參閱函數CURSORSETPROP()
Caption
表和視圖定義中的字段,請參閱函數DBSETPROP()
Comment
數據庫、表、表中字段、視圖定義、視圖定義中的字段以及連接定義,請參閱函數DBSETPROP()
CompareMemo
視圖定義,請參閱函數DBSETPROP()。活動視圖臨時表,請參閱函數CURSORSETPROP()
ConnectBusy
活動連接,請參閱函數SQLGETPROP()
ConnectHandle
活動的視圖臨時表,請參閱函數CURSORGETPROP()
ConnectName1
視圖定義,請參閱函數DBSETPROP()。活動連接,請參閱函數SQLGETPROP()。活動視圖臨時表,請參閱函數CURSORGETPROP()
ConnectString
連接定義,請參閱函數DBSETPROP()。活動連接,請參閱函數SQLGETPROP()
ConnectTimeout
連接定義,請參閱函數DBSETPROP()。活動連接,請參閱函數SQLSETPROP()
Database
活動視圖臨時表,請參閱函數CURSORGETPROP()
DataSource
連接定義,請參閱函數DBSETPROP()。活動連接,請參閱函數SQLGETPROP()
DataType
在視圖定義中的字段,請參閱函數DBSETPROP()
DefaultValue
在表和視圖定義中的字段,請參閱函數DBSETPROP()
DeleteTrigger
表,請參閱函數DBGETPROP()
DispLogin
連接定義,請參閱函數DBSETPROP()。活動連接,請參閱函數SQLSETPROP()
DispWarnings
連接定義,請參閱函數DBSETPROP()。活動連接,請參閱函數SQLSETPROP()
續 表
引擎屬性
適用於
FetchAsNeeded
視圖定義,請參閱函數DBSETPROP()。活動的視圖臨時表,請參閱函數CURSORGETPROP()
FetchMemo(*)
視圖定義,請參閱函數DBSETPROP()。活動的視圖臨時表,請參閱函數CURSORGETPROP()
FetchSize(*)
視圖定義,請參閱函數DBSETPROP()。活動視圖臨時表,請參閱函數CURSORSETPROP()
IdleTimeout
連接定義,請參閱函數DBSETPROP()。活動連接,請參閱函數SQLSETPROP()
InsertTrigger
表,請參閱函數DBGETPROP()
KeyField
在視圖定義中的字段,請參閱函數DBSETPROP()
KeyFieldList(**)
活動的視圖臨時表,請參閱函數CURSORSETPROP()
MaxRecords(*)
視圖定義,請參閱函數DBSETPROP()。活動的視圖臨時表,請參閱函數CURSORSETPROP()
ODBCHdbc
活動連接,請參閱函數SQLGETPROP()
ODBCHstmt
活動連接,請參閱函數SQLGETPROP()
Offline
視圖定義,請參閱函數DBGETPROP()
PacketSize
連接定義,請參閱函數DBSETPROP()。活動連接,請參閱函數SQLSETPROP()
ParameterList
視圖定義,請參閱函數DBSETPROP()。活動的視圖臨時表,請參閱函數CURSORSETPROP()
Password
連接定義,請參閱函數DBSETPROP()。活動連接,請參閱函數SQLGETPROP()
Path
表,請參閱函數DBGETPROP()
Prepared
視圖定義,請參閱函數DBSETPROP()
PrimaryKey
表,請參閱函數DBGETPROP()
QueryTimeOut
連接定義,請參閱函數DBSETPROP()。活動連接,請參閱函數SQLSETPROP()
RuleExpression
表、表中字段、視圖定義、視圖定義中的字段,請參閱函數DBSETPROP()
RuleText
表、表中字段、視圖定義、視圖定義中的字段,請參閱函數DBSETPROP()
SendUpdates(**)
視圖定義,請參閱函數DBSETPROP()。活動的視圖臨時表,請參閱函數CURSORSETPROP()
ShareConnection
視圖定義,請參閱函數DBSETPROP()。活動的視圖臨時表,請參閱函數CURSORGETPROP()
SourceName
活動的視圖臨時表,請參閱函數CURSORGETPROP()。
SourceType
視圖定義,請參閱函數DBGETPROP()。活動的視圖臨時表,請參閱函數CURSORGETPROP()
SQL
視圖定義,請參閱函數DBGETPROP()。活動的視圖臨時表,請參閱函數CURSORGETPROP()
續 表
引擎屬性
適用於
Tables(**)
視圖定義,請參閱函數DBSETPROP()。活動的視圖臨時表,請參閱函數CURSORSETPROP()
Transactions
連接定義,請參閱函數DBSETPROP()。活動連接,請參閱函數SQLSETPROP()
Updatable
視圖定義中的字段,請參閱函數DBSETPROP()
UpdatableFieldlist(**)
活動的視圖臨時表,請參閱函數CURSORSETPROP()
UpdateName
視圖定義中的字段,請參閱函數DBSETPROP()
UpdateNameList(**)
活動視圖臨時表,請參閱函數CURSORSETPROP()
UpdateTrigger
表,請參閱函數DBGETPROP()
UpdateType
視圖定義,請參閱函數DBSETPROP()。活動的視圖臨時表,請參閱函數CURSORSETPROP()
UseMemoSize(*)
視圖定義,請參閱函數DBSETPROP()。活動的視圖臨時表,請參閱函數CURSORGETPROP()
UserID
連接定義,請參閱函數DBSETPROP()。活動連接,請參閱函數SQLGETPROP()
Version
數據庫,請參閱函數DBGETPROP()
WaitTime
連接定義,請參閱函數DBSETPROP()。活動連接,請參閱函數SQLSETPROP()
WhereType
視圖定義,請參閱函數DBSETPROP()。活動的視圖臨時表,請參閱函數CURSORSETPROP()
*屬性主要用於遠程視圖;對本地視圖設置此屬性不起作用。如果想在本地視圖中預先設置這個屬性,可以在本地視圖中設置此屬性,升遷後再創建遠程視圖。
**為了將更新傳送到遠程數據源必須設置引擎屬性。
可用下列兩種方法中的一種,通過使用事務處理方式來進行遠程數據的更新、刪除和插入等操作。
■ 自動事務處理模式
■ 人工事務處理模式
所選擇的事務處理模式將決定 Visual FoxPro 在本地機器上處理事務的方式。在默認情況下,Visual FoxPro 自動為發送給遠程服務器的每一個可事務化的命令包裝一個事務處理的外殼。這個默認的自動事務處理隻有在 Transactions 屬性設置為 1(或 DB_TRANSAUTO)時才產生。若要使用自動事務處理模式 ,可使用 DBSETPROP( )函數將連接的 Transactions 屬性設置為 1 或者 DB_TRANSAUTO。 或者使用 SQLSETPROP( )函數將活動連接的 Transactions 屬性設置為 1 或者 DB_TRANSAUTO。遠程表上的事務處理將自動進行。
Visual FoxPro 的 BEGIN TRANSACTION 和 END TRANSACTION 命令隻為本地 Visual FoxPro 臨時表創建事務處理。它們不能把事務處理擴展到遠程服務器上。
如果想人工控製事務處理,可以設置 Transactions 屬性為 2 或 DB_TRANSMANUAL。如果采用人工事務處理模式,Visual FoxPro 將在發出第一個可事務化的 SQL 語句時,自動開始一個事務處理,但必須使用 Visual FoxPro 的 SQLCOMMIT( )或 SQLROLLBACK( )函數來結束這個事務處理。
若要使用人工事務處理模式,可使用 DBSETPROP( )函數將連接的 Transactions 屬性設置為 1 或者 DB_TRANSMANUAL。 或者使用 SQLSETPROP( )函數將活動連接的 Transactions 屬性設置為 2 或者 DB_TRANSMANUAL。通過 SQLCOMMIT( )和 SQLROLLBACK( )函數將進行人工事務處理。