MS-Visual Foxpro與 DBMaker 之結合

/曹永暉

前言

在以往 DOS 平臺底下有超過 70% 之資料庫系統是由 xBase 的發展環境下所開發的. 截至目前為止, 仍有相當比例的 xBase 擁護者, 使用由 xBase -- 如Clipper, Foxpro 等所開發完成的資料庫應用程式, 在仍然能夠滿足目前一般商家營業需求的情況下而尚未被市場所淘汰. 然而, 在面臨目前最被關切的 “千禧年(Y2K)”問題, 或業務擴展而須新增系統使用功能但無法與原設計開發人員連繫等情況 , 這些舊有的 xBase 資料庫系統將很難協助商家進入二十一世紀.

由凌群電腦集合國內外高級資料庫技術人才, 投入五年心力所開發成功的一套全中文化的資料庫系統 , DBMaker ,以穩定運作、 強大的功能、 簡易的安裝與競爭的價格將提供國內中小企業邁入二十一世紀的資料庫系統解決方案.

MS-Visual Foxpro

MS-Visual Foxpro 為目前視窗平臺下少數提供 xBase 的開發環境. 目前其最新版本為 6.0 版.在其 3.0 版之後便進一步的把用於大型資料庫的 SQL 語法加入了其開發環境. 透過 ODBC, Visual Foxpro 能很輕易的與 DBMaker 的資料庫連結. 這使得以往 xBase 的擁護者能繼續的藉由 Visual Foxpro 來開發大型資料庫軟體程式 . DBMaker 採用所謂 Native ODBC 之連結方式, 能緊密的與任何支援 ODBC 連結的前端開發程式做緊密的結合. 以下作者將介紹如何利用 VFP 來與 DBMaker 作連結之方式.

應用範例

在開發主從架構的應用程式時 ,Visual Foxpro 有兩種方式可以讀取伺服器上的資料 :

  1. 遠端資料集 (Remote Views)
  2. SQL pass-through
  • 遠端資料集 (Remote Views)

    可以使用資料集做為開發強大的主從架構應用程式的核心方法。遠端資料集是一種強有力的技術,用它可以從一個遠端伺服器中選定所需要的資料並下載到一個本地電腦 Visual FoxPro 暫存資料表格中,同時可以檢視並更新遠端資料。一個資料集基本上是使用一個 SQL SELECT 敘述所得到的一個結果的集合物件。

  • SQL pass-through

    SQL pass-through 技術可以讓您直接把 SQL 敘述透過 ODBC 傳送給伺服器執行。由於這些被傳遞的敘述在後端伺服器上執行,因而能夠在很大程度上提高主從架構應用程式的效能。透過 SQL pass-through 技術 VFP 可以運用所有伺服端所提供之指令 , 當然 DBMaker 強大的功能也可藉此淋漓盡致的發揮。

以下範例將從如何建立ODBC資料來源開始

建立ODBC資料來源

操作步驟

  • 步驟一

圖 1.1 建立 ODBC Driver

雙按控制台裡的 ODBC , 選擇“使用者資料來源”的選項, 然後按“新增”. 此時您可選擇您想要的驅動程式來設定資料來源. DBMaker 的使用者會發現一個由 CaseMaker 公司所撰寫的 DBMaker 3.0 Driver. 選擇 DBMaker Driver 3.0 後按“完成”

圖 1.2 選取 ODBC Driver

  • 步驟二

圖 2.1 ODBC DBMaker 設定

您會看到如圖2.1之視窗. 請輸入資料來源名稱. 針對單機版的 Users 和 Client/Server 版本的 Users 此時有不同的設定方式 :

  • 單機版

可按 Butt1.gif (454 bytes) 之後直接選擇目前 dmconfig.ini 內已建立之資料庫

  • Client/Server 版

