2014-01-18 3 views
3

Это все сообщение я получаю:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException Вставка ошибка MySQL

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''user','age','school','password') values ('Admin','22','tei','admin')' at line 1

И это код:

String user = textField.getText().trim(); 
String age = textField_3.getText().trim(); 
String school = textField_4.getText().trim(); 
String password = String.valueOf(passwordField.getPassword()); 
String password1 = String.valueOf(passwordField_1.getPassword()); 

if(password.equals(password1)){ 


Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/users","root","1234"); 
PreparedStatement st = con.prepareStatement("insert into user ('user','age','school','password') values ('"+user+"','"+age+"','"+school+"','"+password+"')"); 
int rs = st.executeUpdate(); 

JOptionPane.showMessageDialog(frame, "Data Saved Successfully"); 

Любые идеи?

ответ

4

Точка подготовленных заявлений, среди прочего, не объединяет ваши запросы самостоятельно.

Вы хотите сделать следующее:

//first you "prepare" your statement (where the '?' acts as a kind of placeholder) 
PreparedStatement st = con.prepareStatement("insert into user (user,age,school,password) values (?,?,?,?);"); 
//now you bind the data to your parameters 
st.setString(1, user); 
... 
//and then you can execute it 
st.executeUpdate() 

Для получения более подробной информации см the official tutorial.

Есть несколько вещей, которые происходят за кулисами, которые делают запрос безопасным, как и экранирования специальных символов, которые в противном случае позволили бы изменять заявление (Google SQL инъекций, если вы хотите узнать больше)

+0

я получаю такое же сообщение еще раз! :/ – pap

+0

попытаться удалить 'из ваших имен столбцов, это поможет? – kmera

+0

вы забыли точку с запятой в конце инструкции. – jmsalcido

Смежные вопросы