String sqlCheckPass =
"Select * from Login where Username like @Username and Password like @Password";
SqlCommand SqlCom = new SqlCommand(sqlCheckPass, myConnection);
SqlCom.Parameters.Add(new SqlParameter("@Username", sUserName));
SqlCom.Parameters.Add(new SqlParameter("@Password", sPassword));
myConnection.Open();
SqlDataReader myreader;
myreader = SqlCom.ExecuteReader();
int id = -1;
ErrorBox.InnerHtml = "Username:" + sUserName + ":" + sPassword + ":<br/>";
while (myreader.HasRows)
{
id = (int)myreader["id"];
String sUser = (String)myreader["Username"];
String sPass = (String)myreader["Password"];
ErrorBox.InnerHtml += "UserId is <b>" + id + "</b> " + sUser + ":" + sPass + ":<br >";
Session["LoginID"] = id;
Server.Transfer(ReturnPage);
}
if (id == -1)
{
ErrorBox.InnerHtml = "Incorrect Password";
}
myConnection.Close();
catch (Exception err)
{
ErrorBox.InnerHtml = "Error Getting Option ID" + err.Message;
}
我在 myreader = SqlCom.ExecuteReader(); 处添加了一个断点;它不断将 myreader 返回为 null 和 HasRows = False,但它确实有行。因此,由于 id = -1,它不断验证我的登录信息不正确,
帮助?
最佳答案
您没有将您的阅读器连接到您的 SQL 连接/命令?
SqlConnection myConnection = new SqlConnection(myConnectionString);
SqlCommand myCommand = new SqlCommand(mySelectQuery, myConnection);
myConnection.Open();
SqlDataReader myReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
while(myReader.Read())
{
Console.WriteLine(myReader.GetString(0));
}
myReader.Close();
关于C# SqlDataReader = null?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2500747/