Delphi开发的C / S应用程序(4)

电脑杂谈  发布时间:2020-04-16 04:13:00  来源:网络整理

delphi微信企业号开发_delphi应用项目开发实践_delphi开发视频教程

连接后,将打开标准注册对话框.

2. 将LoginPrompt属性设置为False,并将用户名包括在TDatabase组件的Params属性中

和密码参数. 例如:

USERNAME = SYSDBA

PASSWORD = mosterkey

但是,不建议使用此方法,因为它会危害安全性

3. 使用TDatabase组件的OnLogin事件来设置注册参数. OnLogin事件获取TDatabase注意

参数数组的副本,并使用Values属性更改这些参数. 如:

LoginParams.Values ['服务器名称']: ='MYSERVERNAME';

LoginParams.Values ['USER NAME']: ='MYUERNAME';

LoginParams.Values ['PASSWORD']: ='MYPASSWORD';

当控件从注册事件处理返回时,这些参数用于建立连接.

18.3.1.3创建特定于应用程序的别名

TDatabase的别名描述表的位置和服务器的连接参数. 通常

在Delphi旁边,使用BDE配置工具(BDECFG32.EXE)创建一个别名,该别名存储在BDE配置中

文件IDAPI32.CFG.

用户还可以使用TDatabase创建仅在应用程序中可用的别名,以及使用TDatabase创建的别名

它不会被添加到BDE配置文件中. 任何DataSet组件都可以通过描述DatabaseName属性来使用它们

别名. 要自定义这些本地别名的参数,请用鼠标左键或从TDatabase部分中双击TDatabase部分

在文件中选择“编辑器”,Delphi将打开属性编辑器(“属性”

编辑器).

18.3.1.4控制连接

TDatabase组件的Connected属性指示是否使用服务器建立了TDatabase组件

连接. 当应用程序打开中的表时,Connected设置为True. 设置已连接为True

与的连接已建立.

1. 保持连接

TDatabase的KeepConnection属性描述了在没有打开表时是否保留

连接.

如果应用程序需要在单个中多次打开和关闭多个表,请将KeepConnection设置为

True可以使应用程序具有更好的性能.

当KeepConnection为True时,即使没有表打开,应用程序也可以维护连接.

然后可以重复打开和关闭表,而无需每次都进行连接注册.

2. 使用TSesstion来控制连接

TSesstion组件具有用于整个应用程序的KeepConnections属性. 如果

Session.KeepConnections为True,则用于所有TDatabase组件的连接是持久的

.

TSession为应用程序提供连接的全局控制. TSession中的“”属性是

会话中所有活动的数组. DatabasesCount属性描述了活动的数量.

3. 描述网络目录和私有目录

TSession的NetFileDir属性描述BDE网络控制目录的路径. TSession的PrivateDir

The

属性描述存储用于处理本地SQL表达式的临时文件的目录路径.

18.3.1.5获取信息

TSession为用户提供了很多获取的信息,每种方法都使用TStringList作为组件

是传入参数,并将信息返回到TStringList.

1. GetAliasNames方法

声明: 过程GetAliasNames(列表: TStringList);

GetAliasNames方法消除了列表中的参数,并将所有已定义的BDE别名的名称写入列表中.

不包括应用程序生成的别名.

2. GetAliasParams方法

声明: 过程GetAliasParams(常量AliasName: 字符串; List: TStringList);

GetAliasParams方法清除列表的内容,并将BDE别名为AliaName的参数写入列表.

3. GetDatabaseNames方法

声明: 过程GetDatabaseNames(列表: TStrings);

GetDatabaseNames方法清除列表的内容,并删除所有BDE别名和应用程序定义的别名

将名称写入列表.

4. GetDriverNames方法

delphi应用项目开发实践_delphi开发视频教程_delphi微信企业号开发

声明: 过程GetDriverNames(列表: TStrings);

GetDriverNames方法清除列表的内容,并将BDE中当前安装的驱动程序名称写入列表.

5. GetDriverParams方法

声明: 过程GetDriverParams(常量DriverName: 字符串;列表: TStrings);

GetDriverParams方法删除列表的内容,并写入名为DriveName的驱动程序的默认参数

输入列表.

6. GetTableNames方法

声明: 过程GetTableNames(常量DatabaseName,模式: 字符串;

扩展名,SystemTable: 布尔值;列表: TStrings);

GetTableNames方法消除列表的内容,并删除名为DatabaseName的中的所有内容

表的名称写在列表中. Pattern参数将限制表名. 对于SQL Server,将SystemeTables设置为

True将获取系统表和用户表. 对于非SQL,将扩展名设置为True将包含在表名称中

扩展名.

18.3.2处理客户端/服务器事务控制

有两种使用隐式控制和显示控制来管理应用程序中的事务控制的方法:

●使用TDatabase组件的属性和方法进行显式控制

●使用TQuery组件的传递SQL控制事务

Delphi还支持Paradox和dBASE表的本地事务处理

18.3.2.1事务控制概述

在使用Delphi创建应用程序时,Delphi为所有访问提供事务控制.

事务就是这样的一组操作. 在提交之前,他们必须在一个或多个上执行所有操作

成功. 如果其中一项操作失败,则所有操作都会失败,即事务是原子的.

即使发生硬件故障,事务也必须确保一致性. 当允许多个用户同时访问时,交易也会被返回

