我有一个插入查询,我试图在其中将表1数据复制到表2。现在,当我直接在MySQL中执行时,查询工作正常,但是当我尝试通过 VB.Net 进行调试时"
INSERT INTO newMedicinesOrders (`OrderID`,`medicineName`, `power`, `form`, `fQuantity`, `iQuantity`, `type`, `cost`, `prescriptionLink`, `userID`) SELECT `orderID`, `name`, `power`, `form`, `fQuantity`, `iQuantity`, `type`, `mrp`, `prescriptionLink`, `userID` from myCart WHERE userID = '1'
我收到一条错误消息,指出
"字段列表"中的未知列"订单 ID"
VB 代码
Try
Dim str1 As String = "INSERT INTO newMedicinesOrders (`OrderID`,`medicineName`, `power`, `form`, `fQuantity`, `iQuantity`, `type`, `cost`, `prescriptionLink`, `userID`) SELECT `orderID`, `name`, `power`, `form`, `fQuantity`, `iQuantity`, `type`, `mrp`, `prescriptionLink`, `userID` from myCart WHERE userID = '" + userid.Text + "'"
Dim str2 As MySqlDataReader
Dim adapter As New MySqlDataAdapter
Dim command As New MySqlCommand
command.CommandText = str1
command.Connection = con
adapter.SelectCommand = command
con.Open()
str2 = command.ExecuteReader
con.Close()
Response.Write("<script language='javascript'>alert('Success.');</script>")
Catch ex As Exception
Response.Write(ex)
End Try
你的错误来自于你正在使用SQLCommand.ExecuteReader()
从这个描述:
ExecuteReader 用于将查询结果作为 DataReader 对象获取。它是只读的只转发记录检索,它使用 select 命令从第一个到最后一个读取表。
ExecuteNonQuery,用于执行不返回任何数据的查询。它用于执行SQL语句,如更新,插入,删除等。ExecuteNonQuery 执行命令并返回受影响的行数。
根据MSDN,这是你执行INSERT
,UPDATE
或DELETE
语句的方式:
Public Sub CreateCommand(ByVal queryString As String, ByVal connectionString As String)
Using connection As New SqlConnection(connectionString)
Dim command As New SqlCommand(queryString, connection)
command.Connection.Open()
command.ExecuteNonQuery()
End Using
End Sub
但是,我没有找到有关使用 ExecuteReader()
执行INSERT
命令时会发生什么的信息,但我想这就是发生的事情......