添加 DataViewGrid 的内容以访问 - VB

Adding contents of a DataViewGrid to access - VB

我遇到了一个令人沮丧的问题!我下面的 VB 代码旨在将 DataGridView 中的记录传输到 Access 数据库。比方说,gridview有3条记录

Name|House|Age
John|L|1
Rick|B|12
Fred|A|20

'name|house|age'是GridView的header,三个记录组成body。在我下面的逻辑中,我在 Access 数据库中得到了 John 的记录三次(即,我没有 John、Rick 和 Fred,而是完全相同的 John, L, 1 三次)。

我确定这是我忽略的一个小逻辑错误 - 所以如果有新的视角和一双眼睛就更好了。我只包括了我认为是问题根源的内容,但如果问题可能不在此范围内,我很乐意包括更多来源。

感谢您的帮助!

    Dim con As New OleDb.OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source =Jack.mdb")
                Dim cmd As New OleDb.OleDbCommand("INSERT INTO students(StuName,House,Age) VALUES (@StuName,@House,@Age)", con)
                Dim studentName As String
                Dim studentHouse As String
            Dim studentAge As String
            con.Open()

            For x As Integer = 1 To DataGridView1.Rows.Count - 1
                studentName = DataGridView1.Rows(x).Cells(0).Value
                studentHouse = DataGridView1.Rows(x).Cells(1).Value
                studentAge = DataGridView1.Rows(x).Cells(2).Value


                Try
                    cmd.Parameters.AddWithValue("@StuName", SqlDbType.Text).Value = studentName
                    cmd.Parameters.AddWithValue("@House", SqlDbType.Text).Value = studentHouse
                    cmd.Parameters.AddWithValue("@Age", SqlDbType.Text).Value = studentAge
                Catch ex As Exception
                End Try

                cmd.ExecuteNonQuery()
            Next x
                con.Close()

你一遍又一遍地添加参数。尝试在循环开始时清除它们:

For x As Integer = 1 To DataGridView1.Rows.Count - 1
  cmd.Parameters.Clear()

并避免出现空的 Try-Catch。当你这样做时,你忽略了代码中的问题。一方面,"Age" 字段可能不应该是文本字段。

由于您使用的是 OleDb 库,因此您的参数可能应该使用 OleDbType 而不是 SqlDbType。