2016-04-27 2 views
1

Попытка выяснить, что такое ошибка в этом java-коде.Ошибка синтаксиса Java Java

The SQLException reads: " 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 (item_quantity, customer_id, product_id) VALUES (5, 191, 31)' 

Таблица заказа выглядит

order_id int pk ai <br> 
item_quantity <br> 
customer_id int <br> 
product_id int <br> 

А функция, которая вставляет является:

public void createOrder(int productQuantity, int customerId, int productId) throws SQLException { 

    sql = "INSERT INTO order (item_quantity, customer_id, product_id) VALUES (" + productQuantity + ", " + customerId + ", " + productId + ")"; 
    try { 
     int a = stmt.executeUpdate(sql); 
     if (a == 1) { 
      System.out.println("Order Added"); 
     } else { 
      System.out.println("Order Failed"); 
     } 
    } catch (SQLException e) { 
     System.out.println(e.getMessage()); 
    } 
} 

Любая помощь будет высоко оценена, как не могу понять это.

+0

Не могли бы вы отменить «заказ»? – 1000111

+0

[ЗАКАЗ является зарезервированным словом] (http://dev.mysql.com/doc/refman/5.0/en/keywords.html). Напишите '' Заказ'' вместо 'order'. – Satya

+1

Несвязанный с этой конкретной проблемой, но поскольку вы начинаете получать удовольствие от этого способа выполнения SQL, вы должны начать изучать PreparedStatements. Они предлагают вам большую безопасность (если ваши 'int' args были Strings, я сразу же буду задаваться вопросом об атаке SQL-инъекции). – yshavit

ответ

3

Заключите заказа (имя таблицы) по кавычке , как показано ниже:

INSERT INTO `order` (item_quantity, customer_id, product_id) VALUES... 

Примечание:

кавычку помогут вам случайно, используя имя, которое является зарезервированным словом в SQL например. Возьмите таблицу с именем «где», это глупое имя для таблицы, которую я согласен, но если вы обернете ее в обратном направлении, она будет работать нормально

+0

Производя ту же ошибку – user69309

+0

вы можете распечатать переменную 'sql' и поделиться результатом? – 1000111

+0

sql variable: INSERT INTO 'order' (item_quantity, customer_id, product_id) ЗНАЧЕНИЯ (3, 211, 31) – user69309