知识大全 Delphi客户服务器应用开发(三)[2]
Posted 数据库
篇首语:吃过的馍馍不香,嚼过的甘蔗不甜。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Delphi客户服务器应用开发(三)[2]相关的知识,希望对你有一定的参考价值。
DELPHI基础教程:Delphi客户服务器应用开发(三)[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
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属性改变这些参数
例如
LoginParams Vaiues[ SERVER NAME ] := MYSERVERNAME ;
LoginParams Values[ USER NAME ] := MYUSERNAME ;
LoginParams Values[PASSWORD ] := MYAPSSWORD ;
当控制从OnLogin事件处理过程中返回时 应用程序用这些参数来建立联接
OnLogin事件处理过程的声明是这样的
TLoginEvent = procedure(Database: TDatabase; LoginParam: TStrings) of Object;
property OnLogin: TLoginEvent;
TLoginEvent类型是处理OnLogin事件的方法头 Database参数是要联接的数据库 LoginParams是TStrings类型的对象 包含用户名和口令 以及打开数据库时所用的其它参数 用户名是形如USER NAME = John Doe的字符串 口令是形如PASSWORD = is_Password的字符串 当OnLogin事件处理过程被调用时应当在LoginParams中加入用户名和口令
定制数据库服务器的注册参数
大多数数据库服务器都包含限制数据库访问的安全特征 通常 在用户能访问数据库之前 服务器都要求注册的用户名和口令
如果服务器需要注册 在设计阶段 Delphi 会在你试图联接时提示你 诸如在会TTable部件描述数据库表名时
在缺省情况下 Delphi应用在打开数据库服务器的联接时 显示标准注册对话框 如果联接已建立 则注册对话框不会出现
可以用下列方法处理服务器注册
将TDatabase部件的LoginPrompt属性置为True 这样 当应用程序试图建立数据库联接时 标准注册对话框会打开
将LoginPrompt属性置为False 在TDatabase部件的Params属性中包含用户名和口令参数 例如
USERNAME = SYSDBA
PASSWORD = mosterkey
但不推荐使用该方法 因为这会危害数据库安全
使用TDatabase部件的OnLogin事件设置注册参数 OnLogin事件得到TDatabase 注册参数数组的拷贝 并利用Values属性改变这些参数 如
LoginParams Values[ SERVER NAME ] := MYSERVERNAME ;
LoginParams Values[ USER NAME ] := MYUERNAME ;
LoginParams Values[ PASSWORD ] := MYPASSWORD ;
当控制从数据库注册事件处理过程中返回时 这些参数被用来建立联接
建立应用程序特定的别名
TDatabase的Aliases描述了数据库表的位置和数据库服务器的联接参数 通常都是在Delphi之外 运用BDE配置工具(BDECFG EXE)创建别名 并且别名被存在BDE 配置文件IDAPI CFG中
用户也可以用TDatabase创建只在应用程序中可用的别名 用TDatabase 创建的别名不会加进BDE配置文件中 任何DataSet部件可通过描述DatabaseName 属性来使用这些别名 为了定制这些局部别名的参数 用鼠标左键双击TDatabase部件或从TDatabase部件中选择Database Editor Delphi就会打开数据库属性编辑器(Database Properties Editor)
控制数据库的联接
TDatabase部件的Connected属性 指示TDatabase部件是否建立与数据库服务器的联接 当应用程序打开数据库中的表时 Connected被设置为True 将Connected 设为True就建立了数据库的联接
保持数据库联接
TDatabase的KeepConnection属性描述当没有数据库表打开时是否要与保持数据库的联接
如果应用程序需要在单个数据库中多次打开关闭多个表时 将KeepConnection 置为True能使应用程序具备更好的性能
当KeepConnection为True时 即使没有表打开 应用程序也能保持数据库的联接 那么就能重复打开和关闭数据库表而不需每次进行联接注册
使用TSesstion控制联接
TSesstion部件有一个面向整个应用程序的KeepConnections属性 如果Session KeepConnections为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
cha138/Article/program/Delphi/201311/25130相关参考
DELPHI基础教程:Delphi客户服务器应用开发(三)[3] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起
DELPHI基础教程:Delphi客户服务器应用开发(三)[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起
DELPHI基础教程:Delphi客户服务器应用开发(一)[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起
DELPHI基础教程:Delphi客户服务器应用开发(二)[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起
DELPHI基础教程:Delphi客户服务器应用开发(四)[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起
DELPHI基础教程:Delphi客户服务器应用开发(一)[3] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起
DELPHI基础教程:Delphi客户服务器应用开发(一)[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起
DELPHI基础教程:Delphi客户服务器应用开发(二)[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起
DELPHI基础教程:Delphi客户服务器应用开发(二)[4] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起
DELPHI基础教程:Delphi客户服务器应用开发(二)[3] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起