?? 045.htm
字號:
face="Arial">True</font><font face="宋體" lang="ZH-CN">則可不需打開數據庫表即可建立數據庫聯接。</font><font
face="Arial">TDatabase</font><font face="宋體" lang="ZH-CN">的</font><font face="Arial">KeepConnection</font><font
face="宋體" lang="ZH-CN">屬性描述當數據庫中沒有表打開時是否維持數據庫聯連。</p>
<p> ⑹</font><font face="Arial"> KeepConnection</font><font face="宋體"
lang="ZH-CN">屬性</p>
<p> </font><font face="Arial">KeepConnection</font><font face="宋體" lang="ZH-CN">屬性描述當數據庫中沒有打開表時是否要保持與服務器的聯連,</font><font
face="Arial"> </font><font face="宋體" lang="ZH-CN">如果數據庫應用需要打開和關閉單個數據庫中的多個表時,將</font><font
face="Arial">KeepConnection </font><font face="宋體" lang="ZH-CN">設置為</font><font
face="Arial">True</font><font face="宋體" lang="ZH-CN">是很有用的,那樣,即使沒有打開任何表,應用仍能保持與數據庫的聯接,它能夠重復地打開和關閉數據庫表,而不需要重復執行聯接過程。如果</font><font
face="Arial">KeepConnection</font><font face="宋體" lang="ZH-CN">置為</font><font
face="Arial">False</font><font face="宋體" lang="ZH-CN">,當每次將</font><font
face="Arial">Connected</font><font face="宋體" lang="ZH-CN">置為</font><font
face="Arial">True</font><font face="宋體" lang="ZH-CN">,數據庫都必須執行注冊過程。</p>
<p> ⑺</font><font face="Arial"> LoginPrompt</font><font face="宋體" lang="ZH-CN">屬性</p>
<p> </font><font face="Arial">LoginPrompt</font><font face="宋體" lang="ZH-CN">屬性用于控制如何處理</font><font
face="Arial">SQL</font><font face="宋體" lang="ZH-CN">數據庫的安全性問題。如置為</font><font
face="Arial">True</font><font face="宋體" lang="ZH-CN">,當應用程序試圖建立數據庫聯接時屏幕上將出現標準</font><font
face="Arial">Delphi</font><font face="宋體" lang="ZH-CN">注冊對話框。用戶必須輸入正確的用戶名和口令。如果置為</font><font
face="Arial">False</font><font face="宋體" lang="ZH-CN">,則應用程序將尋找</font><font
face="Arial">TDatabase</font><font face="宋體" lang="ZH-CN">部件的</font><font
face="Arial">Params </font><font face="宋體" lang="ZH-CN">屬性中的注冊參數。下面是</font><font
face="Arial">USERNAME</font><font face="宋體" lang="ZH-CN">和</font><font face="Arial">PASSWORD</font><font
face="宋體" lang="ZH-CN">參數的例子:</p>
<p> </font><font face="Arial"></p>
<p></font><font face="宋體" lang="ZH-CN"> </font><font face="Arial"> USERNAME = SYSDBA</p>
<p>PASSWORD = masterkey</p>
<p> </font><font face="宋體" lang="ZH-CN"></p>
<p> ⑻</font><font face="Arial"> TransIsolation</font><font face="宋體"
lang="ZH-CN">屬性</p>
<p> </font><font face="Arial">TransIsolation</font><font face="宋體" lang="ZH-CN">屬性描述</font><font
face="Arial">SQL</font><font face="宋體" lang="ZH-CN">服務器所有的事務控制獨立級別。</font><font
face="Arial"> tiDirtyRead</font><font face="宋體" lang="ZH-CN">使所有修改都被返回,而不管記錄是否已被提交。</font><font
face="Arial">tiReadCommitted</font><font face="宋體" lang="ZH-CN">將只返回提交的記錄,而提交的修改將不會在結果中反映出來。</font><font
face="Arial">tiRepeatableRead </font><font face="宋體" lang="ZH-CN">將只返回事務過程中最初的記錄,即使另一個應用程序將所作的修改提交。</p>
<p> 各種數據庫服務器可能不同程度地支持這些獨立級別,或者根本不支持。</font><font
face="Arial"> </font><font face="宋體" lang="ZH-CN">如果需要的獨立級別不被服務器支持,那么</font><font
face="Arial">Dephi</font><font face="宋體" lang="ZH-CN">將使用下一個更高的獨立級別,如下表所示:</p>
<p> </font><font face="Arial"></p>
<p></font><font face="宋體" lang="ZH-CN">表</font><font face="Arial">18.10 </font><font
face="宋體" lang="ZH-CN">各類服務器</font><font face="Arial">TransIsolation</font><font
face="宋體" lang="ZH-CN">設置</font><font face="Arial"></p>
<p></font><font face="宋體" lang="ZH-CN">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>
<p> 獨立級別 </font><font face="Arial"> Oracle Sybase</font><font
face="宋體" lang="ZH-CN">和 </font><font face="Arial">InterBase</p>
<p>Microsoft SQL</p>
<p></font><font face="宋體" lang="ZH-CN">──────────────────────────────────────</font><font
face="Arial"></p>
<p>Dirty Read Read Committed Read Committed Read Committed</p>
<p>Read Committed Read Committed Read Committed Read Committed</p>
<p>Repeatable read Repeatable read Not Supported Repeatable Read</p>
<p></font><font face="宋體" lang="ZH-CN">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>
<p> </font><font face="Arial"></p>
<p></font><font face="宋體" lang="ZH-CN">各個獨立級別的含義請見表</font><font
face="Arial">18.12</font><font face="宋體" lang="ZH-CN">。</p>
<p> </font><font face="Arial"></p>
<p>3. TDatabase</font><font face="宋體" lang="ZH-CN">的關鍵方法</p>
<p> </font><font face="Arial"> </font><font face="宋體" lang="ZH-CN">⑴</font><font
face="Arial"> StartTransaction</font><font face="宋體" lang="ZH-CN">方法</p>
<p> </font><font face="Arial">StartTransartion</font><font face="宋體" lang="ZH-CN">方法在由</font><font
face="Arial">TaransIsolation</font><font face="宋體" lang="ZH-CN">屬性指定的獨立級別下開始事務控制。如果在一個事務已被激活的情況下調用該方法,</font><font
face="Arial">Delphi</font><font face="宋體" lang="ZH-CN">將引發異常。</font><font
face="Arial"></p>
<p></font><font face="宋體" lang="ZH-CN">調用了該方法后,對數據庫所做的修改一直由數據庫服務器維持到調用</font><font
face="Arial">Commmit</font><font face="宋體" lang="ZH-CN">方法提交數據或調用</font><font
face="Arial">Rollback</font><font face="宋體" lang="ZH-CN">方法取消修改為止。只有當聯接數據庫服務器時,才能調用該方法。</p>
<p> ⑵</font><font face="Arial"> Rollback</font><font face="宋體" lang="ZH-CN">方法</p>
<p> </font><font face="Arial">Rollback</font><font face="宋體" lang="ZH-CN">方法返轉當前事務控制,并且取消自最近一次調用</font><font
face="Arial">StartTransaction</font><font face="宋體" lang="ZH-CN">以來對數據庫所做的所有修改。</p>
<p> ⑶</font><font face="Arial"> Commit</font><font face="宋體" lang="ZH-CN">方法</p>
<p> </font><font face="Arial">Commit</font><font face="宋體" lang="ZH-CN">方法提交當前事務控制,并且將自最近一次調用</font><font
face="Arial">StartTransaction</font><font face="宋體" lang="ZH-CN">以來所有數據修改存入數據庫。</font><font
face="Arial"></p>
<p>4. TDatabase</font><font face="宋體" lang="ZH-CN">的</font><font face="Arial">OnLogin</font><font
face="宋體" lang="ZH-CN">事件的處理</p>
<p> </font><font face="Arial">OnLogin</font><font face="宋體" lang="ZH-CN">事件的觸發條件是當聯接</font><font
face="Arial">SQL</font><font face="宋體" lang="ZH-CN">數據庫的</font><font
face="Arial">TDatabase</font><font face="宋體" lang="ZH-CN">部件被打開并且</font><font
face="Arial">LoginPrompt</font><font face="宋體" lang="ZH-CN">屬性為</font><font
face="Arial">True</font><font face="宋體" lang="ZH-CN">。使用</font><font
face="Arial">OnLogin</font><font face="宋體" lang="ZH-CN">事件處理過程可以在運行時設置注冊參數。</font><font
face="Arial">OnLogin </font><font face="宋體" lang="ZH-CN">事件處理過程得到</font><font
face="Arial">TDatabase</font><font face="宋體" lang="ZH-CN">的注冊參數數組</font><font
face="Arial">Params</font><font face="宋體" lang="ZH-CN">,并且使用</font><font
face="Arial">Values</font><font face="宋體" lang="ZH-CN">屬性改變這些參數。</p>
<p> 例如:</p>
<p> </font><font face="Arial"></p>
<p></font><font face="宋體" lang="ZH-CN"> </font><font face="Arial">LoginParams.Vaiues['SERVER
NAME'] := 'MYSERVERNAME';</p>
<p>LoginParams.Values['USER NAME'] := 'MYUSERNAME';</p>
<p>LoginParams.Values[PASSWORD'] := 'MYAPSSWORD';</p>
<p> </font><font face="宋體" lang="ZH-CN"></p>
<p> 當控制從</font><font face="Arial">OnLogin</font><font face="宋體"
lang="ZH-CN">事件處理過程中返回時,應用程序用這些參數來建立聯接。</p>
<p> </font><font face="Arial">OnLogin</font><font face="宋體" lang="ZH-CN">事件處理過程的聲明是這樣的:</p>
<p> </p>
<p> </font><font face="Arial">TLoginEvent = procedure(Database: TDatabase;
LoginParam: TStrings) of Object;</p>
<p>property OnLogin: TLoginEvent;</p>
<p> </p>
<p>TLoginEvent</font><font face="宋體" lang="ZH-CN">類型是處理</font><font
face="Arial">OnLogin</font><font face="宋體" lang="ZH-CN">事件的方法頭。</font><font
face="Arial">Database</font><font face="宋體" lang="ZH-CN">參數是要聯接的數據庫。</font><font
face="Arial">LoginParams</font><font face="宋體" lang="ZH-CN">是</font><font
face="Arial">TStrings</font><font face="宋體" lang="ZH-CN">類型的對象,包含用戶名和口令,以及打開數據庫時所用的其它參數。用戶名是形如</font><font
face="Arial">USER NAME = John.Doe</font><font face="宋體" lang="ZH-CN">的字符串,口令是形如</font><font
face="Arial">PASSWORD = is_Password</font><font face="宋體" lang="ZH-CN">的字符串。當</font><font
face="Arial">OnLogin</font><font face="宋體" lang="ZH-CN">事件處理過程被調用時應當在</font><font
face="Arial">LoginParams</font><font face="宋體" lang="ZH-CN">中加入用戶名和口令。</p>
<p> </font><font face="Arial"></p>
<p>18.3.1.2 </font><font face="宋體" lang="ZH-CN">定制數據庫服務器的注冊參數</p>
<p> </p>
<p> 大多數數據庫服務器都包含限制數據庫訪問的安全特征。通常,在用戶能訪問數據庫之前,服務器都要求注冊的用戶名和口令。</p>
<p> 如果服務器需要注冊,在設計階段,</font><font face="Arial">Delphi </font><font
face="宋體" lang="ZH-CN">會在你試圖聯接時提示你,諸如在會</font><font
face="Arial">TTable</font><font face="宋體" lang="ZH-CN">部件描述數據庫表名時。</p>
<p> 在缺省情況下,</font><font face="Arial">Delphi</font><font face="宋體"
lang="ZH-CN">應用在打開數據庫服務器的聯接時,顯示標準注冊對話框。如果聯接已建立,則注冊對話框不會出現。</p>
<p> 可以用下列方法處理服務器注冊:</font><font face="Arial"></p>
<p>1. </font><font face="宋體" lang="ZH-CN">將</font><font face="Arial">TDatabase</font><font
face="宋體" lang="ZH-CN">部件的</font><font face="Arial">LoginPrompt</font><font
face="宋體" lang="ZH-CN">屬性置為</font><font face="Arial">True</font><font
face="宋體" lang="ZH-CN">。這樣,當應用程序試圖建立數據庫聯接時,標準注冊對話框會打開。</p>
<p> </font><font face="Arial"> 2. </font><font face="宋體" lang="ZH-CN">將</font><font
face="Arial">LoginPrompt</font><font face="宋體" lang="ZH-CN">屬性置為</font><font
face="Arial">False</font><font face="宋體" lang="ZH-CN">,在</font><font face="Arial">TDatabase</font><font
face="宋體" lang="ZH-CN">部件的</font><font face="Arial">Params</font><font
face="宋體" lang="ZH-CN">屬性中包含用戶名和口令參數。例如:</p>
<p> </font><font face="Arial"></p>
<p></font><font face="宋體" lang="ZH-CN"> </font><font face="Arial"> </font><font
face="宋體" lang="ZH-CN"> </font><font face="Arial">USERNAME = SYSDBA</p>
<p>PASSWORD = mosterkey</p>
<p> </p>
<p></font><font face="宋體" lang="ZH-CN">但不推薦使用該方法,因為這會危害數據庫安全</p>
<p> </font><font face="Arial">3. </font><font face="宋體" lang="ZH-CN">使用</font><font
face="Arial">TDatabase</font><font face="宋體" lang="ZH-CN">部件的</font><font
face="Arial">OnLogin</font><font face="宋體" lang="ZH-CN">事件設置注冊參數。</font><font
face="Arial">OnLogin</font><font face="宋體" lang="ZH-CN">事件得到</font><font
face="Arial">TDatabase </font><font face="宋體" lang="ZH-CN">注冊參數數組的拷貝,并利用</font><font
face="Arial">Values</font><font face="宋體" lang="ZH-CN">屬性改變這些參數。如:</p>
<p> </font><font face="Arial"></p>
<p></font><font face="宋體" lang="ZH-CN"> </font><font face="Arial"> </font><font
face="宋體" lang="ZH-CN"> </font><font face="Arial">LoginParams.Values['SERVER NAME']
:= 'MYSERVERNAME';</p>
<p></font><font face="宋體" lang="ZH-CN"> </font><font face="Arial"> </font><font
face="宋體" lang="ZH-CN"> </font><font face="Arial">LoginParams.Values['USER NAME'] :=
'MYUERNAME';</font><font face="宋體" lang="ZH-CN"></p>
<p> </font><font face="Arial"> </font><font face="宋體" lang="ZH-CN"> </font><font
face="Arial">LoginParams.Values['PASSWORD'] := 'MYPASSWORD';</p>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -