zoukankan      html  css  js  c++  java
  • delphi使用ODAC控件异步读取数据

    ODAC中异步查询(非阻塞执行)

    TOraQuery 、TOraSQL、TOraStoredProc中都有NonBlocking属性,可以通过设置NonBlocking属性实现异步查询或异步执行存储过程

    常用函数或事件

    启用或关闭异步执行

    property NonBlocking: boolean;
    //将NonBlocking属性设置为True,将通过单独的线程执行SQL语句并获取结果。

    判断执行状态

    function Executing: boolean;  //检查是否仍在执行SQL语句。
    //返回True,仍在执行SQL语句。
     
    function Fetching: boolean;  //检查是否仍在获取行。
    //返回True,仍在获取数据行。

    中断查询或执行

    procedure BreakExec; virtual;  //调用BreakExec方法来中断服务器上SQL语句的执行。
    //BreakExec不能中断PL / SQL块的执行;
    //调用BreakExec中断TOraDataSet中打开数据集的操作。如果已开始获取行,则可能无效(当BreakExec介于两次获取行操作之间时会发生这种情况)。

    鼠标状态

    property ChangeCursor: boolean;  //设置为True时,将允许数据访问组件在执行时更改屏幕光标。 默认值是true
    //将ChangeCursor属性设置为False,以防止在非阻塞模式下执行命令时屏幕光标改变。

    执行状态事件

    property BeforeExecute: TBeforeStatementExecuteEvent;  //在组件执行对数据库的查询之前发生。
    property AfterExecute: TAfterExecuteEvent;  //在组件执行对数据库的查询之后发生。
    property BeforeFetch: TBeforeFetchEvent;  //每当数据集要从服务器获取记录之前都会发生。
    property AfterFetch: TAfterFetchEvent;//数据集完成从服务器获取数据后发生。

    备注

    1.在NonBlocking模式下,从提取线程中调用事件。 因此,在BeforeFetch等事件处理程序的代码中需要使用线程同步机制。

    2.TOraStoredProc返回多个数据集时,调用OpenNext方法会再触发一次OnAfterExecute事件,但不会触发OnBeforeExecute事件

  • 相关阅读:
    1分钟快速生成用于网页内容提取的xslt
    Python即时网络爬虫项目: 内容提取器的定义
    Python读取PDF内容
    Golang基础(二)
    shell的sed命令
    matplotlib + pandas绘图
    关于字符编码:ascii、unicode与utf-8
    shell的sort命令
    shell的uniq命令
    shell的tr命令
  • 原文地址:https://www.cnblogs.com/txgh/p/13585339.html
Copyright © 2011-2022 走看看