我设了一个断点需要查看reader.IsClosed的状态是否关闭,可是断点到 return user;后就跳出方法了,
也就是reader.Close();这个没有走过,reader的IsClosed的值是“false”.
意思是没有关闭呀,那么我的reader的.Close();永远都不执行了么?咋办呢
public static LoginUserModel getUserByUserName(string userName)
{
LoginUserModel user = new LoginUserModel();
SqlDataReader reader = DataHelpe.ExecuteReader(sql); while(reader.Read())
{
user.user_id = Convert.ToInt32(reader["use_id"].ToString());
user.userName = reader["name"].ToString();
...
}
return user;
reader.Close();
Console.WriteLine("读取完毕后的状态:" + reader.IsClosed.ToString());
}
也就是reader.Close();这个没有走过,reader的IsClosed的值是“false”.
意思是没有关闭呀,那么我的reader的.Close();永远都不执行了么?咋办呢
public static LoginUserModel getUserByUserName(string userName)
{
LoginUserModel user = new LoginUserModel();
SqlDataReader reader = DataHelpe.ExecuteReader(sql); while(reader.Read())
{
user.user_id = Convert.ToInt32(reader["use_id"].ToString());
user.userName = reader["name"].ToString();
...
}
return user;
reader.Close();
Console.WriteLine("读取完毕后的状态:" + reader.IsClosed.ToString());
}
{
LoginUserModel user = new LoginUserModel();
SqlDataReader reader = DataHelpe.ExecuteReader(sql);
try
{
while(reader.Read())
{
user.user_id = Convert.ToInt32(reader["use_id"].ToString());
user.userName = reader["name"].ToString();
...
}
}
finally
{
reader.Close();
Console.WriteLine("读取完毕后的状态:" + reader.IsClosed.ToString()); }
return user;
}
先close再return
Console.WriteLine("读取完毕后的状态:" + reader.IsClosed.ToString());
return user;
{
while(reader.Read())
{
user.user_id = Convert.ToInt32(reader["use_id"].ToString());
user.userName = reader["name"].ToString();
...
}
}
finally
{
reader.Close();
}
我先是这么想的,如果先关闭了再return的话,都关闭了,还···
现在真是大彻了!!!晕呀我···
谢谢大家给我提示!!!!!
using(SqlDataReader reader = DataHelpe.ExecuteReader(sql))
{
while(reader.Read())
{
user.user_id = Convert.ToInt32(reader["use_id"].ToString());
user.userName = reader["name"].ToString();
...
} reader.Close();
return user; }