我有以下代码,我正面临参数的困难时期......我收到以下错误:
sqlparametercollection只接受非空的sqlparameter类型对象而不是sqlparameter []对象
当我插入一个msgbox来检查param(0).value
的值时,我以MARC为例。
我是否应该为每个rowData.item(i)
创建一个参数?
Dim con As New SqlConnection
Dim cmd As New SqlCommand
con.ConnectionString = "Data Source=USER\SQLEXPRESS;Initial Catalog=DBName;Integrated Security=SSPI"
con.Open()
cmd.Connection = con
Try
Dim InsertCommand As New SqlCommand
Dim param(0) As SqlClient.SqlParameter
param(0) = New SqlParameter("abrev", SqlDbType.VarChar, 50)
param(0).Value = UCase(abrev)
InsertCommand.Parameters.Add(param)
cmd.CommandText = "INSERT INTO allData (ABRV, Times, Num1, Num2, Num3, Num4, Num5) VALUES (param,rowData.Item(0),rowData.Item(1),rowData.Item(2),rowData.Item(3),rowData.Item(4),rowData.Item(5))"
cmd.ExecuteNonQuery()
Catch ex As Exception
MessageBox.Show("Error while inserting record on table..." & ex.Message, "Insert Records")
Finally
con.Close()
End Try
答案 0 :(得分:1)
检查您是否使用了两个不同的变量:InsertCommand
和cmd
InsertCommand.Parameters.Add(param)
cmd.CommandText = "INSERT INTO allData (ABRV, Times, Num1, Num2, Num3, Num4, Num5) VALUES (param,rowData.Item(0),rowData.Item(1),rowData.Item(2),rowData.Item(3),rowData.Item(4),rowData.Item(5))"
cmd.ExecuteNonQuery()
另一个问题是参数不匹配。您使用名为abrev
param(0) = New SqlParameter("abrev", SqlDbType.VarChar, 50)
在insert语句中,您应该具有参数@abrev
cmd.CommandText = "INSERT INTO allData (ABRV, Times, Num1, Num2, Num3, Num4, Num5) VALUES (@abrev,rowData.Item(0),rowData.Item(1),rowData.Item(2),rowData.Item(3),rowData.Item(4),rowData.Item(5))"
我应该为每个rowData.item(i)创建一个参数吗?
是的,你应该。与abrev
参数类似。
希望你能尽快完成它。