拥有这段代码(我知道 for 循环中的打开/执行查询/关闭连接绝对是可怕的)。
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 运行。
无论是 sql 2005 还是 2008,我如何才能在 for 循环中消除可怕的打开/执行/关闭以插入多行,并且还可以通过使用 AddWithValue 方法来防止 sql 注入?
谢谢!:)