このコードを持っています(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 インジェクションを防ぐことができ、「本」によると正しい方法です (間違っている場合は教えてください)。
"Insert into xxx (x1,x2,x3) values ("val","val","val"),(...),(...)" のような文を使用して複数の行を挿入することはオプションではありません私のデータベースはSQL 2005で実行されているためです。
SQL 2005 または 2008 であるかどうかに関係なく、複数の行を挿入するために for ループ内でその恐ろしいオープン/実行/クローズを取り除くにはどうすればよいでしょうか。
ありがとう!:)