有这个代码(我知道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注入的安全性?
谢谢! :)