0

我有一个表名作为销售,另一个是平衡。我想在销售中使用插入命令并更新余额表。我能做些什么?

     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”的转换无效

4

3 回答 3

3

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

于 2011-04-27T15:35:57.877 回答
1

CommandType是一个枚举,它告诉其中的值CommandText是什么:查询、表名等。

您不能将查询文本放在那里。

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

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

  2. 将命令附加UPDATEINSERT命令。

  3. 创建另一个实例ADO.Command并在同一事务中再次运行它。

于 2011-04-27T15:34:16.877 回答
0

您可以使用以下命令将两者都发送到服务器;

cmd.CommandText="insert into ...(...) values(...); update ... set ..."
cmd.Connection=con
cmd.ExecuteNonQuery()

这也是您取回使用的标识值的方式,您将;select @@identityinsert.

其他人介绍了为什么CommandType要触摸错误的属性,所以我会留在那里。

于 2011-04-27T15:38:27.693 回答