找回密码
 论坛注册
搜索
查看: 36|回复: 0

跨平台软件异步查询操作关系库

[复制链接]
  • 打卡等级:热心大叔
  • 打卡总天数:142
  • 打卡月天数:5
  • 打卡总奖励:2245
  • 最近打卡:2025-12-23 12:18:03

303

主题

48

回帖

5万

积分

管理员

积分
59509

最佳新人活跃达人技术达人先锋会员官方徽章

发表于 2023-12-14 14:55:07 | 显示全部楼层 |阅读模式
同步异步差异
①同步方式
  紫金桥常用SQL查询方式是同步方式,当发生查询数据量过大或关系库所在主机网络故障等需要较长时间才能返回结果的情况时,引起的DB、VIEW和WEB客户端进程阻塞,表现就是画面卡住不动,操作不了。

②异步方式
  为避免同步的缺点,紫金桥跨平台里增加了异步查询组件(20211120之后版本里有),发出查询命令后,主进程不会等待查询结果返回,不会影响到任何数据刷新、动画以及脚本的执行。

异步查询介绍
  • 异步查询

        发起查询请求后,发起请求的进程并不等待查询结果返回而继续执行其他任务,查询返回的结果由回调函数处理。
  • 回调函数

       用于处理异步查询返回结果的函数。当异步查询的结果返回时,执行回调函数的函数体中的脚本。
  • 流程示意

          paste1645173279287.png

异步查询使用步骤
  • 创建异步查询对象

       paste1645172589287.png

  • 配置关系数据库链接

       paste1645172732448.png

  • 创建自定义回调函数

       paste1645173393115.png


注意:回调函数写了两种,①对于执行 ExecNoRet不带记录集返回的查询,回调函数 传参为string类型,空表示成功,否则为错误描述。
              ②于执行Query 带记录集返回的查询,回调函数 传参为Obtable类型,记录集结果返在tab表里.

  • 画面按钮执行脚本示例
  1. //插入数据
  2. SqlAsyn1.ExecNoRet("insert into kuanbiao_insert values("+ToString(CurTime)+","+ToString(Rand(100))+","+ToString(Rand(100))+")",ProcessSqlRet)
复制代码
  1. //查询数据
  2. SqlAsyn1.Query("select * from kuanbiao_insert",ProcessSqlQueryRet)
复制代码
  • 函数说明
  1. ExecNoRet(String SqlCommand, Function CallBack) As Bool
  2. 说明
  3.    执行无返回记录集的SQL命令,如建表、插入、更新、删除等SQL命令。回调函数需带有String参数。
  4. 参数
  5.    SqlCommand: 要执行的SQL命令。
  6.    CallBack: 回调函数,带有一个Err字符串参数,Err空表示成功,否则为错误描述。
复制代码
  1. Query(String SelectString, Function CallBack) As Bool
  2. 说明
  3.    向指定的数据源发出数据查询请求,异步返回结果。结果返回时调用回调函数CallBack,该函数带有ObTable参数。

  4. 参数
  5.    SelectString: 查询语句
  6.    CallBack: 函数参数必须为传地址的ObTable对象,该对象中为返回的查询结果
复制代码




顶部qrcode底部
帅的人都用微信扫了!
快速回复 返回顶部 返回列表