簡體   English   中英

由於 MySql 的語法不正確,無法更新我的數據庫

[英]Updating my database won't work because of incorrect syntax for MySql

我正在嘗試更新我的數據庫,但隨后出現了這個關於我的語法的錯誤

MySql.Data.MySqlClient.MySqlException:'您的 SQL 語法有錯誤; 查看與您的 MySQL 服務器版本相對應的手冊,了解在“(車牌號、品牌、model、年份模型、regdate、exdate、里程表)附近使用的正確語法設置 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

永遠不要在查詢中使用字符串連接,而是使用參數,主要有兩個原因:

  1. 你不要 go 瘋狂組合字符串
  2. 您的查詢不會因 SQL 注入而受到影響

所以即使WHERE id=部分也必須使用參數!

您的查詢有問題, UPDATE語句應該是這種格式。

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM