视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
DataSnap客户端共享服务器端的数据库连接
2020-11-09 15:34:11 责编:小采
文档


客户端的一个连接(SQLConnection)能够共享服务器方法对数据库的访问连接。这样就可以做到一个客户端连接唯一关联服务器端的一条数据库连接;通过该共享连接,在客户端可以直接执行数据库的SQL语句以及存储过程,并且可以与服务器端的调用方法处于相同的事

客户端的一个连接(SQLConnection)能够共享服务器方法对数据库的访问连接。这样就可以做到一个客户端连接唯一关联服务器端的一条数据库连接;通过该共享连接,在客户端可以直接执行数据库的SQL语句以及存储过程,并且可以与服务器端的调用方法处于相同的事务上下文中。

共享连接的实现,是通过客户端调用服务器的一个返回TDBXConnection实例的方法来实现的。该返回实例并不是真正地返回到客户端,它仍然保留在服务器端,客户端随后提交执行的SQL语句或存储过程,就是由此实例来负责完成。为在客户端实现上的方便起见,返回TDBXConnection实例的服务器端调用方法可以在客户端的SQLConnection控件的TDBXPropertyNames.ServerConnection属性中指定,当客户端执行SQLConnection.Open时,就获得了一个服务器端的数据库共享连接。比如服务器端提供了这样一个函数:function TServerMethods1.GetShareConn: TDBXConnection,ServerConnection属性就设置为'TServerMethods1.GetShareConn'。

DataSnap也提供了一个内建方法DSAdmin.GetConnection返回TDBXConnection,客户端可以直接使用它来建立共享连接。但此方法要求服务器端部署dbxconnections.ini文件。在设计时,可以在IDE的Data Explorer预先创建一个数据库连接,比如取名为'myoracleconnection'。则客户端的ServerConnection属性就设置为DSAdmin.GetConnection("myoracleconnection")。

客户端共享连接的使用也是很简单的。客户端SQLConnection控件的Driver属性是'DataSnap',本来在客户端不能直接提交执行SQL语句或存储过程的,但在建立共享连接之后,就可以把该SQLConnection控件视为已经连接到数据库而不是DataSnap服务器,我们就可以在客户端放入TSQLDataSet控件,指定SQL语句或存储过程来执行;如果要返回数据集,就再放入TDataSetProvider、TClientDataSet等控件来实现。这样一来,就与以前的二层数据库应用开发非常类似了。

客户端在使用共享连接提交执行SQL语句或存储过程的同时,仍然可以通过该SQLConnection调用DataSnap服务器端暴露的服务器方法。

共享连接这种应用形式并不常见,但在某些特殊场合可能有用,比如由客户端完成数据库事务处理操作的时候。同时,共享连接,也可以减少数据库的并发连接数量,从而有效地降低服务器的资源使用情况。

下载本文
显示全文
专题