0

我不确定我在这里做错了什么。

我没有收到实际错误,但每次都返回 false:

string commandString = 
    "SELECT * FROM UserTable WHERE Username = @UserName";
DataTable result = new DataTable();
using (SqlCommand command = new SqlCommand(commandString, dataConnection))
{

    command.Parameters.Add("@UserName", SqlDbType.VarChar).Value = info.username;
    using (SqlDataReader dr = command.ExecuteReader())
    {
        result.Load(dr);
    }
}
if (result.Rows.Count > 0)
{
    Console.WriteLine((string)result.Rows[0]["Password"]);
    Console.WriteLine((string)result.Rows[0]["Username"]);
    Console.WriteLine(info.password);
    Console.WriteLine(info.username);
    string dbPassword = (string)result.Rows[0]["Password"];
    if (string.Compare(dbPassword, info.password) == 0)
        return true;
    else return false;
}
else
    return false;
4

2 回答 2

7

认为我看到了问题

if (result.Rows.Count == 0) 

需要是

if (result.Rows.Count == 1) 

否则,您检查是否有 0 行而不是 1 行,然后您可以检查数据所在的第 0 行的结果

于 2012-07-18T12:10:08.533 回答
1

在条件下试试这个。

dbPassword.ToLower().trim() == info.password.ToLower().trim()
于 2012-07-18T12:41:34.423 回答