【发布时间】:2021-04-17 11:17:21
【问题描述】:
我收到了这个错误
"MySql.Data.MySqlClient.MySqlException: '遇到致命错误 在命令执行期间。", "MySqlException: 参数 '@un' 必须是 已定义。”
老实说,我不知道该怎么做,我只是在关注我的朋友在做什么,而我只是编码方面的新手。这是我的代码。
private void BTNDELETE_Click(object sender, EventArgs e)
{
var c = cmd.Parameters;
con.ConnectionString = Properties.Settings.Default.sampledb_it11ConnectionString;
con.Open();
cmd.Connection = con;
cmd = new MySqlCommand("delete tbl_user set username=@un, password=@pw, usertype=@ut, loginname=@ln where username=@un,", con);
c.Clear();
c.AddWithValue("@un", TXTUN.Text);
c.AddWithValue("@pw", TXTPW.Text);
c.AddWithValue("@ut", CBOUT.Text);
c.AddWithValue("@ln", TXTLN.Text);
cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show("Record has been deleted", "Deleting Successful", MessageBoxButtons.OK, MessageBoxIcon.Information);
TXTUN.Text = "";
TXTPW.Text = "";
TXTCPW.Text = "";
TXTLN.Text = "";
CBOUT.Text = "";
TXTUN.Focus();
DG_Refresh();
TXTUN.Enabled = true;
}
【问题讨论】:
-
delete tbl_user set...不是正确的 sql。您是真的要删除,还是要更新? -
你到底想做什么?我不熟悉 MySQL,但似乎没有
SETforDELETE声明。 dev.mysql.com/doc/refman/8.0/en/delete.html 你要改用UPDATE吗?你的 sql 查询看起来不对。 -
至于你的错误,MySql使用的是位置参数,没有命名,所以你需要再添加一个参数,以便第二次使用
un。但是,您必须先决定是删除还是更新。 -
抱歉,我想删除一条记录,正确的说法应该是什么?
-
DELETE 删除一整行,您不必传递所有要删除的字段,您只需要一个 WHERE 子句将行限制为您想要的行。