ADO.NET中使用ExecuteReader怎么关闭数据库连接????
我在sqlhelper写了方法:
public static SqlDataReader ExecuteReader(CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
{
SqlConnection conn = new SqlConnection(StrConn);
conn.Open();
try
{
SqlCommand cmd = new SqlCommand(cmdText, conn);
for (int i = 0; i < commandParameters.Length; i++)
{
cmd.Parameters.Add(commandParameters[i]);
}
cmd.CommandType = cmdType;
SqlDataReader sdr = cmd.ExecuteReader();
cmd.Parameters.Clear();
return sdr;
}
catch
{
conn.Close();
throw;
}
}
这样写没有关闭数据库连接。如果在这个方法中关闭了连接,前边用到这个方法就会报错,因为SqlDataReader要求连接必须是一直打开的,但是用完了怎么关闭连接?????
------解决方案--------------------cmd.ExecuteReader(CommandBehavior.CloseConnection);
sdr.Close时连接也会关闭
------解决方案--------------------SqlDataReader sdr = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
while (sdr.Read())
{
Console.WriteLine(sdr[0].ToString());
}
sdr.Close();//这里会自动关闭SqlDataReader