2013-11-25 65 views
0

我試圖用下面使用VB.net代碼更新MS-Access數據庫表,我得到這個錯誤「語法錯誤在UPDATE語句」無法使用VB.net

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() 
到更新MS-Access數據庫表

我花了幾個小時在谷歌,我無法解決這個問題 這是我的字段名稱 ID,First,Last,Company,Addr,City,ST,Zip,MobileP,HomeP,Email,DL,DateSince,DateTerm, TruckID,Commants,Image他們都文字

任何人都可以告訴我這個語法有什麼問題

回答

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) 
+0

謝謝各位的快速回復,好吧,我重新命名了字段並更正了語法及其工作方式 謝謝vm –

+0

很高興爲您提供幫助,如果您發現某個答案有幫助,請考慮接受/ upvote [常見問題解答](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) – Steve

0

有你的SQL查詢的結尾是一個語法問題:

... WHERE ID = ID=?

我認爲應該是

WHERE ID = ? 
-1

您將ID參數添加到參數列表兩次,一次在開始和結束。

Dcom.Parameters.AddWithValue("@ID", Label3.Text) 
... 
Dcom.Parameters.AddWithValue("@ID", Label3.Text) 

擺脫其中之一。

+0

沒有與oledb驅動程序使用的參數類似的位置參數。你需要重複這個參數,因爲它的名字沒有被識別,而是被它的位置所識別 – Steve