数据库异步操作(ADODB)

2016-01-29 11:50 13 1 收藏

数据库异步操作(ADODB),数据库异步操作(ADODB)

【 tulaoshi.com - C语言心得技巧 】

       在VC或VB中需要耗时的查询时,  客户一般需要等待很长一段时间, 这种情况客户是无法容忍而且也无法取消, 那么怎样么办呢. 

         1.首先采用多线程的方式, 工作线程与UI线程分开, 工作线程处理完毕时向主线程发消处理完毕的消息;另一种方法采用向窗口发送消息. 注意这里是寄送的方式,不要问我为什么, 我也不会告诉你.简而言之,            

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com)

        PostThreadMessae与PostMessage两个API函数,当然你得传递参数或者使用全局变量也可以.

         2.SQL语句的执行.大家知道(也许你还有可能没有使用过, 那赶紧用吧,免得你的客户骂你),在ADODB的三个对象中Connection, Recordset, Command都支持异步的方式(别告诉我你不晓得, 反正我也不会告诉你的),在其参数

       Options中使用adAsyncExecute ( 0x10) , 这样你执行命查询或返回记录集时都是以异步方式,换句话说就是盖子帮你另外开了个线程处理。

       注意:通常创建一个线程要等待其结束,因为我们有可能要实现等待用户取消执行,所以。。。。。,另外可以通过判断对象的状态是:Connection的状态是否为adStateOpen(当然是你正确连接到数据源,否则我就要打你 PP), 知道如何做了吧;另外一种就通过事件通知, ExecuteComplete(看MSDN去), 要实现客户端通知(得懂COM知道,具体的也看书去吧或者我下次有空再写出来)。

       哈哈, 这样就实现了异步执行查询了哈, 不要告诉我你发现了新大陆或者说你知道的再者我说错的敬请赐教。

一段示例:

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com)

_ConnecctionPtr pCon;

if(FAILED(pCon.CreateInstance("ADODB.CONNECTION"))) return FALSE;

pCon-Open("Provider=SQLOLEDB;UID=SA;PWD=;", "", "", adOpenUnspecified /*这里用adAsyncExecute也可以实现异步方式,对应的事件是ConnectionComplete);

      while(TRUE)

 {

      if(bCancel)

     {

           pCon-Cancel(); //一定要执行,否则出现异常不关我的事情,因为你拿了人家的东西迟早要还的。

           return FALSE;

    }

    if(pCon-adState == adStateOpen) break;  // 处理完了哈,该退出了。

     Sleep(0);  //一定要执行这条语句,否则盖子的工作效率低哈,为啥子要使用0去看MSDN。

 

}

来源:https://www.tulaoshi.com/n/20160129/1483546.html

延伸阅读
标签: ASP
<1 .数据库连接(用来单独编制连接文件conn.asp) < % Set conn = Server.CreateObject("ADODB.Connection") conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\bbs\db1\user.mdb") % (用来连接bbs\db1\目录下的user.mdb数据库) <2 显示数据库记录 原理:将数据库中的记录一一显示到客户...
标签: Java JAVA基础
  - 数据分页显示 - JDBC 2.0:ODBC 通过jdbc:odbc可以实现Jsp对数据库的操作,在这个例子中我将数据库的连接写在了一个JavaBean中,可以实现重复使用 pagetest.jsp文件: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" <%@page contentType="text/html;charset=gb2312" % <jsp:useB...
标签: ASP
  前段日子发表的文章,数据库的连接代码可以直接在ASP文件中显示出来。这次又进行了一次封装。 打开vb,新建Activex控件,工程名称为WebDb,类模块名称为GetInfomation 引用”Microsoft Activex Data Object 2.6 Library ” Private Conn As ADODB.Connection Private Rs As ADODB.Recordset ‘作用:判断数据库是否正确连结 '自...
标签: ASP
     其实,大家在书写asp程序时,最担心的可能就是数据库的连接信息,会被一些人看到,进行一些破坏。下面我们用vb6.0来做一个动态链接库(.dll)来隐藏数据库的连接信息。 启动vb6.0,新建--Active  dll工程。单击"工程"--引用,选择"microsoft  active  server  pages  object  library" ...
标签: Web开发
有的时候,我们经常需要把客户信息等一些资料发布到网上以便联系,但是随着客户资料的越来越多,网上更新是越来越力不从心,这该怎么办?其实,除了用asp、php等这些后台语言来实现快捷更新外,Dreamweaver本身就提供了数据导入与排序的方法,这对不懂后台的朋友来说绝对是个大大的福音,Dreamweaver从版本3到最新的MX一直都保留了该功能,可...

经验教程

130

收藏

85
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部