0

SqlTransaction transaction = connection.BeginTransaction()C# アプリケーションで SQLServer からデータを取得するために使用しています。

サーバーへの接続がない(インターネット接続がない)場合に発生する問題は、アプリケーションがフリーズして動作を停止し、例外もエラーもなく、フリーズするだけです。

エラーをキャッチするために使用しようとしtry catchましたが、それでもアプリケーションがフリーズするだけで、唯一のオプションはアプリケーションを強制終了することです。誰でもこのエラーをキャッチするのを手伝ってもらえますか?フリーズする代わりにエラーが発生します-のようにConnection to server failed. Please check internet connection.

接続用のクラスコードは次のとおりです。

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())

前もって感謝します。

PS アプリケーションは問題なく動作します。これまでのところ唯一の問題は、インターネットへの接続が失われたことです。私は解決策を見つけることができませんでした...

4

1 に答える 1

1

あなたの問題は

connection.Open();

はあなたのtryブロックの外にあるので、決してヒットしませんcatchtryそれをブロック内に移動します。

于 2014-03-18T12:45:02.817 に答える