2012-10-19 102 views
1

使用以下代码运行vb应用程序。我一直在我的'INSERT INTO'sql查询中遇到错误,任何人都可以看到我做错了什么?这是INSERT INTO语句中的错误 - 语法错误。SQL插入错误VB.NET

connetionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source = C:\Users\Dave\Documents\joblist.mdb;" 

      connection = New OleDb.OleDbConnection(connetionString) 


      Sql = "INSERT INTO jobList (StaffID, staffName, staffLastName, note, fault, section, techID, jobcomplete) VALUES ('" & staffid & "','" & staffFN & "','" & staffLN & "','" & staffNotes & "','" & staffFault & "', '" & staffSection & "', '" & techId & "','" & ava & "')" 
      connection.Open() 
      oledbAdapter.UpdateCommand = connection.CreateCommand 
      oledbAdapter.UpdateCommand.CommandText = Sql 
      oledbAdapter.UpdateCommand.ExecuteNonQuery() 
      connection.Close() 
      Me.JobListTableAdapter.Fill(Me.JoblistDataSet2.jobList) 
+1

你会得到什么错误? – JMK

+1

'StaffID'是否是自动增量列? –

+0

INSERT INTO人 VALUES(4,'Nilsen','Johan','Bakken 2','Stavanger') 这是在sql.change中相应插入的语法并尝试。 –

回答

0

NoteSectionreserved words in Jet SQL 你需要用方括号

Sql = "INSERT INTO jobList (StaffID, staffName, staffLastName, [note], fault, " + 
     "[section], techID, jobcomplete) VALUES (......)" 

这是你的语法错误的根源,把它们封装,但是.....
从 不谈,你有很多的问题,这里:

  • 正如Tim Schmeiter指出的那样,您使用update命令而不是 insert命令。
  • 您连接来自用户的输入文本以形成一个sql字符串。这 导致SQL注入攻击和问题文本 的正确解析(撇号,无效的日期,无效号码等)
  • staffIDtechID似乎是在数据库中的数字字段,但 你把自己的价值观单引号内像字符串。如果他们是 数字,你会在那里得到另一个可能的错误。
0

我假设,因为你插入你应该使用InsertCommand代替UpdateCommand财产。

oledbAdapter.InsertCommand.CommandText = "INSERT INTO jobList (StaffID, staffName, .... 

注意,你打开SQL注入和应该使用Parameters代替。您还应该使用Using语句来确保连接即使在出错时也会关闭。