2017-09-13 73 views
-2

值java.sql.SQLException手冊:語法錯誤或訪問衝突,消息從服務器:SQL語法錯誤;檢查對應於你的MySQL服務器版本正確的語法

您的SQL語法錯誤;檢查與您的MySQL服務器版本相對應的手冊,以在''list'附近使用正確的語法(fname1,lname1,email1,email,'dob1',str,city,state,zip,order,qua,rate,comm'位於第1" 行

String k="insert into `list` (fname1,lname1,email1,email,'dob1',str,city,state,zip,order,qua,rate,comment,amt) values ('"+fname1+"','"+lname1+"','"+email1+"','"+email+"','"+dob1+"','"+str+"','"+city+"','"+state+"',"+zip+",'"+ord+"',"+qua+","+rating+",'"+comment+"',"+amt+")"; 

Here the table desc

+0

你需要用'包圍你的列值「'(和逃避任何'」''的String'(S )已經包含)。 **或**更改您的代碼以使用'PreparedStatement'並綁定參數。 –

+1

**警告**:在編寫SQL查詢時,務必[正確轉義](http://bobby-tables.com/java)任何和所有用戶數據以避免[SQL注入漏洞](http:// bobby -tables.com/)。此代碼使您面臨嚴重風險,因此不應部署。 – tadman

回答

2

在你的字符串錯誤消息2點單引號,檢查是否存在雙引號不是當作使用2個單引號。

但是,解決它有效地,其推薦使用PeparedStatement爲了避免sql注入和轉義意外的字符串,作爲@Elliott指出。

下面的例子:

各地 列表不需要
String k="insert into list (fname1,lname1,email1,email,dob1,str,city,state,zip,order,qua,rate,comment,amt) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; 
PreparedStatement ps = conn.prepareStatement(k); 
ps.setString(1, fname1); 
ps.setString(2, lname1); 
... 
ps.execute(); 
ps.close(); 
conn.close(); 
0

單引號。這也是單引號的錯誤類型。而且你還缺少一個分號;在您的陳述結束時,它看起來像忘了用單引號包裝上一個值。但是,錯誤出現,因爲你必須在你的領域括號中的單引號周圍「dob1」

String k="insert into list (fname1,lname1,email1,email,dob1,str,city,state,zip,order,qua,rate,comment,amt) values ('"+fname1+"','"+lname1+"','"+email1+"','"+email+"','"+dob1+"','"+str+"','"+city+"','"+state+"',"+zip+",'"+ord+"',"+qua+","+rating+",'"+comment+"','"+amt+"');"; 
相關問題