我在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要求连接必须是一直打开的,但是用完了怎么关闭连接?????
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要求连接必须是一直打开的,但是用完了怎么关闭连接?????
调用的地址进行关闭SqlDataReader就行了。
sdr.Close时连接也会关闭
while (sdr.Read())
{
Console.WriteLine(sdr[0].ToString());
}
sdr.Close();//这里会自动关闭SqlDataReader