当数据可用时,我想填充一个网格。
如果在中运行一个非常大的sql查询,则结果窗口将在行准备就绪时开始填充它们(实际上我想模仿这一点),但是在运行SQlExecDirect()时,必须等待所有行都计算完毕。
下面的代码是Microsoft关于异步执行SQLExecDirect()的示例
SQLHSTMT hstmt1;
SQLRETURN rc;
// Specify that the statement is to be executed asynchronously.
SQLSetStmtAttr(hstmt1, SQL_ATTR_ASYNC_ENABLE, SQL_ASYNC_ENABLE_ON, 0);
// Execute a SELECT statement asynchronously.
while ((rc=SQLExecDirect(hstmt1,"SELECT * FROM Orders",SQL_NTS))==SQL_STILL_EXECUTING) {
// While the statement is still executing, do something else.
// Do not use hstmt1, because it is being used asynchronously.
}
// When the statement has finished executing, retrieve the results. 有没有人知道是否有可能或如何异步调用SQLFetch()并在其可用时检索每一行?
发布于 2018-02-19 13:57:31
我不认为异步执行会实现您想要的结果。如果指定了快速转发ODBC游标类型,Server将在结果可用时将结果返回给客户端。
另外,在查询仍在运行时,在GUI界面中显示部分结果可能需要特殊的编程技术。这并不是真正的数据库问题,所以如果您有更多的问题,StackOverflow将是一个更好的论坛。
https://dba.stackexchange.com/questions/198255
复制相似问题