Mysql TextFieldParser读取文件并插入数据库

Mysql TextFieldParser读取文件并插入数据库,mysql,vb.net,csv,visual-studio-2013,Mysql,Vb.net,Csv,Visual Studio 2013,我正在尝试从.csv文件读取数据,并将数据插入mysql数据库。.csv文件和数据库有4列 我能够将数据插入数据库。连接工作正常,但我无法从数据库中正确字段的.csv文件中获取字段 那么,如何使用我正在使用的方法从数据库中同一字段的.csv文件中获取字段呢 我的代码与此类似: Using MyReader As New Microsoft.VisualBasic.FileIO.TextFieldParser("C:\ParserText.csv") MyReader.TextFieldType

我正在尝试从.csv文件读取数据,并将数据插入mysql数据库。.csv文件和数据库有4列

我能够将数据插入数据库。连接工作正常,但我无法从数据库中正确字段的.csv文件中获取字段

那么,如何使用我正在使用的方法从数据库中同一字段的.csv文件中获取字段呢

我的代码与此类似:

Using MyReader As New Microsoft.VisualBasic.FileIO.TextFieldParser("C:\ParserText.csv")
MyReader.TextFieldType = Microsoft.VisualBasic.FileIO.FieldType.Delimited
MyReader.Delimiters = New String() {","}
Dim currentRow As String()
While Not MyReader.EndOfData
    Try
        currentRow = MyReader.ReadFields()
        For Each currentField As String In currentRow

            /*Use sql to insert data to database here*/

            cmd.commandText = "INSERT INTO mydatabase(column1, column2, column3, column4) VALUES(??, ??, ??, ??)"
            cmd.ExecuteNonQuery()

        Next 
    Catch ex As Microsoft.VisualBasic.FileIO.MalformedLineException
        MsgBox("Line " & ex.Message & " is invalid.  Skipping")
    End Try 
    End While 
End Using
试试这个代码

    Using MyReader As New Microsoft.VisualBasic.FileIO.TextFieldParser("C:\ParserText.csv")
   dim table as new datatable 
MyReader.TextFieldType = Microsoft.VisualBasic.FileIO.FieldType.Delimited
    MyReader.Delimiters = New String() {","}
    myreader.Readline()

Do Until myreader.EndOfData = True
     table.Rows.Add(myreader.ReadFields())
Loop
                       'Use sql to insert data to database here
    for intconut=0 to table.rows.count-1
                cmd.commandText = "INSERT INTO mydatabase(column1, column2, column3, column4) VALUES('" &table.rows(intcount).item(0) & "','" & table.rows(intcount).item(1) & "','" & table.rows(intcount).item(2) & "', '" & table.rows(intcount).item(3)) & "')"
                cmd.ExecuteNonQuery()

     Next 
        Catch ex As Microsoft.VisualBasic.FileIO.MalformedLineException
            MsgBox("Line " & ex.Message & " is invalid.  Skipping")
        End Try 
        End While 
    End Using
这可能有帮助。

无需使用。您可以更改while子句的内部以匹配以下内容:

While Not MyReader.EndOfData
    Try
        currentRow = MyReader.ReadFields()

        cmd.commandText = string.Format("INSERT INTO mydatabase(column1, column2, column3, column4) VALUES (""{0}"", ""{1}"", ""{2}"", ""{3}"")", currentRow[0], currentRow[1], currentRow[2], currentRow[3])

        cmd.ExecuteNonQuery()

        Catch ex As Microsoft.VisualBasic.FileIO.MalformedLineException
        MsgBox("Line " & ex.Message & " is invalid.  Skipping")
    End Try 
End While 

一旦您了解了此代码的工作原理,您应该将其替换为。

您是将csv文件加载到datagridview还是直接将其插入到数据库?不,我只是从.csv文件的每一行读取每个字段,并尝试在数据库中插入字段值。上面显示了用于读取文件的所有代码。您可以使用datatable保存数据,然后将表中的数据插入sql right??在以下行中出现错误:table.rows.Add(myreader.ReadFields())。错误:System.Data.dll中发生“System.ArgumentException”类型的未处理异常。其他信息:输入数组长于此表中的列数。请使用
table.columns.add(“column1”)
before readfields()。获取新错误:关键字“table”附近的语法不正确。从我的sql queryKoiski中,我不能给你完整的代码,所以你可以复制粘贴并继续,我可以为你的问题提供一些逻辑。这是查询语法的问题。对变量使用适当的qoutes和&,然后再试一次。谢谢,我不知道如何用变量和引号结束查询