好吧,我有一堆用vb.net导入DataGridView的.txt文件,这些文件将始终具有不同的列,就像下面的两个示例一样:

第一和第二个DataGridView
mysql - 如何遍历DatagridView中的行和列以将其值插入mysql表-LMLPHP

我正在使用下一个代码遍历DataGridView的行和列,并且代码还将数据插入到mysql表中,现在,我进行的过程是下一个:


我打开.txt文件。
我尝试使用First DataGridView插入数据,但是由于错误,不应将数据插入表中,尽管如此,尽管它只有4个列,但是当我检查数据库时,它显示了所有内容搞砸了,它复制了列,就像下面的图像一样。
然后我将它们“导出”到mysql表。当我这样做时,我在上图中得到了错误。


mysql - 如何遍历DatagridView中的行和列以将其值插入mysql表-LMLPHP

这是我的代码:

 
Private Sub ExportarToolStripMenuItem_Click(发送方作为对象,e作为EventArgs)处理ExportarToolStripMenuItem.Click

        Dim conn As MySqlConnection = New MySqlConnection(“ Server = localhost; user = root; password = 1234; database = chafa; port = 3306”)
        conn.Open()

        Dim comm作为MySqlCommand = New MySqlCommand()
        comm.Connection = conn



        昏暗的col1,col2,col3,col4,col5,col6,col7,col8,col9,col10

        Dim tabla作为新数据表


        对于i = 2到DgvDatos.Rows.Add-1步骤1
            对于j = 0 To Me.DgvDatos.Columns.Count-1

                col1 = DgvDatos.Rows(i).Cells(j).Value()
                col2 = DgvDatos.Rows(i).Cells(j).Value()
                col3 = DgvDatos.Rows(i).Cells(j).Value()
                col4 = DgvDatos.Rows(i).Cells(j).Value()
                col5 = DgvDatos.Rows(i).Cells(j).Value()
                col6 = DgvDatos.Rows(i).Cells(j).Value()
                col7 = DgvDatos.Rows(i).Cells(j).Value()
                col8 = DgvDatos.Rows(i).Cells(j).Value()
                col9 = DgvDatos.Rows(i).Cells(j).Value()
                col10 = DgvDatos.Rows(i).Cells(j).Value()


                comm.CommandText =“插入ejemplo(col1,col2,col3,col4,col5,col6,col7,col8,col9,col10)values('”&col1&_“','”&col2&“','”& col3&“','”&col4&“','”&col5&“','”&col6&“','”&col7&“','”&col8&“','”&col9& “','”&col10&“')”
                comm.ExecuteNonQuery()
            下一个
        下一个



        MessageBox.Show(“ Datos Agregados Correctamente”)
        conn.Close()

    结束子



我究竟做错了什么?在此先感谢您,如果我要再问一次,对不起。

最佳答案

我已经使用sql而不是mysql做过类似的事情,但是也许可以帮助您:

query = String.Empty
        query &= "UPDATE schedule SET Task = @Task, Complete = @Complete, Start_date = @Start_date, "
        query &= "Due_date = @Due_date, JRID = @JRID, Task_Manager = @Task_Manager, Entered_By = @Entered_By, Time_Entered = @Time_Entered "
        query &= "WHERE TaskID = @TaskID "
        query &= "IF @@ROWCOUNT = 0 INSERT INTO schedule ( TaskID, Task, start_date, Due_Date, Complete, Task_Manager, JRID, Entered_By, Time_Entered)"
        query &= " VALUES ( @TaskID, @Task, @start_date, @Due_Date, @Complete, @Task_Manager, @JRID, @Entered_By, @Time_Entered);"
        If MainSchedule.isokclicked = 1 Then
            For Each row As DataGridViewRow In MainSchedule.DataGridView1.Rows
                If Not (row.Cells(0).Value = Nothing) Then
                    insertcommand.Parameters.Clear()
                    insertcommand.CommandText = query
                    insertcommand.Parameters.AddWithValue("@TaskID", row.Cells(0).Value)
                    insertcommand.Parameters.AddWithValue("@Complete", "False")
                    insertcommand.Parameters.AddWithValue("@Task", row.Cells(1).Value)
                    insertcommand.Parameters.AddWithValue("@Start_date", row.Cells(2).Value)
                    insertcommand.Parameters.AddWithValue("@Due_Date", row.Cells(3).Value)
                    insertcommand.Parameters.AddWithValue("@JRID", txtJRID.Text)
                    insertcommand.Parameters.AddWithValue("@Task_Manager", row.Cells(4).Value)
                    insertcommand.Parameters.AddWithValue("@Entered_By", GetUserName())
                    insertcommand.Parameters.AddWithValue("@Time_Entered", Now)
                    insertcommand.ExecuteNonQuery()
                End If
                keypos = keypos + 1
            Next
            Connexion.Close()
        Else
        End If


它只是运行参数化查询的基本FOR循环,它可能不是最有效的方法,但很简单。该代码还将更新数据表,或者在当前数据库中没有匹配的键时插入。如果您有任何疑问,甚至对我的代码有任何建议,请随时与我联系。

10-08 01:49