• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

DataSnap客户端共享服务器端的数据库连接

mysql 搞代码 4年前 (2022-01-09) 13次浏览 已收录 0个评论

客户端的一个连接(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等控件来实现。这样一来,就与以前的二层数本文来源gao@daima#com搞(%代@#码@网2据库应用开发非常类似了。

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

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


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:DataSnap客户端共享服务器端的数据库连接
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址