【问题标题】:C# SQL: get sql connection try attemptC# SQL:获取 sql 连接尝试尝试
【发布时间】:2016-07-18 02:56:51
【问题描述】:

我正在尝试获取 SQLConnection 的尝试尝试次数,以通知用户这些尝试。 下面你可以看到代码,魔法应该发生的地方。 'i' 将是尝试的次数。连接“con”引发了很多 SqlExceptions,但我无法捕获它们,如下所示。 'databaseConnection' 表示连接字符串。出于测试目的,它目前是空的。 我敢打赌,我错过了一些东西,但我不知道是什么,因为我是 C# 中的 SQL 编程新手。 “txtProgressbarWorking”是 UI 中的一个标签。

                int i = 1;
                con = new SqlConnection(databaseConnection);
                try
                {
                    con.Open();
                }
                catch(SqlException s)
                {
                    txtProgressbarWorking.Content = "Connecting... " + (++i);
                }

【问题讨论】:

    标签: sql timeout database-connection sqlexception


    【解决方案1】:

    这段代码有几个问题:

    1) 你是在某种循环中调用它吗?如果没有,您的 i 变量将不会增加。

    2) SqlConnection.Open() 抛出几种异常——不仅仅是SqlException,我认为这就是为什么你“无法捕捉到它们”的原因,就像你提到的那样。理想情况下,您应该指定每个异常或捕获更高级别的System.SystemException

    3) 增加进度条的代码位于异常处理程序的 catch 块中,只有在捕获到异常时才会执行。如果您实际上是在循环中调用此代码,您可能希望将 catch 块中的代码移到 try 块中。

    4) 你的++i 应该是i++ 以便i 在语句之后递增;要么,要么将i 初始化为零而不是1。按照您现在的方式,您的catch 块中i 的第一个值将是2。

    我建议你看看[MSDN's documentation on SqlConnection.Open Method ()][1] https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.open%28v=vs.110%29.aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-06
      • 2011-06-16
      • 1970-01-01
      • 2011-10-09
      • 1970-01-01
      • 1970-01-01
      • 2011-07-29
      • 1970-01-01
      相关资源
      最近更新 更多