我在这里失去了理智。
我正在尝试实施基本的“忘记密码?”用户输入电子邮件地址以获取新密码的功能。很简单,对吧?
我的问题是更新数据库,用新密码替换旧密码。 我正在使用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表由以下列组成:UserId
,Name
,Email
,Password
和CreatedDate
。
调试try-catch时会抛出一个异常,说UPDATE语句中存在语法错误。我用password=?
代替name=?
进行了一次试错,只是为了看看它是否会更新,它确实会更新客户名称!
据我所知,Name
和Password
列与数据类型Text
相同。
可能是什么问题?
答案 0 :(得分:5)
PASSWORD
是Access中的reserved word。
尝试:
UPDATE CUSTOMERS SET [password]=? WHERE userid=?;
(插入关于以明文存储密码的常见评论真的坏主意)