.net sql使用addWithValue INSERT多行

时间:2013-04-01 13:21:54

标签: sql vb.net ado.net

有这个代码(我知道for循环中的open / executenonquery / close连接是绝对可怕的)。

Public Shared Sub salvarDatos(ByRef conexion As SqlConnection, ByRef datos As List(Of DatoBdReloj))

    For i = 0 To datos.Count - 1
        Dim laQuery As String = "Insert INTO MARCADASRELOJ  (COD_MAR_RELOJ,FECHA_RELOJ,HORA_RELOJ,MINUTOS_RELOJ,NRO_RELOJ,NRO_TARJ) " & _
                                "VALUES (@codMarReloj,@fechaReloj,@horaReloj,@minutosReloj,@nroReloj,@nroTarj)"

        Dim datoReloj As DatoBdReloj = datos.Item(i)

        Dim command As SqlCommand = New SqlCommand(laQuery, conexion)
        command.Parameters.AddWithValue("codMarReloj", datoReloj.tipoMarca)
        command.Parameters.AddWithValue("fechaReloj", datoReloj.fechaHoraMarcaDT)
        command.Parameters.AddWithValue("horaReloj", datoReloj.fechaHoraMarcaDT.Hour)
        command.Parameters.AddWithValue("minutosReloj", datoReloj.fechaHoraMarcaDT.Minute)
        command.Parameters.AddWithValue("nroReloj", datoReloj.idReloj)
        command.Parameters.AddWithValue("nroTarj", datoReloj.idUsuario)

        conexion.Open()
        command.ExecuteNonQuery()
        conexion.Close()
    Next
End Sub

我对.net没有多少经验,但是对于我使用AddWithValue方法阅读的内容,我可以防止sql注入,并根据“书”是正确的方法(告诉我,如果我是错)。

使用诸如“插入xxx(x1,x2,x3)值(”val“,”val“,”val“),(...),(...)”之类的句子来插入多行是不是我的选择,因为我的数据库使用sql 2005运行。

我如何在for循环中删除那个可怕的open / execute / close来插入多行,无论它是sql 2005还是2008,并且使用AddWithValue方法保持sql注入的安全性?

谢谢! :)

1 个答案:

答案 0 :(得分:0)

您好,您可以使用bulkinsert

代码:BulkInserter How to use it