1

使用以下代码运行 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)
4

2 回答 2

0

我假设您应该使用InsertCommand而不是UpdateCommand属性,因为您正在插入。

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

请注意,您对 SQL 注入开放,应该使用它Parameters。您还应该使用Using语句来确保即使出现错误也关闭连接。

于 2012-10-19T11:30:09.517 回答
0

Note并且SectionJet SQL 中的保留字 您需要用方括号将它们封装起来

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

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

  • 正如 Tim Schmeiter 所指出的,您使用 update 命令而不是 insert 命令。
  • 您将用户的输入文本连接起来形成一个 sql 字符串。这会导致 sql 注入攻击和正确解析文本的问题(撇号、无效日期、无效数字等)
  • staffID并且techID似乎是数据库中的数字字段,但是您将它们的值像字符串一样放在单引号内。如果它们是数字,您将在那里得到另一个可能的错误。
于 2012-10-19T11:34:39.220 回答