CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  数据库(包含打印,安装,报表)

可否在sql语句执行超时错误时,让程序自动重复尝试执行该语句(不是sql语句本身的语法错误)

楼主shohoku_11(Azure)2005-01-01 22:23:03 在 VB / 数据库(包含打印,安装,报表) 提问

目前正在进行一个批次处理:  
  dim   rsSql   As   New   ADODB.Recordset  
  dim   strSql   as   String  
  ......  
  ......  
  while   not   rsSql.EOF  
          strSql="Update   ..."  
          cnAdo.Execute   strSql  
          rsSql.Movenext  
  wend  
  ......  
  ......  
   
  由于工作环境中数据库访问比较频繁,所以有时会出现cnAdo.Execute   strSql这条语句执行超时错误,或者有实时错误(不是sql语句本身的语法错误),所以是否有办法当这条语句执行出错时,程序不会中断或跳出,而是仍不断尝试执行该语句,直到执行成功。  
  这点真的让我十分困惑,总不能批次作业总是执行到一半就报错吧,拜托各位啦!  
  问题点数:100、回复次数:6Top

1 楼danielinbiti(金)回复于 2005-01-01 23:12:41 得分 10

on   error   resume   next       '试试吧,不然得改一下循环体,重复尝试链接  
  dim   rsSql   As   New   ADODB.Recordset  
  dim   strSql   as   String  
  ......  
  ......  
  while   not   rsSql.EOF  
          strSql="Update   ..."  
          cnAdo.Execute   strSql  
          rsSql.Movenext  
  wendTop

2 楼shohoku_11(Azure)回复于 2005-01-02 00:11:10 得分 0

on   error   resume   next   不是就要执行下一条语句了吗?可能是没有说清楚,一旦rsSql.Movenext,那么strSql的内容也就变了呀Top

3 楼cindytsai(笨笨的蔡鸟)回复于 2005-01-02 11:46:16 得分 20

要不就把“on   error   resume   next   ”改成“on   error   goto   语句标号   ”,当发生错误是,使程序转跳到语句标号所指示的程序块中处理。Top

4 楼danielinbiti(金)回复于 2005-01-02 16:45:34 得分 30

dim   TryFlag   as   boolean  
  while   not   rsSql.EOF  
          TryFlag=true  
          while   (TryFlag)  
                  on   error   goto   errhandle  
                  strSql="Update   ..."  
                  cnAdo.Execute   strSql  
                  tryflag=false  
              errhandle:  
          wend  
          rsSql.Movenext  
  wend  
  Top

5 楼CBean(C豆)回复于 2005-01-02 17:00:21 得分 40

dim   rsSql   As   New   ADODB.Recordset  
  dim   strSql   as   String  
   
  dim   nMaxLoop   as   integer  
   
  ......  
  ......  
  on   error   goto   PROC_ERR  
  while   not   rsSql.EOF  
          strSql="Update   ..."  
          cnAdo.Execute   strSql  
          rsSql.Movenext  
  wend  
  ......  
  ......  
  PROC_ERR:  
      If   Err   then  
            Err.Clear  
            nMaxLoop=nMaxLoop+1  
            if   nMaxLoop>1000   then     '最多尝试一千次  
                  Exit   sub  
            end   if  
            Resume  
      end   ifTop

6 楼shohoku_11(Azure)回复于 2005-01-02 20:24:59 得分 0

好像考虑越来越完善了,谢谢各位啦!Top

相关问题

  • asp执行sybase的SQL语句超时
  • SQL语句执行中,取得执行时间,如果超时怎样停止执行该SQL
  • 超难: ADO/BDE连接SQL Server,执行SQL语句出现"Lick time out \n SQL Server 连接超时"
  • 超难: ADO/BDE连接SQL Server,TADOQuery/TQuery执行SQL语句出现"Lick time out \n SQL Server 连接超时"
  • jsp中sql语句执行时间太长,用浏览器打开时,页面超时,如何处理?
  • 怎样执行sql语句?
  • sql语句执行问题
  • 如何执行SQL语句
  • 如何执行sql语句?
  • 如何执行SQL语句

关键词

  • 语句
  • 执行
  • sql
  • rssql
  • cnado
  • 错误
  • strsql
  • nmaxloop
  • tryflag
  • recordsetdim

得分解答快速导航

  • 帖主:shohoku_11
  • danielinbiti
  • cindytsai
  • danielinbiti
  • CBean

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo