第三卷 客戶/服務器解決方案(2)(1 / 3)

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( )函數將進行人工事務處理。