Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net和MySQL:在';字段列表';_Mysql_Vb.net - Fatal编程技术网

Vb.net和MySQL:在';字段列表';

Vb.net和MySQL:在';字段列表';,mysql,vb.net,Mysql,Vb.net,我希望你能帮助我。首先,如果我的英语很烦人,对不起,我不是以英语为母语的人 我犯了这个错误,我看不出我做错了什么。我有一个程序,用另一个使用OLEB数据库的程序的数据填充本地MySQL数据库。 因此,它会比较这些表,并根据需要上传新数据。但是只有一个表使用了与其他表相同的Sub,我就遇到了这个错误 “字段列表”中的未知列“lpedidos.serie” 问题是“lpedidos.serie”确实存在。这是潜艇的代码,请不要笑,我知道这可能是非常低效的,但我只是个傻瓜 Public

我希望你能帮助我。首先,如果我的英语很烦人,对不起,我不是以英语为母语的人

我犯了这个错误,我看不出我做错了什么。我有一个程序,用另一个使用OLEB数据库的程序的数据填充本地MySQL数据库。 因此,它会比较这些表,并根据需要上传新数据。但是只有一个表使用了与其他表相同的Sub,我就遇到了这个错误

“字段列表”中的未知列“lpedidos.serie”

问题是“lpedidos.serie”确实存在。这是潜艇的代码,请不要笑,我知道这可能是非常低效的,但我只是个傻瓜

        Public Sub notIndexedTables(table As DataTable, table2 As DataTable, tableNA As String)
    Dim temptable As DataTable
    temptable = table.Clone
    Dim tablename As String = temptable.TableName
    Dim myAdapter As MySql.Data.MySqlClient.MySqlDataAdapter
    Dim SQL As String

    Dim newconn As New MySql.Data.MySqlClient.MySqlConnection
    newconn = mysqlConnection()
    newconn.Open()

    SQL = "TRUNCATE " & tableNA
    myAdapter = New MySql.Data.MySqlClient.MySqlDataAdapter()
    Dim command As MySql.Data.MySqlClient.MySqlCommand
    command = New MySql.Data.MySqlClient.MySqlCommand(SQL, newconn)
    myAdapter.DeleteCommand = command
    myAdapter.DeleteCommand.ExecuteNonQuery()

    For Each row As DataRow In table.Rows()
        Dim columnNumber As Int32 = row.ItemArray.Count
        Dim i As Integer = 0

        Dim s1 As String = "("

        For Each columna In row.ItemArray
            i = i + 1
            If i = columnNumber Then
                s1 = s1 + CStr(table2.Columns.Item(i - 1).ColumnName) & ")"
            Else
                s1 = s1 & CStr(table2.Columns.Item(i - 1).ColumnName) & ", "
            End If
        Next

        Dim s2 As String = "("
        i = 0
        For i = 0 To (columnNumber - 2)
            s2 = s2 & "'" & CStr(row.Item(i)) & "', "
        Next

        s2 = s2 & "'" & CStr(row.Item(columnNumber - 1)) & "')"


        SQL = "INSERT INTO " & tableNA & " " & s1 & " VALUES " & s2
        myAdapter = New MySql.Data.MySqlClient.MySqlDataAdapter()
        '  myCommand = New MySql.Data.MySqlClient.MySqlCommandBuilder(myAdapter)

        command = New MySql.Data.MySqlClient.MySqlCommand(SQL, newconn)

        myAdapter.InsertCommand = command
        myAdapter.InsertCommand.ExecuteNonQuery()


    Next
    newconn.Close()
    newconn.Dispose()
End Sub
基本上,它接受MySQL表(tableNA),截断它(此过程用于没有索引的表,对于具有唯一索引的表还有其他过程),并用OLEB表(table)中的数据填充它,并从MySQL表(table2)的临时副本中获取列名(在这种情况下,也许没有必要使用表2……但无论如何)

下面是异常以及引发异常时SQL字符串所取的值。

这是phpMyAdmin中表结构的屏幕截图。

当您声明新的MySqlConnection时,需要将连接字符串放入其中并指定数据库名称。您能显示连接字符串吗

Dim myConnection As New MySqlConnection(myConnString)
myConnection.Open()

如果这不能解决问题,请尝试另一个列名,并确保它不是保留关键字。

从vb连接时,该表似乎没有该列。请确保连接到正确的数据库。我不这样认为,它可以与其他表一起工作,并在引发异常之前更新它们。什么是“serie”in英语?法语中的“set”或“range”是指“set”还是“range”。如果是,可能是保留关键字问题。你有多个数据库副本吗?有没有可能其中一个缺少此列,其他内容完全相同?没有,屏幕截图来自我正在处理的数据库……我很确定,因为它正确地截断了表。