Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# sqltransaction上的BeginTransaction()冻结,如何使用try-catch解决此问题?_C#_Try Catch_Sqltransaction - Fatal编程技术网

C# sqltransaction上的BeginTransaction()冻结,如何使用try-catch解决此问题?

C# sqltransaction上的BeginTransaction()冻结,如何使用try-catch解决此问题?,c#,try-catch,sqltransaction,C#,Try Catch,Sqltransaction,我在C#应用程序中使用SqlTransaction=connection.BeginTransaction()从SQLServer获取数据 当我没有连接到服务器(没有internet连接)时,我的应用程序就会冻结并停止工作,没有异常,没有错误,只是冻结 我尝试使用try-catch捕捉错误,但即使如此,应用程序还是会冻结,唯一的选择是终止应用程序。有谁能帮我抓住这个错误,并告诉我一个错误,比如连接到服务器失败。请检查互联网连接。 以下是我的连接类代码: public static class R

我在C#应用程序中使用
SqlTransaction=connection.BeginTransaction()
从SQLServer获取数据

当我没有连接到服务器(没有internet连接)时,我的应用程序就会冻结并停止工作,没有异常,没有错误,只是冻结

我尝试使用
try-catch
捕捉错误,但即使如此,应用程序还是会冻结,唯一的选择是终止应用程序。有谁能帮我抓住这个错误,并告诉我一个错误,比如连接到服务器失败。请检查互联网连接。

以下是我的连接类代码:

public static class RequestID
{
    // Methods
    public static int GetID(string server, string database, string user, string pass)
    {
        int num = 0;
        using (SqlConnection connection = new SqlConnection(string.Format("server={0};database={1};uid={2};pwd={3};Connect Timeout=900", new object[] { server, database, user, pass })))
        {
            SqlCommand command = new SqlCommand("SELECT Value_Int FROM Param WHERE code= 'counter'");
            SqlCommand command2 = new SqlCommand("UPDATE Param SET Value_Int = Value_Int + 1 WHERE code= 'counter'");
            if (connection.State != ConnectionState.Open)
            {
                connection.Open();
            }
            try
            {
                using (SqlTransaction transaction = connection.BeginTransaction())
                    {
                        try
                        {

                            command.Connection = connection;
                            command.Transaction = transaction;
                            command2.Connection = connection;
                            command2.Transaction = transaction;
                            num = (int)command.ExecuteScalar();
                            command2.ExecuteNonQuery();
                            transaction.Commit();
                        }
                        catch (Exception)
                        {
                            transaction.Rollback();
                            throw;
                        }
                        finally
                        {
                            if (connection.State != ConnectionState.Closed)
                            {
                                connection.Close();
                            }
                        }
                    }
                }

            catch (Exception ex)
            {
                throw;
            }            


            return num;
        }
    }
}
问题在于:

using (SqlTransaction transaction = connection.BeginTransaction())
提前谢谢


p.S.应用程序工作正常,目前唯一的问题是与互联网的连接丢失。我无法找到解决方案…

您的问题是因为

connection.Open();
在您的
try
块之外,因此您将永远不会点击
捕捉。

移动你的<代码>尝试< /代码>块.< /p>另外考虑更改连接.CalnTimeExtUp属性,如果1分钟的挂起对你来说是太多的答案,并且注释从即刻开始,谢谢。