Dim a1 As String = DataGridView1.Rows(i).Cells(0).Value.ToString ' i 未定義!
Dim a2 As String = DataGridView1.Rows(i).Cells(1).Value.ToString
mycom.CommandText = "INSERT ... VALUES('" & a1 & "','" & a2 & "')" ' 在迴圈外!
For i = 0 To DataGridView1.Rows.Count
mycom.ExecuteNonQuery() ' 反覆執行同一條 SQL,只寫入第一行資料
Next
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Using conn As New SqlConnection("Data Source=192.168.0.12;Initial Catalog=blue;uid=sa;pwd=123")
conn.Open()
Dim sql As String = "INSERT INTO knitAM (col1, col2) VALUES (@v1, @v2)"
Using cmd As New SqlCommand(sql, conn)
cmd.Parameters.Add("@v1", SqlDbType.NVarChar)
cmd.Parameters.Add("@v2", SqlDbType.NVarChar)
For Each row As DataGridViewRow In DataGridView1.Rows
If row.IsNewRow Then Continue For ' 跳過新建行
cmd.Parameters("@v1").Value = row.Cells(0).Value?.ToString()
cmd.Parameters("@v2").Value = row.Cells(1).Value?.ToString()
cmd.ExecuteNonQuery()
Next
End Using
End Using
MessageBox.Show("批次存入完成")
End Sub
DataGridView 批次入庫:**參數化 SQL + 迴圈內更新參數值 + ExecuteNonQuery**。原代碼 SQL 在迴圈外、字串拼接、變數未定義,三重錯誤。