2013-06-05 4 views
0

нужна помощь, пожалуйста ..ошибка вставки данных в MySQL таблицы

Connection cn = DriverManager.getConnection ("jdbc:mysql://localhost/posdb", "root", ""); 
    PreparedStatement dat = cn.prepareStatement("INSERT INTO order VALUES('"+num+"',"+buyamount.elementAt(0)+","+buyamount.elementAt(1)+","+buyamount.elementAt(2)+","+buyamount.elementAt(3)+","+buyamount.elementAt(4)+","+buyamount.elementAt(5)+","+buyamount.elementAt(6)+","+buyamount.elementAt(7)+","+buyamount.elementAt(8)+","+buyamount.elementAt(9)+","+buyamount.elementAt(10)+","+buyamount.elementAt(11)+","+buyamount.elementAt(12)+","+buyamount.elementAt(13)+","+buyamount.elementAt(14)+","+buyamount.elementAt(15)+","+buyamount.elementAt(16)+","+buyamount.elementAt(17)+","+buyamount.elementAt(18)+","+buyamount.elementAt(19)+","+tot+","+tot2+","+(tot2-tot)+")"); 
    System.out.println(dat); 
    dat.executeUpdate(); 
    cn.close(); 

Сообщение об ошибке:

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 'order VALUES('20130605093640',1, 0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9500,1200' at line 1 

Num является строкой, карапуз и tot2 являются целыми числами, и buyamount является вектором целого.

спасибо .. любая помощь будет оценена ..

+0

Посмотрите http://stackoverflow.com/questions/3137910/how-can-i-make-a-table-in-mysql-called-order – Craig

+0

я не понимал, что порядок зарезервированные слова. спасибо большое :) – Aldibe

ответ

1

Order зарезервированное слово в MySQL - использование кавычку вокруг него:

INSERT INTO `order`... 

http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html

+0

он по-прежнему производит ту же ошибку с backticks. но когда я изменил таблицу на заказы, она работала нормально. Благодарю. – Aldibe

+0

@ user2453998 - backticks должны работать (не одинарные кавычки). Но да, я бы рекомендовал изменить имя таблицы, если можно. Рад, что ты заработал! – sgeddes

0

Кроме того, вы можете захотеть подумайте об использовании подготовленного заявления надлежащим образом. Это поможет избежать внедрения sql и упростить чтение кода.

private static final String INSERT = "insert into myTable values(?,?,?)"; 
public void insertData(String varA, int numB, Date myDate) throws SQLException { 

    Connection cn=null; 
    PreparedStatement ps=null; 
    try { 
     cn = DriverManager.getConnection("...your connection string..."); 
     ps = cn.prepareStatement(INSERT); 
     ps.setString(1, varA); 
     ps.setInt(2, numB); 
     ps.setDate(3, myDate); 

     ps.executeUpdate(); 

    }catch(SQLException sqe) { 
     throw sqe; 
    } finally { 
     try {ps.close();}catch(Exception ex) {} 
     try {cn.close();}catch(Exception ex) {} 
    } 
} 
Смежные вопросы