2013-03-22 105 views
0

我希望你能幫助我。所有人的拳頭,對不起,如果我的英語很煩人,我不是母語的人。Vb.net和MySQL:'字段列表'中的未知列

我得到這個錯誤,我看不出我做錯了什麼。我有一個程序用另一個使用OLEB DB的程序填充本地MySQL數據庫。 因此它比較表格並按需上傳新數據。但我得到這個錯誤,只有一個表使用與其他表使用相同的小組。在 '字段列表'

未知列 'lpedidos.serie'

的問題是, 'lpedidos.serie' 確實存在。所以這裏是sub的代碼,請不要笑,我知道這可能是非常低效的,但我只是一個noob。

 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表中的數據填充它(表),並從MySQL表的臨時副本(表2)中獲取列名(也許在這種情況下不需要使用table2 ......但無論如何)。

以下是異常情況和SQL字符串引發異常時的值。 exception

SQL string value

這裏是在phpMyAdmin表結構的屏幕截圖。 lpedidos table structure

+0

當您從vb連接時,它看起來像表沒有該列。確保你連接到正確的數據庫。 – Joni 2013-03-22 17:03:52

+0

我不這麼認爲,它可以和其他表一起工作並在拋出異常之前更新它們。 – 2013-03-22 17:07:00

+0

英語中的'serie'是什麼? 「設置」還是「範圍」是法語嗎?如果是這樣,它可能是一個保留的關鍵字問題。 – nunzabar 2013-03-22 17:14:15

回答

0

當您聲明New MySqlConnection時,需要將連接字符串放在那裏並指定數據庫名稱。你能顯示你的連接字符串嗎?

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

如果這樣不能解決問題,請嘗試使用另一個列名並確保它不是保留關鍵字。

相關問題