請輸入資料庫名稱於資料來源名稱, 然後按 “選項”. 在 DBMaker 資料庫設定方塊裡輸入使用者名稱 , 接著選取主從架構資料庫, 然後輸入伺服器 IP 位址及其通訊埠編號

Pict4.gif (11804 bytes)

圖 2.2 ODBC DBMaker 設定

按 “確定” 後即宣告設定成功, 您會發現在使用者資料來源內已列出您剛才所設定的資料來源, ODBC 資料來源的設定就大功告成了. 如果再有其他的資料來源請重複上述步驟即可. 接下來即是程式設計部分。

進入Visual Foxpro

如同其它各式的開發工具一般 Visual Foxpro 也是一個整合式的“專案”開發環境 (如圖3.1).

Pict5.gif (14119 bytes)

圖3.1 Visual Foxpro 專案管理員

在資料選項內 , 使用者可使用 “遠端資料集” 來與 ODBC 的資料來源連結 . 您需先建立一個與 ODBC 的“連接”. 選連接後按“開新檔案”會出現如 (圖 3.2) 的視窗

Pict6.gif (19625 bytes)

圖 3.2 連接設計工具

按確認連接可測試 Visual Foxpro 是否成功的與 DBMaker 的資料庫完成連結. 成功的建立了"連接"之後便可建立遠端資料集.

選擇遠端資料集後按 "開新檔案" 便會出現如 (圖 3.3) 之視窗 . 之前所建立的連接已列入連接定義的選項中供您選擇 . 因此, 您可以定義多個不同的連接代表不同的資料來源 . 如此可很方便您在開發分散式資料庫系統對資料來源的管理 . 除了選擇連接之外 , 您也可在此視窗下方點選 “可使用的資料來源” 此時資料庫的連接定義視窗會列出您電腦系統的 ODBC 內所有的資料來源 .

   Pict7.gif (26989 bytes)

圖 3.3 選擇資料來源視窗

按 "確定" 之後會出現如 (圖 3.4) 的視窗

Pict8.gif (7858 bytes)

圖 3.4 開啟資料來源視窗

此視窗會列出此資料來源資料庫的資料表格 . 選擇您所需要的資料表格按 “加入”加入此資料集裡 .現在您可選取所需的欄位加入您的資料集中 (如圖 3.5). 如果需要各項其他各項設定 , 如加入條件式、排序、設定連結等請選擇視窗下方各類標籤內依您需求來設定

Pict9.gif (25494 bytes)

圖 3.5 資料集設計工具視窗

如果需要作遠端更新功能請選擇更新條件標籤如 (圖 3.6) 點選所要進行更新欄位 , 此外要選取 "發送 SQL 更新"方塊才能進行後端資料更新

圖 3.6 設定更新條件

一切都設定完後按 "存檔" 即宣告完成此一遠端資料集,遠端資料集設定完成後即可根據此資料集開發主從架構的應用程式

SQL Pass-through

SQL pass-through 技術可以讓您直接把 SQL 敘述執行給伺服器。由於這些被傳遞的 SQL 敘述在後端伺服器上執行,因而能夠在很大程度上提高主從架構應用程式的效能, 透過 SQL Pass-through, Visual Foxpro 更能緊密的與資料庫系統結合, 換句話說, DBMaker 所提供的特殊功能, 函式皆能透過 SQL pass-through 完全的發揮出來 . 表(一)是遠端資料集和 SQL pass-through 的比較情況。

遠端資料集 SQL pass-through
  • 根據 SQL SELECT 敘述。
  • 在設計時期可以作為控制物件的資料來源 。
  • 無法對資料來源執行 DLL 命令。
  • 取一個結果集。
  • 提供內部連接管理。
  • 為更新、插入和移除提供內部的預設更新訊息。
  • 隱藏地執行 SQL 敘述並抓取資料。
  • 不提供異動交易處理。
  • 在資料庫中永久儲存屬性。
  • 在執行 SQL 時採用非同步逐步抓取模式。
  • 根據本地伺服器的任何 SQL 敘述,允許資料定義的敘述或者伺服器儲存式程序的執行。
  • 無法作為控制物件的資料來源。
  • 提供了可以對資料來源執行 DLL 命令的方法。
  • 取一個或多個結果集。
  • 需要明確的連接管理。
  • 不提供預設更新訊息。
  • 需要明確地執行 SQL 敘述,並控制抓取結果模式。
  • 提供明確的異動交易處理。
  • 根據資料序列屬性,為 SQL pass-through 暫存資料表格提供暫存屬性。
  • 全面支援程式撰寫模式的非同步抓取。

