我们可以在同一个按钮操作中同时使用Insert和Update吗?

时间:2011-04-27 15:31:38

标签: sql vb.net insert-update

我有一个表名作为销售,另一个是余额。我想在销售中使用insert命令并在余额表中更新。我该怎么办?

     cmd.CommandText = " INSERT INTO SALES VALUES('" & ComboBox1.Text & " ' , " & SILVER & " ," & GOLD & ",'" & ComboBox2.Text & "'," & KILO.Text & ", " & TOUCH.Text & " ," & TOTKILO.Text & "," & TextBox3.Text & "," & TextBox8.Text & "," & KGOLD & "," & KSILVER & "," & TextBox9.Text & " ," & TextBox10.Text & "," & TextBox11.Text & "," & TextBox12.Text & " , " & TextBox13.Text & " )"
     Dim NB As Double
    NB = TextBox11.Text
    ST = ComboBox1.SelectedValue.ToString
    cmd.CommandType = " UPDATE BALANCE SET OBBALANCE = " & " " & NB & " " & " WHERE         CUSTOMERNAME =  " & " '" & ST & "'" & " "
    cmd.Connection = con
    cmd.ExecuteNonQuery()
    con.Close()

显示错误从字符串“UPDATE BALANCE SET OBBALANCE =”转换为“Integer”类型无效

3 个答案:

答案 0 :(得分:3)

您可以在INSERT语句的末尾添加semi colon,将它们分成两个单独的语句。但是您的错误是您将CommandType设置为字符串,这是一个枚举:CommandType Enumeration

答案 1 :(得分:1)

CommandType是一个枚举,用于说明CommandText中的值是什么:查询,表名等。

您无法将查询文本放在那里。

相反,您应该执行以下任一操作(从最佳到最差):

  1. 将两个命令放入服务器端的存储过程并调用存储过程。这将是一种更好的方式。

  2. UPDATE命令附加到INSERT命令。

  3. 创建ADO.Command的另一个实例,并在同一交易中再次运行。

答案 2 :(得分:0)

您可以使用;

将两者发送到服务器
cmd.CommandText="insert into ...(...) values(...); update ... set ..."
cmd.Connection=con
cmd.ExecuteNonQuery()

这也是您取回使用的身份值的方式,您在;select @@identity之后附加insert

其他人说明为什么CommandType是错误的触摸属性,所以我会留下它。