.net SqlCommand.ExecuteReader是否关闭连接?
-
03-07-2019 - |
题
在这句话中:
myCommand.ExecuteReader(CommandBehavior.CloseConnection)
是否在异常的情况下关闭连接?
解决方案
有很多方法可以解决命令。
最终,数据阅读器的Close方法将关闭连接,前提是没有出错。
如果在ExecuteReader或其任何被调用的方法中发生异常,则在构造实际的DataReader对象之前,则不会,连接将不会关闭。
如果发生异常,我不相信它会关闭连接。
其他提示
做“正常”的最安全的方法查询是
using (var conn = new SqlConnection("..."))
{
conn.Open();
using (var cmd = conn.CreateCommand())
{
cmd.CommandText = "...";
using (var reader = cmd.ExecuteReader())
{
while (reader.Read())
{
// ...
}
}
}
}
可以在此代码之外捕获异常。
这取决于发生异常的地方!
如果您正确构建了try catch,那就没问题了。
例如:
SqlCommand myCommand = new SqlCommand();
try
{
myCommand.dostuff();
}
catch(Exception ex)
{
// display error message
}
finally
{
myCommand.ExecuteReader(CommandBehavior.CloseConnection);
}
如果行:myCommand.ExecuteReader(CommandBehavior.CloseConnection)失败(可能数据库已关闭?)则无法以编程方式关闭连接。
不隶属于 StackOverflow