none
C++客户端程序强制终止查询,程序自动退出 RRS feed

  • 问题

  • App上提供“查询”、“停止”两个按钮用于查询记录、终止查询, 停止查询内部实现的SQL为“ kill  连接ID ”,实验发现客户端连续交叉点击“查询”、“停止”两个按钮,就会跳灰叉,然后程序自动退出。

    C++代码即使用了 try catch ,也没有办法捕捉到错误。

    有哪位朋友知道,怎么通过客户端程序,强制终止查询过程。

    我的数据库是SQL SERVER

     

    2011年9月13日 1:09

答案

  • 由于ADO的查询状态不稳定,现在决定数据库连接对象关闭后,再release 一次,这样连接对象被指置空。程序中,数据库对象为空时,创建新的一个链接,就可以了。
    2011年9月16日 9:04

全部回复

  • How can you kill own session?

    2011年9月13日 1:19
  • 自己是无法kill自身的,所以开启一个新的连接去 kill 正在查询的连接

    2011年9月13日 1:22
  • How do you find that spid to kill? You give app user permission to kill other session?
    2011年9月13日 3:03
  • 提供了停止当前查询线程的接口,没有提供终止任意的数据库连接

    2011年9月13日 15:35
  • Then how to expect stop button work?
    2011年9月13日 17:51
  • 只有新建一个连接KILL 当前连接

    这样得重新查询当前显示在界面上的数据。。会麻烦点


    Try SQL Server 2008 QQ:315054403 dgdba@hotmail.com
    2011年9月14日 3:33
  • 只有新建一个连接KILL 当前连接

    这样得重新查询当前显示在界面上的数据。。会麻烦点


    Try SQL Server 2008 QQ:315054403 dgdba@hotmail.com
    2011年9月14日 3:33
  • 设置这个停止按钮的目的,也是为了防止查询时间过久提供的。在单线程的环境中测试,毫无问题,但是多线程的环境下,直接跳灰叉

    2011年9月14日 11:09
  • 还好,不麻烦的。因为我保存了当前的链接对象;
    2011年9月14日 11:09
  • 今天做实验,发现是多线程情况下调用停止查询接口的问题,多线程没有正确使用ADO, 导致跳灰叉。

    但是又有一个新的发现:使用ADO不断的打开连接,连接前判断连接是否关闭,是则直接返回连接对象,否则,重新打开一个连接。连续运行这个接口时,发现会获取到不同的数据库会话ID,不知道是不是ADO状态判断不准确的原因导致。假如状态不稳定,要怎么样才能正确获取数据库连接状态,难道每次都要访问一次数据库,才知道是否该连接有效打开的?


    • 已编辑 Y.P. _ 2011年9月15日 8:33
    2011年9月15日 8:32
  • 由于ADO的查询状态不稳定,现在决定数据库连接对象关闭后,再release 一次,这样连接对象被指置空。程序中,数据库对象为空时,创建新的一个链接,就可以了。
    2011年9月16日 9:04