Java с использованием Jconnect - PullRequest
       22

Java с использованием Jconnect

0 голосов
/ 24 февраля 2011

Добрый день!

Для доступа к серверу MySQL я использовал JConnect, и мой код выглядит следующим образом:

  public AddBooks() {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            String url = "jdbc:mysql://localhost:3306/catalog";
            conn = DriverManager.getConnection(url,"root","upittc");
            stmt = conn.prepareStatement("INSERT INTO books VALUES(?,?,?,?,?,?,?,?,?,?,)");

        } catch (Exception exc) {
            JOptionPane.showMessageDialog(null, exc.getMessage());
        }
        initComponents();
    }

Чтобы поместить данные в базу данных, я использовал следующий код:

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
      try {
              stmt.setString(1, jTextField0.getText()); 
              stmt.setString(2, jTextField1.getText());
              stmt.setString(3, jTextField2.getText());
              stmt.setString(4, jTextField3.getText());
              stmt.setString(5, jTextField4.getText());
              stmt.setString(6, Jan2.getSelectedItem().toString());
              stmt.setString(7, Jan3.getSelectedItem().toString());
              stmt.setString(8, jTextField5.getText());
              stmt.setString(9, jTextField6.getText());
              stmt.setString(10, jTextField8.getText());
              stmt.executeUpdate();
              JOptionPane.showMessageDialog(null, "Save Successful!");

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

Но в строке 1 есть ошибка. COUNUM COUNT не соответствует значению в строке Что это значит? Пожалуйста, порекомендуйте. Спасибо.

1 Ответ

1 голос
/ 24 февраля 2011

Если поле имеет автоинкремент, вы не должны ничего ему назначать, удалять его из подготовленной строки оператора SQL и просто устанавливать все остальное, автоинкремент выполнит работу самостоятельно.

PreparedStatement stmt = connect.prepareStatement("INSERT INTO table_name (column1, column2, column3,...) VALUES (value1, value2, value3,...) ");

избавиться от первого столбца, чтобы иметь:

PreparedStatement stmt = connect.prepareStatement("INSERT INTO table_name (column2, column3,...) VALUES ( value2, value3,...) ");

и заменить значения с вопросительными знаками и установить их, как вы делаете позже.

          stmt.setString(1, jTextField1.getText());
          stmt.setString(2, jTextField2.getText());
          stmt.setString(3, jTextField3.getText());
          stmt.setString(4, jTextField4.getText());
          stmt.setString(5, Jan2.getSelectedItem().toString());
          stmt.setString(6, Jan3.getSelectedItem().toString());
          stmt.setString(7, jTextField5.getText());
          stmt.setString(8, jTextField6.getText());
          stmt.setString(9, jTextField8.getText());
          stmt.executeUpdate();

ВНИМАНИЕ: уменьшенные индексы (числозначения знака вопроса).

Надеюсь, это поможет!

...