如何根据子查询中的子查询插入值

时间:2015-02-05 10:34:50

标签: c# mysql .net winforms

我有一个需要从Windows窗体更新的表,我能够将显示的值更新到表中,因为我无法更新要更新的值必须是参考值的特定列窗体上显示的数据。参考值在另一个表中。以下是代码:

command.CommandText = "INSERT INTO tblComplaints (ComplaintID, Description,ComplaintTypeID,ReceivedDate,ComplaintTypeID)VALUES('" + TextBox7.Text + "','" + TextBox10.Text + "','" + dateTimePicker1.Text + "',???)";

代码中的问号(???)是我要求的。 更准确地说,ComplaintTypeName正在comboBox1的表单中显示,而我需要更新其ID,其值存在于tblComplaintType

1 个答案:

答案 0 :(得分:0)

假设您事先以某种方式分配了ComboBox值

ComboboxItem item = new ComboboxItem();
item.Text = "Item text1";
item.Value = 12;
comboBox1.Items.Add(item);

您可以执行以下操作:

command.CommandText = "INSERT INTO tblComplaints " +
    "(ComplaintID, Description, ComplaintTypeID, ReceivedDate, ComplaintTypeID) " +
    "VALUES (@Description,@ComplaintTypeID,@ReceivedDate,@ComplaintTypeID)";
command.Parameters.AddWithValue("@Description", TextBox7.Text);
command.Parameters.AddWithValue("@ComplaintTypeID", TextBox10.Text);
command.Parameters.AddWithValue("@ReceivedDate", dateTimePicker1.Text);
command.Parameters.AddWithValue("@ComplaintTypeID", comboBox1.SelectedValue);

请注意,我从sql命令中删除了ComplaintID。由于这是一个INSERT语句,因此您可能会获得该记录的生成ID。如果情况并非如此,您将不得不在命令中提供另一个参数。

此外,您应始终参数化您的命令,而不是通过字符串连接来构建它们,以防止sql注入。