好吧,我有一堆用vb.net导入DataGridView
的.txt文件,这些文件将始终具有不同的列,就像下面的两个示例一样:
第一和第二个DataGridView
我正在使用下一个代码遍历DataGridView的行和列,并且代码还将数据插入到mysql表中,现在,我进行的过程是下一个:
我打开.txt文件。
我尝试使用First DataGridView插入数据,但是由于错误,不应将数据插入表中,尽管如此,尽管它只有4个列,但是当我检查数据库时,它显示了所有内容搞砸了,它复制了列,就像下面的图像一样。
然后我将它们“导出”到mysql表。当我这样做时,我在上图中得到了错误。
这是我的代码:
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循环,它可能不是最有效的方法,但很简单。该代码还将更新数据表,或者在当前数据库中没有匹配的键时插入。如果您有任何疑问,甚至对我的代码有任何建议,请随时与我联系。