2014-11-10 2 views
0

У меня есть этот кусок кода, который вставляет записи в таблицу счетов:MySQL Query через Java Синтаксис ошибки

String accNumber = jTextField5.getText(); 
String accName = jTextField4.getText(); 
String accAddress1 = jTextField3.getText(); 
String accAddress2 = jTextField2.getText(); 
String accCity = jTextField6.getText(); 
String accCounty = jTextField7.getText(); 
String accPostCode = jTextField9.getText(); 
String accContact = jTextField8.getText(); 

String query = "Insert into accounts (AccNo, name, address, address2, address3, City, County, PostCode, contact) values (?, ?, ?, ?, ?, ?, ?, ?, ?)"; 

try{ 

    connect.pst = connect.con.prepareStatement(query); 
    connect.pst.setString(1, accNumber); 
    connect.pst.setString(2, accName); 
    connect.pst.setString(3, accAddress1); 
    connect.pst.setString(4, accAddress2); 
    connect.pst.setString(5, null); 
    connect.pst.setString(6, accCity); 
    connect.pst.setString(7,accCounty); 
    connect.pst.setString(8, accPostCode); 
    connect.pst.setString(9, accContact); 
    connect.pst.execute(); 
    JOptionPane.showMessageDialog(null, "Saved"); 

}catch(Exception e){ 
    JOptionPane.showMessageDialog(null, e); 
} 

Это работает просто отлично и вставляет записи в таблицу счетов. Затем у меня есть этот фрагмент кода, который предназначен для обновления таблицы orderstable, содержащей 6 полей; Номер заказа, AccNo, Номер Incvoice, Описание, Сумма, НДС. Поле Номер заказа был установлен автоматический инкремент Код:

String accNumber = jTextField29.getText(); 
String invNo = jTextField20.getText(); 
String description = jTextField21.getText(); 
String vat = jTextField22.getText(); 
String amount = jTextField23.getText(); 

String query = "Insert into orderstable (Order Number, AccNo, Invoice Number, Description, Amount, VAT) values (?, ?, ?, ?, ?, ?)"; 
try{ 

    connect.pst = connect.con.prepareStatement(query); 
    connect.pst.setString(1, "3"); 
    connect.pst.setString(2, accNumber); 
    connect.pst.setString(3, invNo); 
    connect.pst.setString(4, description); 
    connect.pst.setString(5, amount); 
    connect.pst.setString(6, vat); 
    connect.pst.execute(); 
    JOptionPane.showMessageDialog(null, "Saved"); 

}catch(Exception e){ 
    JOptionPane.showMessageDialog(null, e); 
} 

Этот код выше возвращает ошибку синтаксиса SQL. Я не знаю, почему. В чем причина этой синтаксической ошибки SQL?

+0

, как вы сказали, номер заказа на автоматическое приращение, так что вы можете вставить строку с указанным номером заказа (вы не должны включать это вообще) – nafas

+0

проблема связана с вашими именами полей 'Номер заказа, AccNo, номер счета', вы не можете использовать пробелы в именах – tarzanbappa

ответ

3

Вы не можете иметь имена столбцов с пространством, и если вы делаете это, Вы должны иметь то в обратных кавычках

Insert into orderstable 
(`Order Number`, AccNo, `Invoice Number`, Description, Amount, VAT) 

Проверить здесь для получения более подробной информации http://dev.mysql.com/doc/refman/5.0/en/identifiers.html

+0

А я вижу. Большое спасибо. – BEE

0

Поля автоматического приращения order number не должен быть включить в раздел атрибута.

Ваш запрос должен выглядеть следующим образом колонке

String query = "Insert into orderstable (AccNo, Invoice Number, Description, Amount, VAT) values (?, ?, ?, ?, ?)"; 

order number не следует включать в список полей, потому что это автоматическое приращение

+5

Пожалуйста, объясните лучше свой ответ –

+0

ваш запрос должен быть таким, как этот запрос строки = «Вставить в orderstable (значения AccNo, Invoice Number, Description, Amount, VAT) (?,?,?,?,?)"; номер заказа colm не должен включаться в список полей, поскольку он автоматически увеличивается – ayaz321

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