C#-UPDATE WHERE子句中存在语法错误

时间:2018-11-27 20:00:21

标签: c# sql visual-studio ms-access

public static bool ChangePassword(string username, string password)
{
    string sql = "UPDATE Users SET Password = @Password WHERE UserName = @Username";
    OleDbCommand cmd = new OleDbCommand(sql, connect);
    cmd.Parameters.AddWithValue("@Password", hashPassword(password));
    cmd.Parameters.AddWithValue("@Username", username);

    connect.Open();

    int rows = cmd.ExecuteNonQuery();

    if (rows > 0)
        return true;

    return false;
}

连接字符串定义为类的属性。另外,我使用这种方法在其他函数中设置参数,它们可以正常工作,我不知道这是什么问题。 我收到此SQL语句的语法错误,我不知道这是怎么回事。

修改

这是一个起作用的函数,它是INSERT sql语句,但是代码相似。希望对您有所帮助,找出此UPDATE的问题。

public static bool CreateUser(string username, string password)
{
    OleDbCommand cmd = new OleDbCommand("INSERT INTO Users VALUES(@Username, @Password)", connect);
    cmd.Parameters.AddWithValue("@Username", username);
    cmd.Parameters.AddWithValue("@Password", hashPassword(password)); 

    connect.Open();

    int rows = cmd.ExecuteNonQuery();

    if (rows > 0) return true;
    else return false;
}

1 个答案:

答案 0 :(得分:0)

您可能想要这个

cmd.Parameters.Add("@Password", SqlDbType.VarChar).Value =  hashPassword(password);
cmd.Parameters.Add("@Username", SqlDbType.VarChar).Value =  username;

但是我们不知道。这两个字段的类型是什么。不知道这一点,我们就无法真正回答。