2014-10-25 2 views
0

У меня проблема с автоматически увеличивающимися значениями в readyStatement. Вот моя база данныхMySql Java auto increment

CREATE TABLE `book` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `isbn` varchar(10) NOT NULL, 
    `title` varchar(20) NOT NULL, 
    `pages` int(11) NOT NULL, 
    `price` decimal(5,2) NOT NULL, 
    PRIMARY KEY (`id`), 
    UNIQUE KEY `isbn` (`isbn`) 

и вот мой PreparedStatement:

String title = fieldTitle.getText(); 
     String isbn = fieldISBN.getText(); 
     double price = Double.parseDouble(fieldPrice.getText()); 
     int pages = Integer.parseInt(fieldPages.getText()); 

     conn = DBUtil.connect(); 
     try { 
      prepState = conn.prepareStatement("insert into book values(?,?,?,?)"); 

      prepState.setString(1, isbn); 
      prepState.setString(2, title); 
      prepState.setInt(3, pages); 
      prepState.setDouble(4, price); 

      prepState.execute(); 

Однако, когда я заполнить поля я получаю следующее сообщение об ошибке:

java.sql.SQLException: Количество столбцов не соответствует количеству значений в строке 1. Я знаю, что, когда поле в базе данных автообновлено, мне не нужно его помещать в запрос ...

Любые идеи?

+7

Вы должны явно назвать столбцы, которые вы хотите написать, если вы не используете все из них: 'INSERT INTO книги (ISBN, название, страницы, цена) VALUES (?,?,?,?) ' – user432

+0

Или необязательный способ - передать значение null для столбца increment. 'INSERT INTO значения книги (null,?,?,?,?)' – Payam

ответ

0

Изменить запрос включать имена столбцов: -

INSERT INTO book (isbn, title, pages, price) VALUES (?,?,?,?)