2017-06-17 73 views
0

我在我的C#程序中使用MySql数据库。 下面是我的代码,当我执行下面的方法时,它会抛出一个异常“MySql Syntax Exception”。c#语言:尝试使用C#将参数保存到MySql DB时出错#

请帮我弄清楚错误。还请告诉我,如果需要更多信息来解决这个问题。

如果你们能帮助我,我会非常高兴。

private void btnVerify_Click(object sender, EventArgs e) 
    { 
     con.Open(); 

     try 
     { 
      string cmdText = "INSERT INTO cheque(customer_name, national_id, drawn_bank, chq_number, bnk_br_code, ac_number, drawndate, amount, commission_rate, commission, order, recieved_date, due_date, reminder_date, chq_image_frnt, chq_image_back) VALUES(@customer_name,@national_id,@drawn_bank,@chq_number,@bnk_br_code,@ac_number,@drawndate,@amount,@commission_rate,@commission,@order,@recieved_date,@due_date,@reminder_date,@chq_image_frnt,@chq_image_back)"; 
      MySqlCommand cmd = new MySqlCommand(cmdText, con); 
      cmd.Parameters.AddWithValue("@customer_name", txtCustomerName.Text); 
      cmd.Parameters.AddWithValue("@national_id", txtIDNumber.Text); 
      cmd.Parameters.AddWithValue("@drawn_bank", txtDrawnBank.Text); 
      cmd.Parameters.AddWithValue("@chq_number", txtChqNo.Text); 
      cmd.Parameters.AddWithValue("@bnk_br_code", txtBnkBrCode.Text); 
      cmd.Parameters.AddWithValue("@ac_number", TxtAcNo.Text); 
      cmd.Parameters.AddWithValue("@drawndate", dateTimePickerDrawnDate.Text); 
      cmd.Parameters.AddWithValue("@amount", TxtAmount.Text); 
      cmd.Parameters.AddWithValue("@commission_rate", txtCommissionRate.Text); 
      cmd.Parameters.AddWithValue("@commission", txtCommission.Text); 
      cmd.Parameters.AddWithValue("@order", Ordercb.Text); 
      cmd.Parameters.AddWithValue("@recieved_date", dateTimePickerRecieved.Text); 
      cmd.Parameters.AddWithValue("@due_date", dateTimePickerDue.Text); 
      cmd.Parameters.AddWithValue("@reminder_date", dateTimePickerReminder.Text); 
      cmd.Parameters.AddWithValue("@chq_image_frnt", picChqFrnt.Image); 
      cmd.Parameters.AddWithValue("@chq_image_back", picChqBack.Image); 


      cmd.ExecuteNonQuery(); 
      MessageBox.Show("Cheque has been inserted to the database"); 
      ClearData(); 
      con.Close(); 
     } 
     catch (MySqlException x) 
     { 
      MessageBox.Show(x.Message); 
     } 

    } 
+0

放入一些额外的空格,如'INTO check('和'VALUES(' –

+0

)您还没有说明它的失败。添加picChqFrnt.Image作为参数不会插入图像,您最终可能会以ToString结束。 –

+1

MySQL的语法错误信息继续说* ...在正确的语法附近使用'something'。*这是您需要清理出错的线索。 –

回答

0

是啊,这就是原因order是一个保留字在MySQL中,需要使用backtique像

string cmdText = "INSERT INTO cheque(customer_name, national_id, drawn_bank, ..., `order`,... 

这就是错误究竟说正确的语法使用近'为了进行转义, recieved_date,

帮你一个忙,并停止使用保留字和关键词作为表或列的名称,并避免这个问题s将来

+0

哦,谢谢你veru多。有用。我会接受你的建议。 :d –