Asp.net Can';t将SQL参数值设置为字符串数组
我想将字符串数组作为SQL参数传递,但当我执行该命令时,它抛出一个异常,该异常表示“对象必须实现IConvertible”。以下是代码(所有三列都是nvarchar):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
我创建此例程是为了将大量记录插入数据库,正确的方法是什么?通常,您只需执行多个插入命令,每行一个,例如:
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)