作者:sunhuan | 来源:互联网 | 2023-05-17 20:52
string admin=txtName .Text .Trim ();
string passWord=txtPassWord .Text .Trim ();
SqlConnection conn = new SqlConnection();
conn.ConnectionString = "Data Source=.;Initial Catalog=Admin;Integrated Security=True";
try
{
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "SELECT * FROM Administrator";
cmd.Connection = conn;
SqlDataReader data;
data = cmd.ExecuteReader();
while (data.Read())
{
if (data.GetValue(0).ToString() == admin && data.GetValue(1).ToString() == passWord)
{
Response.Redirect("Admin.aspx");
}
}
data.Close();
conn.Dispose();
}
catch (SqlException ex)
{
Response.Write(ex.Message);
}
10 个解决方案
有一种可能,就是数据库中的用户名和密码字段设成定长的char型了,要改成varchar型。char型长度不够会自动填充空格补足长度。
2楼的哥哥 我的数据库 一个是UserName nchar(10)字段 一个是PassWord nchar(10)而且就一个数据 Admin 123456,应该没有错啊
加多一个trim()函数试试,可能是有空格影响
if (data.GetValue(0).ToString().trim() == admin && data.GetValue(1).ToString().trim() == passWord)
最简单的是用goodsoft的方法ToString().Trim().Equals(admin)来判断。
还有个问题就是,如果直接Redirect,会导致数据库未关闭。最终可能会导致连接池满的结果。
谢谢各位哥哥 我知道错出在哪里了 输入用户Admin多了一个空格,谢谢四楼的哥哥所教的方法,虽然我还没有试过