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) 

それ以外の場合は、1行ではなく0行であるかどうかを確認してから、データがある行0で結果を確認できます

于 2012-07-18T12:10:08.533 に答える
1

この状態でお試しください。

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