由于 MySql 的语法不正确,无法更新我的数据库
Updating my database won't work because of incorrect syntax for MySql
我正在尝试更新我的数据库,但随后出现关于我的语法的错误
MySql.Data.MySqlClient.MySqlException: 'You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(platenumber,brand,model,yearmodel,regdate,exdate,odometer) set id = '1' values(' at line 1'
我不太熟悉 MySQl 但我摆脱了它在我的代码中显示的所有错误
private void savebtn_Click(object sender, EventArgs e)
{
string ID = idtxt.Text;
MySqlCommand cmd = new MySqlCommand("update inventory.vehicle(platenumber,brand,model,yearmodel,regdate,exdate,odometer) set id = '" + this.idtxt.Text + "' values(@platenumber, @brand, @model,@yearmodel, @regdate, @exdate,@odometer) where id = '"+ this.idtxt.Text +"'", conn);
cmd.Parameters.Add("@platenumber", MySqlDbType.VarChar, 10).Value = pnumber.Text;
cmd.Parameters.Add("@brand", MySqlDbType.VarChar, 60).Value = brand.Text;
cmd.Parameters.Add("@model", MySqlDbType.VarChar, 45).Value = model.Text;
cmd.Parameters.Add("@yearmodel", MySqlDbType.Int32).Value = yearmodel.Text;
cmd.Parameters.Add("@regdate", MySqlDbType.Date).Value = datereg.MinDate;
cmd.Parameters.Add("@exdate", MySqlDbType.Date).Value = regexp.MinDate;
cmd.Parameters.Add("@odometer", MySqlDbType.Decimal).Value = odometer.Text;
int i = cmd.ExecuteNonQuery();
if (i != 0)
{
MessageBox.Show("Success");
}
else
{
MessageBox.Show("Fail");
}
this.Close();
}
可能导致此错误的原因是什么?
如错误所述,您的查询有误
MySqlCommand cmd = new MySqlCommand(
"update inventory.vehicle
(platenumber,brand,model,yearmodel,regdate,exdate,odometer)
set id = '" + this.idtxt.Text + "'
values(@platenumber, @brand, @model,@yearmodel, @regdate, @exdate,@odometer)
where id = '"+ this.idtxt.Text +"'", conn);
不能有 values
部分并且应该看起来像
UPDATE inventory.vehicle SET
platenumber=@platenumber,
brand=@brand
model=@model,
....
WHERE id = @id
永远不要在查询中使用字符串连接,而是使用参数代替,主要原因有两个:
- 你不会疯狂地组合字符串
- 您的查询不会因 SQL 注入
而受到影响
所以即使WHERE id=
部分也必须使用参数!
你的查询有问题,UPDATE
语句应该是这样的格式。
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
我正在尝试更新我的数据库,但随后出现关于我的语法的错误
MySql.Data.MySqlClient.MySqlException: 'You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(platenumber,brand,model,yearmodel,regdate,exdate,odometer) set id = '1' values(' at line 1'
我不太熟悉 MySQl 但我摆脱了它在我的代码中显示的所有错误
private void savebtn_Click(object sender, EventArgs e)
{
string ID = idtxt.Text;
MySqlCommand cmd = new MySqlCommand("update inventory.vehicle(platenumber,brand,model,yearmodel,regdate,exdate,odometer) set id = '" + this.idtxt.Text + "' values(@platenumber, @brand, @model,@yearmodel, @regdate, @exdate,@odometer) where id = '"+ this.idtxt.Text +"'", conn);
cmd.Parameters.Add("@platenumber", MySqlDbType.VarChar, 10).Value = pnumber.Text;
cmd.Parameters.Add("@brand", MySqlDbType.VarChar, 60).Value = brand.Text;
cmd.Parameters.Add("@model", MySqlDbType.VarChar, 45).Value = model.Text;
cmd.Parameters.Add("@yearmodel", MySqlDbType.Int32).Value = yearmodel.Text;
cmd.Parameters.Add("@regdate", MySqlDbType.Date).Value = datereg.MinDate;
cmd.Parameters.Add("@exdate", MySqlDbType.Date).Value = regexp.MinDate;
cmd.Parameters.Add("@odometer", MySqlDbType.Decimal).Value = odometer.Text;
int i = cmd.ExecuteNonQuery();
if (i != 0)
{
MessageBox.Show("Success");
}
else
{
MessageBox.Show("Fail");
}
this.Close();
}
可能导致此错误的原因是什么?
如错误所述,您的查询有误
MySqlCommand cmd = new MySqlCommand(
"update inventory.vehicle
(platenumber,brand,model,yearmodel,regdate,exdate,odometer)
set id = '" + this.idtxt.Text + "'
values(@platenumber, @brand, @model,@yearmodel, @regdate, @exdate,@odometer)
where id = '"+ this.idtxt.Text +"'", conn);
不能有 values
部分并且应该看起来像
UPDATE inventory.vehicle SET
platenumber=@platenumber,
brand=@brand
model=@model,
....
WHERE id = @id
永远不要在查询中使用字符串连接,而是使用参数代替,主要原因有两个:
- 你不会疯狂地组合字符串
- 您的查询不会因 SQL 注入 而受到影响
所以即使WHERE id=
部分也必须使用参数!
你的查询有问题,UPDATE
语句应该是这样的格式。
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;