我有一个表格,格式如下:
column1 column2
40 blue
20 red
我想根据输入TextBox
和comboBox
的值更新我的列的包含内容,例如,如果我从comboBox
中选择红色并输入我的TextBox
中的值为30,我希望我的表格更新如下
column1 column2
40 blue
50 red
我想到了这样的事情:
update tablename set column1=....+TextBox.Text where column2=ComboBox.Text
我的问题如何获取该行的当前内容?我需要查询吗?
答案 0 :(得分:2)
你是如此亲密。您只需引用该列:
update tablename
set column1 = column1 + TextBox.Text
where column2 = ComboBox.Text;
我应该注意,您不应该从用户输入构造查询。您应该参数化查询。有两个重要原因。第一个是防止意外的语法错误。第二是防止SQL注入。
如果您只是学习使用SQL编程,那么使用参数非常重要。你不想开始学习坏习惯。
答案 1 :(得分:1)
直接传递列名,如下所示
update tablename set column1=column1+TextBox.Text where column2=ComboBox.Text
答案 2 :(得分: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();
}