无法更新.继续显示更新语法错误!!请帮忙

本文关键字:更新 错误 语法 继续 显示 | 更新日期: 2023-09-27 17:56:34

我正在寻找一点帮助,这段代码无法按编写的方式工作。

string upstatus = "UPDATE memberlogin " +
                  "SET password = " + newpwtxtbox.Text + " " +
                  "where username = " + usernametxtbox.Text;
OleDbConnection con = new OleDbConnection(connect);
con.Open();
OleDbCommand cmd2 = new OleDbCommand(upstatus, con);
cmd2.ExecuteNonQuery();
MessageBox.Show("updated!");
con.Close();

谢谢

无法更新.继续显示更新语法错误!!请帮忙

您正在使用MS-Access,在这种情况下PASSWORD是一个保留关键字。
在其周围使用方括号

string upstatus = "UPDATE memberlogin SET [password]= .....";

从这个的一部分,永远不要使用字符串串联来构建 sql 命令,而始终是参数化查询。

string upstatus = "UPDATE memberlogin SET password=? where username = ?";
OleDbConnection con = new OleDbConnection(connect);
con.Open();
OleDbCommand cmd2 = new OleDbCommand(upstatus, con);
cmd2.Parameters.AddWithValue("@p1", newpwtxtbox.Text);
cmd2.Parameters.AddWithValue("@p2", usernmaetxtbox.Text );
cmd2.ExecuteNonQuery();

众所周知,字符串串联方法会导致 Sql 注入攻击,但它仍然是一种弱代码,因为在密码或用户名文本框中键入的单引号会对字符串命令造成严重破坏,从而导致发送到数据库引擎的语法无效。