要关闭我的数据库,我使用它:SqlConnection.Close(); 但我的申请仍然坚持这种方法...
每次访问数据库时,我都会这样做:
string cmdSQL = "select min(shortAddress) from FreeShortAddress";
using (SqlCeCommand cmd = new SqlCeCommand(cmdSQL))
{
cmd.Connection = (SqlCeConnection)this.SqlConnection;
var r = cmd.ExecuteScalar();
}
这是正确的方法吗?你怎么看到哪个连接(在哪个表上)被阻止?
谢谢。
[编辑]你知道一个强制关闭所有连接而不被卡住的命令吗?
答案 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关键字。 但不是尝试捕获。:))