我正在尝试使用VB.net使用下面的代码更新MS-Access数据库表,我收到此错误“UPDATE语句中的语法错误”
Dim Dcon As OleDbConnection
Dim Dcom As OleDbCommand
Dcon = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source= " & DataSource & ";")
Dcom = New OleDbCommand("UPDATE Drivers SET ID=?,First=?,Last=?,Company=?,Addr=?,City=?,ST=?,Zip=?,MobileP=?,HomeP=?,Email=?,DL=?,DateSince=?,DateTerm=?,TruckID=?,Commants=?,Image=? WHERE ID = ID=?", Dcon)
Dcom.Parameters.AddWithValue("@ID", Label3.Text)
Dcom.Parameters.AddWithValue("@First", TextBox1.Text)
Dcom.Parameters.AddWithValue("@Last", TextBox2.Text)
Dcom.Parameters.AddWithValue("@Company", TextBox3.Text)
Dcom.Parameters.AddWithValue("@Addr", TextBox4.Text)
Dcom.Parameters.AddWithValue("@City", TextBox5.Text)
Dcom.Parameters.AddWithValue("@ST", TextBox6.Text)
Dcom.Parameters.AddWithValue("@Zip", TextBox7.Text)
Dcom.Parameters.AddWithValue("@MobileP", TextBox8.Text)
Dcom.Parameters.AddWithValue("@HomeP", TextBox9.Text)
Dcom.Parameters.AddWithValue("@Email", TextBox10.Text)
Dcom.Parameters.AddWithValue("@DL", TextBox11.Text)
Dcom.Parameters.AddWithValue("@DateSince", TextBox12.Text)
Dcom.Parameters.AddWithValue("@DateTerm", TextBox13.Text)
Dcom.Parameters.AddWithValue("@TruckID", TextBox14.Text)
Dcom.Parameters.AddWithValue("@Commants", TextBox15.Text)
Dcom.Parameters.AddWithValue("@Image", DriverImage)
Dcom.Parameters.AddWithValue("@ID", Label3.Text)
Dcom.ExecuteNonQuery()
Dcon.Close()
我在谷歌上花了几个小时,我无法解决这个问题 这是我的字段名称 ID,First,Last,Company,Addr,City,ST,Zip,MobileP,HomeP,Email,DL,DateSince,DateTerm,TruckID,Commants,Image all they TEXT
任何人都可以告诉我这种语法有什么问题
答案 0 :(得分:0)
FIRST和IMAGE这两个词是MS-Access Jet SQL中的保留关键字。如果你想使用它们,你应该在它们周围使用方括号。
where子句的语法也是错误的。 (但这可能只是一个错字)
Dcom = New OleDbCommand("UPDATE Drivers SET " +
"ID=?,[First]=?,Last=?,Company=?,Addr=?,City=?," +
"ST=?,Zip=?,MobileP=?,HomeP=?,Email=?,DL=?,DateSince=?," +
"DateTerm=?,TruckID=?,Commants=?,[Image]=? WHERE ID=?", Dcon)
答案 1 :(得分:0)
在SQL查询结束时存在语法问题:
... WHERE ID = ID=?
我认为应该是
WHERE ID = ?
答案 2 :(得分:-1)
您将ID参数添加到参数列表两次,一次在开头和结尾。
Dcom.Parameters.AddWithValue("@ID", Label3.Text)
...
Dcom.Parameters.AddWithValue("@ID", Label3.Text)
摆脱其中一个。