维护数据完整性.

例如: 一个应用程序可能会更新ORDERS表,以表明它接受了购买商品的订单,那么它应该更多.

新的INNENTORY表反映了库存的减少. 如果在第一次更新之后和第二次更新之前发生硬件错误

错误,将处于不一致状态,因为库存状况不能反映订单状况. 在交易控制下,两个

该表达式将同时提交,如果其中一个表达式失败,则会回滚(回滚).

18.3.2.2使用隐式控件

默认情况下,Delphi通过BDE为应用程序提供隐式事务控制. 当应用程序是隐式的

Delphi执行隐式事务控制,以便在事务控制期间将每个记录写入DataSet中. 它提交每个个人的写信

操作,例如发布和追加记录.

使用隐式事务控制很容易,它可以确保最小的记录更新冲突和一致的视图. 另一个

一方面,因为写入的每一行数据都必须受到事务控制,所以隐式事务控制将导致网络

网络太忙,应用程序性能下降.

如果使用显式事务控制,则可以选择最有效的时间来启动,提交和终止事务,尤其是在

在多用户环境中开发客户端应用程序以访问远程SQL服务器需要明确的控制.

18.3.2.3使用显式事务控制

可以将两种协作和独立的方式应用于Delphi应用程序的事务控制:

●使用TDatabase部件的方法和属性

●在TQuery部分中使用可传递SQL. 此方法仅在Delphi Client / Server Suite中可用

仅在该版本中有效,SQL链接会将SQL表达式直接传递给进程SQL或ODBC服务器

使用TDatabase组件的方法和属性的好处是提供一个清晰,轻巧且特定的或

与服务器无关的应用程序功能.

使用传递式SQL的主要好处是它可以使用特定服务器的高级事务管理功能.

1. 使用TDatabase的方法和属性

下表列出了TDatabase组件中用于事务管理的方法和属性以及如何使用它们:

表18.11用于显式事务控制的TDatabase方法表

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

方法或属性角色

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

Commit提交数据修改并终止交易

回滚取消数据修改并终止交易

StartTransaction开始交易

TransIsolation表示交易的独立程度

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

StartTransaction,Commit和Rollback用于应用程序在运行时调用启动事务,控制

delphi微信企业号开发_delphi开发视频教程_delphi应用项目开发实践

交易并保存或放弃数据修改方法.

TransIsolation是一个TDatabase组件,用于控制作用在同一张表上的不同事务之间如何交互

属性.

⑴开始交易

开始事务时,所有后续读取和写入的表达式都在该事务的上下文中出现.

每个表达式都是其中的一部分. 表达式所做的任何更改要么成功提交到,要么每个提交

修改已被取消. 考虑在ATM上的银行传输问题. 当客户决定从存款帐户转帐

付款时,必须对银行记录进行两项更改:

●必须从存款帐户中扣款

●必须将付款帐户记入贷方

如果由于某种原因无法完成其中一项操作,则应该不会执行任何操作.

由于这些操作相关,因此它们应该在同一笔交易中发生.

为了在Delphi应用程序中启动事务,您需要调用TDatabase部分

StartTransaction方法:

DatabaseInterBase.StartTransaction;

所有后续数据操作均在最近的事务中进行,直到该事务被Commit调用为止

或回滚明确终止.

那么,交易应保留多长时间?理想情况下,只要有需要,它都可以. 交易的活跃状态

同时访问的用户越长,在您的交易生命周期中打开的并发和并发交易越多

开始和结束,因此在尝试提交更改时,与其他事务发生冲突的可能性更大.

⑵提交交易

为了进行永久性修改,必须使用TDatabase组件的Commit方法提交事务. 执行提交表达

The

公式将保存修改并终止事务. 例如,以下表达式将终止上例中启动的事务:

DatabaseInterBase.Commit

提交调用应放在try ...中,但表达式除外. 如果无法成功提交交易,则可以

处理错误,然后重试操作.

⑶返还交易

为了取消修改,必须使用Rollback方法返回事务. 回滚可恢复交易

修改并终止交易,例如: 以下表达式将返回交易:

DatabaseInterBase.Rollback;

回滚通常发生在:

●异常处理代码

●按钮或菜单事件代码,如果用户单击“取消”按钮

⑷使用TransIsolation属性

TransIsolation属性描述了TDatabase组件的事务的独立级别,该级别决定了事件

事务如何与作用在同一表上的其他事务交互. 更改或设置TransIsolation的值

之前

,您应该熟悉Delphi的交易和交易管理.

TransIsolation的默认值为tiReadCommitted. 下表总结了TransIsolation的可能性

值并描述其含义:

表18.12 TransIsolation属性值的含义

——————————————————————————

独立级别的含义

────────────────────----

tiDirtyRead允许读取其他同时进行的事务将未提交的更改写入. 未提交

个

修改不是永久的,可以随时恢复. 在这个级别上,您

的事务与其他公司所做的更改具有最低的独立性.

tiReadCommitted仅允许读取其他同时进行的事务提交的修改. 这是默认设置

标准级别.

tiRepeatableRead允许单个读取事务,并且看不到其他同时执行相同数据的事务


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-177174-1.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 何林晓
      何林晓

      不明白的是号称民主国家的美国竟不顾天下苍生

    • 柳霞杰
      柳霞杰

      我记得那时俺年轻

    热点图片
    拼命载入中...