Asp.net Can';t将SQL参数值设置为字符串数组

Asp.net Can';t将SQL参数值设置为字符串数组,asp.net,vb.net,sql-server-2008,Asp.net,Vb.net,Sql Server 2008,我想将字符串数组作为SQL参数传递,但当我执行该命令时,它抛出一个异常,该异常表示“对象必须实现IConvertible”。以下是代码(所有三列都是nvarchar): 我创建此例程是为了将大量记录插入数据库,正确的方法是什么?通常,您只需执行多个插入命令,每行一个,例如: Public Sub sendsms(messageBodies As String(), ByVal recipientNumbers As String(), Optional ByVal chkMsgIds As st

我想将字符串数组作为SQL参数传递,但当我执行该命令时,它抛出一个异常,该异常表示“对象必须实现IConvertible”。以下是代码(所有三列都是nvarchar):


我创建此例程是为了将大量记录插入数据库,正确的方法是什么?

通常,您只需执行多个插入命令,每行一个,例如:

Public Sub sendsms(messageBodies As String(), ByVal recipientNumbers As String(), Optional ByVal chkMsgIds As string() = Nothing) 
    Using con As New SqlConnection()
        con.ConnectionString = connection.Sms
        con.Open()
        For Each body As String In messageBodies
            Using cmd As New SqlCommand("insert into sentmessage (text,id,number) values (@text,@id,@number)", con)
                cmd.Parameters.Add("@text", Data.SqlDbType.NVarChar, n).Value = body
                cmd.Parameters.Add("@id", Data.SqlDbType.NVarChar, n).Value = chkMsgIds
                cmd.Parameters.Add("@number", Data.SqlDbType.NVarChar, n).Value = recipientNumbers
                cmd.ExecuteNonQuery()
            End Using
        Next
    End Using
End Sub
但是,在SQL Server 2008中,他们添加了对新的多行插入语法的支持,如下所述:

例如,您可以执行以下命令:

insert into sentmessage (text,id,number) values 
('First',1,1),
('Second',2,2),
('Third',3,3)
只需使用:

cmd.Parameters.AddWithValue("@text", messageBodies )
cmd.Parameters.AddWithValue("@id",chkMsgIds)
cmd.Parameters.AddWithValue("@number", recipientNumbers)

你预计会发生什么?您是否希望将数组的所有元素组合成一个单行字符串,或用comas分隔,或组合成一个多行字符串,每行一个数组项?如何向sql插入大量记录?
cmd.Parameters.AddWithValue("@text", messageBodies )
cmd.Parameters.AddWithValue("@id",chkMsgIds)
cmd.Parameters.AddWithValue("@number", recipientNumbers)