2017-04-01 101 views
0

我有以下格式的表格單元格的內容:查詢更新使用

column1 column2 
    40  blue 
    20  red 

我有我想更新基礎上的值包含我的專欄的進入TextBoxcomboBox ,例如,如果我選擇我的comboBox紅色,我TextBox輸入值30,我想我的表進行更新如下

column1 column2 
    40  blue 
    50  red 

我認爲是這樣的:

update tablename set column1=....+TextBox.Text where column2=ComboBox.Text 

我的問題如何獲取該行的當前內容?我需要一個查詢來做到這一點?

回答

1

要添加到其他答覆,你也應該使用參數化查詢:

connection.Open(); 
SqlCommand command = new SqlCommand("UPDATE table SET column1 = column1 + @column1 WHERE column2 = @column2", connection); 
SqlDataAdapter adp = new SqlDataAdapter(); 
adp.UpdateCommand = command; 
adp.UpdateCommand.Parameters.Add(new SqlParameter("@column1", SqlDbType.Int)); 
adp.UpdateCommand.Parameters.Add(new SqlParameter("@column2", SqlDbType.VarChar)); 
adp.UpdateCommand.Parameters["@column1"].Value = Convert.ToInt32(TextBox.Text); 
adp.UpdateCommand.Parameters["@column2"].Value = ComboBox.Text; 
try 
{ 
    adp.UpdateCommand.ExecuteNonQuery(); 
} 
catch (SqlException ex) 
{ 
    MessageBox.Show(ex.ToString()); 
} 
finally 
{ 
    connection.Close(); 
} 
+0

我用你的建議更新,但我有以下錯誤:沒有給出一個或多個必需參數的值。我不確定問題是什麼 – user3841581

+0

@ user3841581這是因爲我在查詢中使用了單引號來更新表,所以應該總是使用雙引號......我很抱歉。改變這一點,讓我知道它是如何去的。 –

2

你太親近了。您可以參考該列:

update tablename 
    set column1 = column1 + TextBox.Text 
    where column2 = ComboBox.Text; 

我應該注意,您不應該構建用戶輸入的查詢。您應該參數化查詢。有兩個重要的原因。首先是防止意外的語法錯誤。其次是防止SQL注入。

如果您只是學習使用SQL編程,那麼使用參數是非常重要的。你不想開始學習壞習慣。

1

直接通過列名如下圖所示

update tablename set column1=column1+TextBox.Text where column2=ComboBox.Text