问题描述
我在 UPDATE 语句中遇到语法错误,同时在 C# 中更新 Access 数据库中的密码:
protected void Button1_Click(object sender,EventArgs e)
{
OleDbConnection con = new OleDbConnection();
con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" +
Server.MapPath("~/Database/registration.accdb");
con.open();
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = con;
cmd.CommandType = CommandType.Text;
cmd.CommandText =
"UPDATE into userdata(password)values('"+TextBox1.Text+"') where id=@id";
cmd.ExecuteNonQuery();
con.Close();
Response.Write("alert('Password Reset Successfully done');");
}
解决方法
这是因为您的 const text = 'h_ello ______ where ___ test ___';
const blankData = ['there','you','it'];
result = text.replace(/_{3,}/g,(i => _ => blankData[i++])(0));
console.log(result);
不正确,这不是您更新数据库中数据的方式。应该是这样的:
SQL Query
您至少应该学习 SQL 语法的基础知识,更多信息here
此外,您不应该连接您的查询,因为它会受到 query = "Update [tableName] SET [ColumnName] = 'Values',[ColumnName1] = 'Values2',...";
的攻击,您至少应该使用 SQL Injection attack
Parameterized Query
,
你必须修正你的查询
"UPDATE userdata SET password=@password where id=@id";
并在 cmd.ExecuteNonQuery() 之前添加新行
cmd.Parameters.AddWithValue("@id",id);
cmd.Parameters.AddWithValue("@password",TextBox1.Text);