我真的需要你帮助我在学校项目上工作。 我使用SqlDataReader来存储我的数据,在存储数据后(当我尝试使用sqldatareader结果视图时,我检查了它的数据)当我尝试使用sqldatareader变量时,它具有所有数据,它直接变为空? 在到达if行之前,我的sqlreader包含了所有数据,但是当我调试if行时,它显示sqlreader是空的!
class ServicesProvider
{
public static SqlConnection connection = new SqlConnection(myprovider);
public static bool LogInVerification(string NickName,string Password)
{
SqlDataReader SqlReader;
SqlCommand command;
try
{
command = new SqlCommand("Check_LogIn", connection);
command.CommandType = CommandType.StoredProcedure;
SqlParameter prm=null;
prm = new SqlParameter("@Password", SqlDbType.VarChar);
prm.Value=NickName;
prm.Direction=ParameterDirection.Input;
command.Parameters.Add(prm);
prm = new SqlParameter("@NickName", SqlDbType.VarChar);
prm.Value=Password;
prm.Direction=ParameterDirection.Input;
command.Parameters.Add(prm);
try
{
connection.Open();
SqlReader = command.ExecuteReader();
if (SqlReader["NickName"].ToString()== "1")
return true;;
}
catch (Exception ERROR)
{
Console.WriteLine(ERROR.Message);
}
}
catch (Exception error)
{
Console.WriteLine(error.Message);
}
return false;
}
}
答案 0 :(得分:6)
这段代码就是问题:
SqlReader = command.ExecuteReader();
if (SqlReader["NickName"].ToString()== "1")
当ExecuteReader
返回时,读者位于之前第一个结果。您需要致电Read
来阅读结果。通常情况是:
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
// Handle the data for this row
}
}
注意:
ExecuteScalar
using
语句SqlReader
)using
语句自动进行)