无法使用VB.net更新MS-Access数据库表

时间:2013-11-25 14:21:12

标签: database vb.net

我正在尝试使用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

任何人都可以告诉我这种语法有什么问题

3 个答案:

答案 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)

摆脱其中一个。

相关问题