我在C#应用程序中使用SqlTransaction transaction = connection.BeginTransaction()
从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())
提前致谢。
P.S。应用程序工作得很好,到目前为止唯一的problam连接到互联网丢失。我无法找到解决方案......
答案 0 :(得分:1)
你的问题是因为
connection.Open();
在try
区块之外,因此您永远不会点击catch
。
将其移到try
区块内。