熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Delphi編程 >> 正文

DELPHI基礎教程:Delphi客戶服務器應用開發(三)[2]

2013-11-23 17:48:50  來源: Delphi編程 

  KeepConnection屬性描述當數據庫中沒有打開表時是否要保持與服務器的聯連 如果數據庫應用需要打開和關閉單個數據庫中的多個表時將KeepConnection 設置為True是很有用的那樣即使沒有打開任何表應用仍能保持與數據庫的聯接它能夠重復地打開和關閉數據庫表而不需要重復執行聯接過程如果KeepConnection置為False當每次將Connected置為True數據庫都必須執行注冊過程

  ⑺ LoginPrompt屬性

  LoginPrompt屬性用於控制如何處理SQL數據庫的安全性問題如置為True當應用程序試圖建立數據庫聯接時屏幕上將出現標准Delphi注冊對話框用戶必須輸入正確的用戶名和口令如果置為False則應用程序將尋找TDatabase部件的Params 屬性中的注冊參數下面是USERNAME和PASSWORD參數的例子

  USERNAME = SYSDBA

  PASSWORD = masterkey

  ⑻ TransIsolation屬性

  TransIsolation屬性描述SQL服務器所有的事務控制獨立級別 tiDirtyRead使所有修改都被返回而不管記錄是否已被提交tiReadCommitted將只返回提交的記錄而提交的修改將不會在結果中反映出來tiRepeatableRead 將只返回事務過程中最初的記錄即使另一個應用程序將所作的修改提交

  各種數據庫服務器可能不同程度地支持這些獨立級別或者根本不支持 如果需要的獨立級別不被服務器支持那麼Dephi將使用下一個更高的獨立級別如下表所示

  表 各類服務器TransIsolation設置

  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  獨立級別     Oracle Sybase和     InterBase

  Microsoft SQL

  ──────────────────────────────────────

  Dirty Read Read Committed Read Committed Read Committed

  Read Committed Read Committed Read Committed Read Committed

  Repeatable read Repeatable read Not Supported Repeatable Read

  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  各個獨立級別的含義請見表

   TDatabase的關鍵方法

  ⑴ StartTransaction方法

  StartTransartion方法在由TaransIsolation屬性指定的獨立級別下開始事務控制如果在一個事務已被激活的情況下調用該方法Delphi將引發異常

  調用了該方法後對數據庫所做的修改一直由數據庫服務器維持到調用Commmit方法提交數據或調用Rollback方法取消修改為止只有當聯接數據庫服務器時才能調用該方法

  ⑵ Rollback方法

  Rollback方法返轉當前事務控制並且取消自最近一次調用StartTransaction以來對數據庫所做的所有修改

  ⑶ Commit方法

  Commit方法提交當前事務控制並且將自最近一次調用StartTransaction以來所有數據修改存入數據庫

   TDatabase的OnLogin事件的處理

  OnLogin事件的觸發條件是當聯接SQL數據庫的TDatabase部件被打開並且LoginPrompt屬性為True使用OnLogin事件處理過程可以在運行時設置注冊參數OnLogin 事件處理過程得到TDatabase的注冊參數數組Params並且使用Values屬性改變這些參數

  例如

  LoginParamsVaiues[SERVER NAME] := MYSERVERNAME;

  LoginParamsValues[USER NAME] := MYUSERNAME;

  LoginParamsValues[PASSWORD] := MYAPSSWORD;

  當控制從OnLogin事件處理過程中返回時應用程序用這些參數來建立聯接

  OnLogin事件處理過程的聲明是這樣的

  TLoginEvent = procedure(Database: TDatabase; LoginParam: TStrings) of Object;

  property OnLogin: TLoginEvent;

  TLoginEvent類型是處理OnLogin事件的方法頭Database參數是要聯接的數據庫LoginParams是TStrings類型的對象包含用戶名和口令以及打開數據庫時所用的其它參數用戶名是形如USER NAME = JohnDoe的字符串口令是形如PASSWORD = is_Password的字符串當OnLogin事件處理過程被調用時應當在LoginParams中加入用戶名和口令

   定制數據庫服務器的注冊參數

  大多數數據庫服務器都包含限制數據庫訪問的安全特征通常在用戶能訪問數據庫之前服務器都要求注冊的用戶名和口令

  如果服務器需要注冊在設計階段Delphi 會在你試圖聯接時提示你諸如在會TTable部件描述數據庫表名時

  在缺省情況下Delphi應用在打開數據庫服務器的聯接時顯示標准注冊對話框如果聯接已建立則注冊對話框不會出現

  可以用下列方法處理服務器注冊

   將TDatabase部件的LoginPrompt屬性置為True這樣當應用程序試圖建立數據庫聯接時標准注冊對話框會打開

   將LoginPrompt屬性置為False在TDatabase部件的Params屬性中包含用戶名和口令參數例如

  USERNAME = SYSDBA

  PASSWORD = mosterkey

  但不推薦使用該方法因為這會危害數據庫安全

   使用TDatabase部件的OnLogin事件設置注冊參數OnLogin事件得到TDatabase 注冊參數數組的拷貝並利用Values屬性改變這些參數

  LoginParamsValues[SERVER NAME] := MYSERVERNAME;

  LoginParamsValues[USER NAME] := MYUERNAME;

  LoginParamsValues[PASSWORD] := MYPASSWORD;

  當控制從數據庫注冊事件處理過程中返回時這些參數被用來建立聯接

   建立應用程序特定的別名

  TDatabase的Aliases描述了數據庫表的位置和數據庫服務器的聯接參數通常都是在Delphi之外運用BDE配置工具(BDECFGEXE)創建別名並且別名被存在BDE 配置文件IDAPICFG中

  用戶也可以用TDatabase創建只在應用程序中可用的別名用TDatabase 創建的別名不會加進BDE配置文件中任何DataSet部件可通過描述DatabaseName 屬性來使用這些別名為了定制這些局部別名的參數用鼠標左鍵雙擊TDatabase部件或從TDatabase部件中選擇Database EditorDelphi就會打開數據庫屬性編輯器(Database Properties Editor)

   控制數據庫的聯接

  TDatabase部件的Connected屬性指示TDatabase部件是否建立與數據庫服務器的聯接當應用程序打開數據庫中的表時Connected被設置為True將Connected 設為True就建立了數據庫的聯接

   保持數據庫聯接

  TDatabase的KeepConnection屬性描述當沒有數據庫表打開時是否要與保持數據庫的聯接

  如果應用程序需要在單個數據庫中多次打開關閉多個表時將KeepConnection 置為True能使應用程序具備更好的性能

  當KeepConnection為True時即使沒有表打開應用程序也能保持數據庫的聯接那麼就能重復打開和關閉數據庫表而不需每次進行聯接注冊

   使用TSesstion控制聯接

  TSesstion部件有一個面向整個應用程序的KeepConnections屬性如果SessionKeepConnections為True那麼用於所有TDatabase部件的數據庫聯接都是持久的

  TSession為應用程序提供數據庫聯接的全局控制TSession中的Databases 屬性是Session中所有活躍數據庫組成的數組DatabasesCount屬性描述活躍數據庫的數目

   描述Net和Private目錄

  TSession的NetFileDir屬性描述BDE網絡控制目錄的路徑TSession的PrivateDir屬性描述存儲諸述處理局部SQL表達式的臨時文件的目錄的路徑

   獲取數據庫信息

  TSession擁有許多讓用戶獲取數據庫有關的信息每個方法都以TStringList 部件作為傳入參數並將信息返回TStringList中

   GetAliasNames方法

  聲明procedure GetAliasNames(List: TStringList)

  GetAliasNames方法消除List中的參數並將所有已定義的BDE別名的名字寫入List應用程序生成的別名不包括在內

   GetAliasParams方法

  聲明procedure GetAliasParams(const AliasName: String; List: TStringList)

  GetAliasParams方法清除List的內容並將BDE別名為AliaName的參數寫入List

[]  []  []  []  


From:http://tw.wingwit.com/Article/program/Delphi/201311/25130.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.