参数出错:sqlparametercollection只接受非空的sqlparameter类型对象而不是sqlparameter []对象

时间:2013-06-15 12:13:12

标签: vb.net

我有以下代码,我正面临参数的困难时期......我收到以下错误:

  

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

1 个答案:

答案 0 :(得分:1)

检查您是否使用了两个不同的变量:InsertCommandcmd

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参数类似。 希望你能尽快完成它。