使用

时间:2017-04-01 11:20:39

标签: c# sql

我有一个表格,格式如下:

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

我的问题如何获取该行的当前内容?我需要查询吗?

3 个答案:

答案 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();
}