1

我在这里失去理智了。

我正在尝试实现一个基本的“忘记密码?” 用户输入电子邮件地址以获取新密码的功能。很简单,对吧?

我的问题是更新数据库,用新密码替换旧密码。我正在使用 C# 和 MS Access。

这是更新代码:

public bool UpdateCustomer(Customer customer){
    try {
        if(con.State == ConnectionState.Closed)
            con.Open();

        string sql = "UPDATE CUSTOMERS SET password=? WHERE userid=?;";

        OleDbCommand cmd = new OleDbCommand(sql, con);
        cmd.Parameters.Add(new OleDbParameters("password", customer.Password));
        cmd.Parameters.Add(new OleDbParameters("userid", customer.UserId));

        cmd.ExecuteNonQuery();

        return true;

    }catch (Exception ex) {

    }finally {
        con.Close();
    }
    return false;
}

CUSTOMER 表由以下列组成:UserIdNameEmail和。PasswordCreatedDate

在调试 try-catch 时会抛出一个异常,指出 UPDATE 语句中存在语法错误。我已经做了一些反复试验password=?name=?只是为了看看它是否会更新,它确实会更新客户名称!

据我所知,Nameand列与 data type 相同。PasswordText

可能是什么问题?

4

1 回答 1

5

PASSWORD是 Access 中的保留字

尝试:

UPDATE CUSTOMERS SET [password]=? WHERE userid=?;

(插入关于以明文形式存储密码的常见评论是一个非常糟糕的主意)

于 2013-11-05T09:56:54.700 回答