2012-10-08 103 views
0

可以在插入語句中使用where條件嗎? 我有這樣的編碼,它的showng我一個錯誤調用MySQLException未處理,你的SQL語法錯誤;檢查對應於你的MySQL服務器版本正確的語法使用近「WHERE RegistrationID =」 3「」在1號線我的代碼手冊: -在MySQL插入語句中的條件

MySqlCommand cmd1 = new MySqlCommand("INSERT INTO registration(DueAmount) VALUES ('"+textBox5.Text + "') WHERE RegistrationID='"+textBox2.Text+"'",connection); 

回答

1

你在混合兩個不同的語句。

  • UPDATE語句更新表中的現有行。
  • INSERT語句在表中添加一個新行。

我想你想使用UPDATE語句並修改現有的行。

MySqlCommand cmd1 = new MySqlCommand(" 
UPDATE Registration Set DueAmount= '"+textBox5.Text 
+ "' WHERE RegistrationID='"+textBox2.Text+"'",connection); 
0

INSERTWHERE沒有意義。 INSERT總是插入一個新行。您可能正在尋找REPLACE INTO,如果該記錄不存在,它將執行插入操作,如果它基於主鍵執行更新,則會執行插入操作。

1

INSERT的正確語法沒有WHERE子句。我想你想UPDATE而不是INSERT

UPDATE registration 
SET DueAmount = 'txt5' 
WHERE RegistrationID = 'txt2' 

您可以在SELECT使用WHERE的唯一途徑是當您使用INSERT INTO....SELECT聲明。

還有一件事,因爲您使用的是ADO.NET,請確保您參數化了您的查詢以避免SQL Injection,並使用USING聲明。

string query = "UPDATE registration 
       SET  DueAmount = @dateAmount 
       WHERE RegistrationID = @RegID" 
using (MySqlCommand cmd1 = new MySqlCommand(query,connection)) 
{ 
    cmd1.CommandType = CommandType.Text; 
    cmd.Parameters.AddWithValue("@dateAmount", textBox5.Text); 
    cmd.Parameters.AddWithValue("@RegID", textBox2.Text); 

    // other codes 
} 
0

INSERT將新行寫入數據庫。你不能換一條新線WHERE ......是......。但你可以UPDATE吧。希望這可以幫助。

0

您需要使用UPDATE語句。

THS語法類似於: 「UPDATE登記集合DueAmount = '」 + textBox5.Text + 「' WHERE RegistrationID = ' 」+ textBox2.Text +「'」

0

您可以嘗試Update

var query = "UPDATE Registration SET DueAmount= $Paremeter1 WHERE RegistrationID = $Paremeter2"; 
var cmd1 = new MySqlCommand(query, connection); 

cmd1 .Parameters.AddWithValue("$Paremeter1", textBox5.Text); 
cmd1 .Parameters.AddWithValue("$Paremeter2", textBox2.Text);