我有一个表名为sales,另一个名为balance。我想在sales中使用insert命令,在balance table中使用update命令。我能做什么?
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 "的转换无效
您可以在INSERT语句的末尾添加一个分号,将它们分成两个单独的语句。但你的错误是,你将你的CommandType设置为字符串,这是一个枚举:CommandType enumeration
CommandType
是一个枚举,它告诉CommandText
中的值是什么:查询,表名等。
你不能把查询文本放在那里。
相反,您应该执行以下操作之一(从最好到最差):
-
把这两个命令放到服务器端的一个存储进程中,然后调用这个存储进程,这样会更好。
-
INSERT
命令后接UPDATE
命令 -
创建另一个
ADO.Command
实例,并在同一事务中再次运行。
您可以使用;
:
cmd.CommandText="insert into ...(...) values(...); update ... set ..."
cmd.Connection=con
cmd.ExecuteNonQuery()
这也是你如何获得所使用的标识值,你会在insert
之后附加一个;select @@identity
。
前面介绍了为什么CommandType
是错误的属性,所以我就不说了。