表(一)遠端資料集和SQL pass-through技術的比較

**資料來源:Visual Foxpro線上文件

簡單的說明, SQL pass-through 的應用可分為三個過程,如圖4.1所示:

Pict11.gif (10350 bytes)

圖 4.1 SQL pass-through 的應用過程

第一階段 : 使用 SQLConnect() 函式透過 ODBC 與後端資料庫連接

語法 :

SQLCONNECT([DataSourceName, cUserID, cPassword | cConnectionName])

例如:如果要把 Visual FoxPro 連接到 ODBC 資料來源 VFPDBM 上,那麼必須以系統管理員(登錄識別碼 SYSADM)身份註冊,並給予密碼,即使用如下命令:

nConnectionHandle = SQLCONNECT('VFPDBM','SYSADM','password')

連接如果成功系統將會傳回一個正數的代碼(Connection Handle),每啟動一個連接即會產生不同的代碼 ,以作為稍後前端與資料庫溝通的依據.如傳回的代碼是負數則代表連接失敗

第二階段: 使用SQLExec()函式對後端資料庫下達 SQL命令

語法:

SQLEXEC(nConnectionHandle, [cSQLCommand, [CursorName]])

使用 Visual FoxPro SQL pass-through 函數將資料檢索結果放到 Visual FoxPro 暫存資料表格中,然後使用標準的 Visual FoxPro 命令和函數處理這些查詢到的資料。

例如,可以使用如下命令查詢authors資料表格並且瀏覽查詢結果的暫存資料表格 (mycursorname):

? SQLEXEC(nConnectionHandle,"select * from authors","mycursorname")
BROWSE

第三階段: 使用SQLDISCONNECT( ) 函數切斷與資料來源的連接。

語法:

SQLDISCONNECT(nConnectionHandle)

根據 CONNECTION HANDLE 的代碼可使用 SQLDISCONNECT 來對一特定的連結作切斷連接的動作. 除了上述三階段的指令, VFP 還提供眾多的 SQL pass-through 函數如表(二) (各函數詳細之用法請參照VFP線上輔助說明文件)

SQL pass-through 函數

  • SQLCANCEL( )
  • SQLCOLUMNS( )
  • SQLCOMMIT( )
  • SQLCONNECT( )
  • SQLDISCONNECT( )
  • SQLEXEC( )
  • SQLGETPROP( )
  • SQLMORERESULTS( )
  • SQLPREPARE( )
  • SQLROLLBACK( )
  • SQLSETPROP( )
  • SQLSTRINGCONNECT( )
  • SQLTABLES( )

表(二) SQL pass-through 函數

**資料來源:Visual Foxpro線上文件

由以上的範例可了解 VFP 提供了簡易的主從架構程式開發介面; 在藉由與 DBMaker 的配合要於短時間內開發一主從架構的資料庫系統並不是不可能的 .DBMaker 是目前最容易安裝的一套大型資料庫系統, 沒有煩瑣的設定 ,三分鐘即可安裝完成. 圖形化的操作介面, 全中文化的能力更是其他資料庫系統所望其項背的. DBMaker 將提供以往 xBase的使用者,程 式設計者,以優異的性能及競爭的價格,進入到主從架構的時代.

程式開發範例:名片管理系統

Copyright 2002 SYSCOM Computer Engineering Co. All rights reserved.