2017-08-18 55 views
-1

layout and db每當我在數據庫中插入數據可以節省額外的排在數據庫

if (!(string.IsNullOrEmpty(b.ToString()))) 
{ 
    string connection = "server=127.0.0.1; database=accounts;user=root; password='';"; 
    MySqlConnection conn = new MySqlConnection(connection); 
    conn.Open(); 
    string SQL = "INSERT INTO payment_voucher (voucher_no, paid_to, date, account_cr, account_dr, description, student_emp_id, amount, total) values ('" + label8.Text.ToString() + "','" + textBox1.Text + "', '" + dateTimePicker1.Value + "','" + a + "','" + b + "', '" + richTextBox1.Text + "', '" + textBox3.Text + "', '" + textBox4.Text + "', '" + label11.Text.ToString() + "');"; 
    MySqlCommand command = new MySqlCommand(SQL, conn); 
    command.ExecuteNonQuery(); 
    conn.Close(); 

} 

我不知道爲什麼它正在發生。前端是在C#中。

+0

你確定它插入兩個而不只是讀取兩個?檢查你的數據庫並閱讀查詢。 –

+0

@DanRayson說了些什麼,或者可能會在表格中插入一個額外的行的觸發器? – Kris

+1

首先使用參數化查詢來避免SQL注入攻擊。然後檢查你的表是否有INSERT觸發器。 – lad2025

回答

1

該語句不會插入兩行。

你有幾件事情要檢查這裏:

  • 檢查該代碼被調用兩次
  • 檢查是否有是也被稱爲
  • 確保沒有其他類似的代碼觸發上做額外的插入
  • 使表肯定你沒有一些奇怪的try/catch /失敗了導致整個事情再次運行
邏輯

而且最重要的是:

  • 運行SQL事件探查器跟蹤,看看到底什麼是被髮送到數據庫

查詢表的時候,你已經檢查那些在企業管理器的原始SELECT查詢並確保有一行。

上面的代碼不會重複行,除非調用兩次。

相關問題