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爲空,並且HasRows = False,但它確實有行。所以,它不斷驗證我的登錄不正確,因爲id = -1,C#SqlDataReader = null?
幫助?
要發佈的代碼應該是「SqlCom」的代。 – 2010-03-23 14:43:56
其次...如果myreader爲null,那麼「HasRows」不能爲false。 – 2010-03-23 14:45:09
*請參閱編輯的第一篇文章* – tom 2010-03-23 14:51:11