将2个insert into组合成一个命令。

12 浏览
0 Comments

将2个insert into组合成一个命令。

我无法解决这个问题:

我想在表A中添加一行,这一行的3个列来自表B,其他2个列来自文本框等等...

这段代码没有起作用...

SqlCommand cmd35 = new SqlCommand("INSERT INTO BTmr (Barcode,[Machine Name],[Machine ID]) SELECT Barcode,[Machine Name],[Machine ID] FROM BkmP WHERE barcode like '" + c13 + "%' UNION INSERT INTO BTmr([Repair Cost],[Repair Date],Barcode)values (@cst,@rprd)", connection);
            cmd35.Parameters.AddWithValue("@cst", textBox10.Text);
            cmd35.Parameters.AddWithValue("@rprd", dateTimePicker1.Text);

0
0 Comments

问题原因:在给定的代码中,出现了两个INSERT INTO语句,但是它们被分开写成了两个不同的命令。这可能导致执行命令时出现错误或不完整的数据插入。

解决方法:将两个INSERT INTO语句合并为一个命令,以确保它们在同一个事务中执行,从而保持数据的完整性和一致性。合并后的代码如下所示:

SqlCommand cmd35 = new SqlCommand("INSERT INTO BTmr (Barcode,[Machine Name], [Machine ID],[Repair Cost],[Repair Date]) SELECT Barcode,[Machine Name], [Machine ID], @RepairCost AS [Repair Cost], @RepairDate AS [Repair Date] FROM BkmP WHERE barcode like @C13", connection);

cmd35.Parameters.AddWithValue("@RepairCost", textBox10.Text);

cmd35.Parameters.AddWithValue("@RepairDate", dateTimePicker1.Text);

cmd35.Parameters.AddWithValue("@C13", c13);

此外,还可以对WHERE子句进行参数化处理,以提高代码的安全性和可读性。具体做法可以参考这个链接:https://stackoverflow.com/a/251380/123422

0