📄 045.htm
字号:
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><fontface="Arial"> </font><font face="宋体" lang="ZH-CN">如果数据库应用需要打开和关闭单个数据库中的多个表时,将</font><fontface="Arial">KeepConnection </font><font face="宋体" lang="ZH-CN">设置为</font><fontface="Arial">True</font><font face="宋体" lang="ZH-CN">是很有用的,那样,即使没有打开任何表,应用仍能保持与数据库的联接,它能够重复地打开和关闭数据库表,而不需要重复执行联接过程。如果</font><fontface="Arial">KeepConnection</font><font face="宋体" lang="ZH-CN">置为</font><fontface="Arial">False</font><font face="宋体" lang="ZH-CN">,当每次将</font><fontface="Arial">Connected</font><font face="宋体" lang="ZH-CN">置为</font><fontface="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><fontface="Arial">SQL</font><font face="宋体" lang="ZH-CN">数据库的安全性问题。如置为</font><fontface="Arial">True</font><font face="宋体" lang="ZH-CN">,当应用程序试图建立数据库联接时屏幕上将出现标准</font><fontface="Arial">Delphi</font><font face="宋体" lang="ZH-CN">注册对话框。用户必须输入正确的用户名和口令。如果置为</font><fontface="Arial">False</font><font face="宋体" lang="ZH-CN">,则应用程序将寻找</font><fontface="Arial">TDatabase</font><font face="宋体" lang="ZH-CN">部件的</font><fontface="Arial">Params </font><font face="宋体" lang="ZH-CN">属性中的注册参数。下面是</font><fontface="Arial">USERNAME</font><font face="宋体" lang="ZH-CN">和</font><font face="Arial">PASSWORD</font><fontface="宋体" 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><fontface="Arial">SQL</font><font face="宋体" lang="ZH-CN">服务器所有的事务控制独立级别。</font><fontface="Arial"> tiDirtyRead</font><font face="宋体" lang="ZH-CN">使所有修改都被返回,而不管记录是否已被提交。</font><fontface="Arial">tiReadCommitted</font><font face="宋体" lang="ZH-CN">将只返回提交的记录,而提交的修改将不会在结果中反映出来。</font><fontface="Arial">tiRepeatableRead </font><font face="宋体" lang="ZH-CN">将只返回事务过程中最初的记录,即使另一个应用程序将所作的修改提交。</p><p> 各种数据库服务器可能不同程度地支持这些独立级别,或者根本不支持。</font><fontface="Arial"> </font><font face="宋体" lang="ZH-CN">如果需要的独立级别不被服务器支持,那么</font><fontface="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><fontface="宋体" lang="ZH-CN">各类服务器</font><font face="Arial">TransIsolation</font><fontface="宋体" lang="ZH-CN">设置</font><font face="Arial"></p><p></font><font face="宋体" lang="ZH-CN">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p><p> 独立级别 </font><font face="Arial"> Oracle Sybase</font><fontface="宋体" lang="ZH-CN">和 </font><font face="Arial">InterBase</p><p>Microsoft SQL</p><p></font><font face="宋体" lang="ZH-CN">──────────────────────────────────────</font><fontface="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><fontface="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><fontface="Arial"> StartTransaction</font><font face="宋体" lang="ZH-CN">方法</p><p> </font><font face="Arial">StartTransartion</font><font face="宋体" lang="ZH-CN">方法在由</font><fontface="Arial">TaransIsolation</font><font face="宋体" lang="ZH-CN">属性指定的独立级别下开始事务控制。如果在一个事务已被激活的情况下调用该方法,</font><fontface="Arial">Delphi</font><font face="宋体" lang="ZH-CN">将引发异常。</font><fontface="Arial"></p><p></font><font face="宋体" lang="ZH-CN">调用了该方法后,对数据库所做的修改一直由数据库服务器维持到调用</font><fontface="Arial">Commmit</font><font face="宋体" lang="ZH-CN">方法提交数据或调用</font><fontface="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><fontface="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><fontface="Arial">StartTransaction</font><font face="宋体" lang="ZH-CN">以来所有数据修改存入数据库。</font><fontface="Arial"></p><p>4. TDatabase</font><font face="宋体" lang="ZH-CN">的</font><font face="Arial">OnLogin</font><fontface="宋体" lang="ZH-CN">事件的处理</p><p> </font><font face="Arial">OnLogin</font><font face="宋体" lang="ZH-CN">事件的触发条件是当联接</font><fontface="Arial">SQL</font><font face="宋体" lang="ZH-CN">数据库的</font><fontface="Arial">TDatabase</font><font face="宋体" lang="ZH-CN">部件被打开并且</font><fontface="Arial">LoginPrompt</font><font face="宋体" lang="ZH-CN">属性为</font><fontface="Arial">True</font><font face="宋体" lang="ZH-CN">。使用</font><fontface="Arial">OnLogin</font><font face="宋体" lang="ZH-CN">事件处理过程可以在运行时设置注册参数。</font><fontface="Arial">OnLogin </font><font face="宋体" lang="ZH-CN">事件处理过程得到</font><fontface="Arial">TDatabase</font><font face="宋体" lang="ZH-CN">的注册参数数组</font><fontface="Arial">Params</font><font face="宋体" lang="ZH-CN">,并且使用</font><fontface="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['SERVERNAME'] := '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><fontface="Arial">OnLogin</font><font face="宋体" lang="ZH-CN">事件的方法头。</font><fontface="Arial">Database</font><font face="宋体" lang="ZH-CN">参数是要联接的数据库。</font><fontface="Arial">LoginParams</font><font face="宋体" lang="ZH-CN">是</font><fontface="Arial">TStrings</font><font face="宋体" lang="ZH-CN">类型的对象,包含用户名和口令,以及打开数据库时所用的其它参数。用户名是形如</font><fontface="Arial">USER NAME = John.Doe</font><font face="宋体" lang="ZH-CN">的字符串,口令是形如</font><fontface="Arial">PASSWORD = is_Password</font><font face="宋体" lang="ZH-CN">的字符串。当</font><fontface="Arial">OnLogin</font><font face="宋体" lang="ZH-CN">事件处理过程被调用时应当在</font><fontface="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><fontface="宋体" lang="ZH-CN">会在你试图联接时提示你,诸如在会</font><fontface="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><fontface="宋体" lang="ZH-CN">部件的</font><font face="Arial">LoginPrompt</font><fontface="宋体" lang="ZH-CN">属性置为</font><font face="Arial">True</font><fontface="宋体" lang="ZH-CN">。这样,当应用程序试图建立数据库联接时,标准注册对话框会打开。</p><p> </font><font face="Arial"> 2. </font><font face="宋体" lang="ZH-CN">将</font><fontface="Arial">LoginPrompt</font><font face="宋体" lang="ZH-CN">属性置为</font><fontface="Arial">False</font><font face="宋体" lang="ZH-CN">,在</font><font face="Arial">TDatabase</font><fontface="宋体" lang="ZH-CN">部件的</font><font face="Arial">Params</font><fontface="宋体" lang="ZH-CN">属性中包含用户名和口令参数。例如:</p><p> </font><font face="Arial"></p><p></font><font face="宋体" lang="ZH-CN"> </font><font face="Arial"> </font><fontface="宋体" 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><fontface="Arial">TDatabase</font><font face="宋体" lang="ZH-CN">部件的</font><fontface="Arial">OnLogin</font><font face="宋体" lang="ZH-CN">事件设置注册参数。</font><fontface="Arial">OnLogin</font><font face="宋体" lang="ZH-CN">事件得到</font><fontface="Arial">TDatabase </font><font face="宋体" lang="ZH-CN">注册参数数组的拷贝,并利用</font><fontface="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><fontface="宋体" 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><fontface="宋体" 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><fontface="Arial">LoginParams.Values['PASSWORD'] := 'MYPASSWORD';</p><p> </font><font face="宋体" lang="ZH-CN"></p><p> 当控制从数据库注册事件处理过程中返回时,这些参数被用来建立联接。</p><p> </font><font face="Arial"></p><p>18.3.1.3 </font><font face="宋体" lang="ZH-CN">建立应用程序特定的别名</p>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -