【发布时间】:2015-07-21 22:03:37
【问题描述】:
我需要创建一个类,其中包含用于通过登录控件为用户检查 SQL Server 表的逻辑。当我运行我的代码并在登录控件中输入数据时,它无法识别用户并写入错误消息。有人可以查看我的代码是否有错误吗?
这是课程代码:
public int checkUser (string Username, string Password)
{
using (SqlConnection sqlCnn = new SqlConnection(cnn))
{
Int32 count = 0;
string sqlQuery = "SELECT COUNT(*) AS LoginInfo FROM users" +
"WHERE Username = @Name AND Password = @Password";
//sqlCnn.Open();
using (SqlCommand comm = new SqlCommand(sqlQuery, sqlCnn))
{
//comm.Parameters.AddWithValue("@Name", Username);
//comm.Parameters.AddWithValue("@Password", Password);
comm.Parameters.Add("@Name", SqlDbType.NChar).Value = Username;
comm.Parameters.Add("@Password", SqlDbType.NChar).Value = Password;
try
{
sqlCnn.Open();
count = (Int32)comm.ExecuteScalar();
}
catch (Exception ex)
{
Console.WriteLine("Error");
}
finally
{
sqlCnn.Close();
}
return (Int32)count;
}
}
}
这是实现代码:
protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
{
User1 user = new User1();
string name = Login1.UserName;
string pass = Login1.Password;
if (user.checkUser(name, pass) > 0)
{
Response.Redirect("mainPage.aspx");
}
else
{
Label1.Text = "Error";
}
}
【问题讨论】:
-
您是否调试过您的代码以及
checkUser方法究竟返回了什么? -
尝试直接在SSMS上运行查询,看看结果如何。可能存在一些空白问题。
-
请告诉我们您不是真的以纯文本格式存储密码!
-
我是初学者,这是我的练习项目,我想先让这个工作,然后我会尝试更改通行证存储。
-
checkUser 方法应该接受两个值,username 和 pass 并检查该数据是否存在于 users 表中。
标签: c# sql asp.net sqlcommand