关闭数据库连接

时间:2012-12-27 16:44:35

标签: .net sql database

要关闭我的数据库,我使用它:SqlConnection.Close(); 但我的申请仍然坚持这种方法...

每次访问数据库时,我都会这样做:

string cmdSQL = "select min(shortAddress) from FreeShortAddress";

using (SqlCeCommand cmd = new SqlCeCommand(cmdSQL))    
{
    cmd.Connection = (SqlCeConnection)this.SqlConnection;    
    var r = cmd.ExecuteScalar();    
}

这是正确的方法吗?你怎么看到哪个连接(在哪个表上)被阻止?

谢谢。

[编辑]你知道一个强制关闭所有连接而不被卡住的命令吗?

3 个答案:

答案 0 :(得分:2)

打开和关闭连接时使用的一般模式如下所示:(取自an older answer of mine on a question about the using statement。)此模式在应该关闭时自动关闭连接。 (退出using语句时)

using (SqlConnection connection = new SqlConnection(connectionString)) 
{    
  int employeeID = findEmployeeID();    
  try    
  {

            connection.Open();
            SqlCommand command = new SqlCommand("UpdateEmployeeTable", connection);
            command.CommandType = CommandType.StoredProcedure;
            command.Parameters.Add(new SqlParameter("@EmployeeID", employeeID));
            command.CommandTimeout = 5;

            command.ExecuteNonQuery();    
   } 
   catch (Exception) 
   { 
      /*Handle error*/ 
   }

}

答案 1 :(得分:1)

尝试使用:

using (SqlCeCommand cmd = new SqlCeCommand(cmdSQL))    
{
    cmd.Connection = (SqlCeConnection)this.SqlConnection;    
    var r = cmd.ExecuteScalar(CommandBehavior.CloseConnection);    
}

答案 2 :(得分:0)

这是关闭连接时的一种方式,我真的在任何地方使用它来避免使用try catch语句混乱代码,顺便说一下你可以在你的版本中使用yield关键字。 但不是尝试捕获。:))