2014-09-03 131 views
-4

執行我的代碼將數據插入到我的數據庫時,我收到以下錯誤:錯誤插入數據到SQL Server數據庫

system.data.oledb.oledbexception(0X80040E14):語法錯誤插入 into語句

這裏是我的代碼:

Public Sub put_data(ByVal lstpart As List(Of String), lstpartid As List(Of String), lstmanufacturer As List(Of String), lstmanufacturerid As List(Of String), lstprice As List(Of String), lstpartdescription As List(Of String), ByVal lstpartimg As List(Of Image)) 
     Dim intCurrentRecord As Integer = 0 
     Dim strSQL As String 
     Dim ds As New DataSet 
     ' Dim sqlcmd As OleDbCommand 

     MsgBox(MyCn.State.ToString, vbOK, "test") 

     Try 

     Do While intCurrentRecord <= lstpart.Count - 1 
       strSQL = "Insert into Parts (Part, [Part ID],Manufacturer,Prices,[Manufacturer ID],[Part Description] VALUES (?,?,?,?,?,?)" 

      strSQL = strSQL.Replace(vbCrLf, " ") 

      Using MyCn 
       Using sqlcmd = New OleDbCommand(strSQL, MyCn) 
        sqlcmd.Parameters.AddWithValue("@p1", lstpart(intCurrentRecord)) 
        sqlcmd.Parameters.AddWithValue("@p2", lstpartid(intCurrentRecord)) 
        sqlcmd.Parameters.AddWithValue("@p3", lstmanufacturer(intCurrentRecord)) 
        sqlcmd.Parameters.AddWithValue("@p4", lstprice(intCurrentRecord)) 
        sqlcmd.Parameters.AddWithValue("@p5", lstmanufacturerid(intCurrentRecord)) 
        sqlcmd.Parameters.AddWithValue("@p6", lstpartdescription(intCurrentRecord)) 
         sqlcmd.ExecuteNonQuery() 
       End Using 
      End Using 
      intCurrentRecord += 1 

      Loop 
     Catch ex As Exception 
      MsgBox(ex.ToString, vbOK, "Error") 
     End Try 
     dbclose() 
+0

格式代碼 – MrTux 2014-09-03 22:47:53

+0

你必須在插入一個語法錯誤into語句。至少,列的列表缺少''''。 「使用MyCn」是否意味着'MyCn'將在'End Using'處處置?因爲你似乎正在重新使用'MyCn'('Do While ...')。 – 2014-09-03 22:48:14

+1

好像你在列列表末尾缺少''''。 – 2014-09-03 22:48:18

回答

0

你錯過了在字段列表中一個右括號。這:

Insert into Parts 
(Part, [Part ID],Manufacturer,Prices,[Manufacturer ID],[Part Description] 
VALUES 
(?,?,?,?,?,?) 

應該是這樣的:

Insert into Parts 
(Part, [Part ID],Manufacturer,Prices,[Manufacturer ID],[Part Description]) 
VALUES 
(?,?,?,?,?,?) 
+0

好的,所以我在我的語法中發現了這個問題,但是當我去提取它沒有數據的表時它將返回的那些時刻之一。不知道爲什麼。在將數據放入數據時我沒有遇到任何錯誤。在數據放入結束時有什麼需要做的,以確保文件與新數據一起保存? – 2014-09-04 02:17:07

+0

得到它找出最後,我現在用 sqlcmd.CommandText = STRSQL sqlcmd.ExecuteNonQuery() dbTrans = MyCn.BeginTransaction() dbTrans.Begin() dbTrans.Commit() dbclose() 和它作品。 – 2014-09-04 17:23:28