我有一个表名作为销售,另一个是余额。我想在销售中使用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”类型无效。
答案 0 :(得分:3)
您可以在INSERT语句的末尾添加semi colon,将它们分成两个单独的语句。但是您的错误是您将CommandType设置为字符串,这是一个枚举:CommandType Enumeration
答案 1 :(得分:1)
CommandType
是一个枚举,用于说明CommandText
中的值是什么:查询,表名等。
您无法将查询文本放在那里。
相反,您应该执行以下任一操作(从最佳到最差):
将两个命令放入服务器端的存储过程并调用存储过程。这将是一种更好的方式。
将UPDATE
命令附加到INSERT
命令。
创建ADO.Command
的另一个实例,并在同一交易中再次运行。
答案 2 :(得分:0)
您可以使用;
:
cmd.CommandText="insert into ...(...) values(...); update ... set ..."
cmd.Connection=con
cmd.ExecuteNonQuery()
这也是您取回使用的身份值的方式,您在;select @@identity
之后附加insert
。
其他人说明为什么CommandType
是错误的触摸属性,所以我会留下它。