【问题标题】:How to skip a counter if database connection cannot be established如果无法建立数据库连接,如何跳过计数器
【发布时间】:2014-06-03 21:11:58
【问题描述】:

我有一个填充电子表格的 vb.net 程序。该程序运行 3 个查询并使用“位置”信息进行循环。我有一个基本的下一个循环。

Try
    For icounter = 1 To 15
        Call GetLocationInfo()
        Call Query1()
        Call Query2()
        Call Query3()
    Next icounter
    xlworkbooks.Save()
Catch ex As Exception
    MsgBox(ex.Message)
    xl.Workbooks.Close()
End Try
xl.Workbooks.Close()

我遇到的问题是,假设位置“10”在晚上出现故障,这个程序将循环并在 10 点结束。如果它无法建立数据库连接,我希望它跳过一个位置(它应该跳过此位置的所有 3 个查询,然后跳转到“下一个柜台”有什么想法吗?

【问题讨论】:

  • 如果 GetLocationInfo() 是一个返回 True/False 值的函数,您可以添加一个 IF 以在 pne “下降”时跳过
  • @Shmewnix 你为什么使用Call ?不必要的。

标签: sql vb.net


【解决方案1】:

自从我破解任何 VB 以来已经有一段时间了,但我相信这两个都可以工作:

For icounter = 1 To 15
    Try
        Call GetLocationInfo()
        Call Query1()
        Call Query2()
        Call Query3()
    Catch ex1 As Exception
    End Try
 Next icounter

For icounter = 1 To 15
    Try
        Call GetLocationInfo()
    Catch ex1 As Exception
        Continue For
    End Try
    Call Query1()
    Call Query2()
    Call Query3()
Next icounter

对不起,如果我的语法有点不对。

请注意,这可能需要您重新考虑存在于 for 循环之外的 try/catch

【讨论】:

  • 我的 Try Catch 包含了 for 循环。我将它带入 for 循环,这解决了我的问题。谢谢。
【解决方案2】:

每个查询都有一个 try catch 块,每个查询都带有 counter + 1

【讨论】:

  • 你是说“计数器 +1”应该放在 Catch 部分吗?
  • 在每次尝试中查询和下一行计数器 +1。如果查询不成功,它将进入 catch 并且计数器不会增加。
  • 我希望他们增加...这就是重点...“如果站点 10 已死,请转到站点 11”
  • 如果你在 for 语句中使用 try catch,无论 for 索引是一次好的尝试还是进入了 catch,它都会继续。
  • 捕捉中应该包含什么?
猜你喜欢
  • 2013-07-19
  • 2016-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多