Java с использованием Jconnect
Добрый день!
Чтобы получить доступ к серверу 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 ответ
Решение
Если поле имеет автоинкремент, вам не следует присваивать ему что-либо, удалять его из подготовленной строки оператора 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();
ВНИМАНИЕ: уменьшенные индексы (номер значения знака вопроса).
Надеюсь, это поможет!