SQL插入错误VB.NET

时间:2012-10-19 11:17:45

标签: mysql sql vb.net

使用以下代码运行vb应用程序。我的'INSERT INTO'sql查询一直出错,有谁能看到我做错了什么?这是错误 - INSERT INTO语句中的语法错误。

 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)

2 个答案:

答案 0 :(得分:0)

我认为您应该使用InsertCommand而不是UpdateCommand属性,因为您要插入。

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

请注意,您已打开SQL注入,而应使用Parameters。您还应该使用Using语句来确保即使出错也会关闭连接。

答案 1 :(得分:0)

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

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

这是语法错误的来源,但是......
除此之外,你有很多问题:

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