繁体   English   中英

SQL插入错误VB.NET

[英]SQL insert into error 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)

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

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

请注意,您可以使用SQL-Injection,而应改用Parameters 您还应该使用Using语句来确保即使出错也可以关闭连接。

NoteSectionJet SQL中的保留字,您需要使用方括号将它们封装起来

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM