J'ai une base de données sqlite en java (eclipse) avec la bibliothèque sqlite-jdbc-3.16.1.jar
.Identifiant d'incrémentation SQL, remplissage de la première ligne de la base de données
J'ai 5 lignes: id table1 (ID entier PRIMARY KEY AUTOINCREMENT), nom, Row3, row4, row5
Je veux insérer le nom, row3 et row4 et l'ID s'incrémenter.
public static void insertTest(String name, byte[] contentRow3, byte[] contentRow4) {
String sql = "INSERT INTO table1(name, contentRow3, contentRow4) VALUES(?,?,?)";
try (Connection conn = connect();
PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setString(2, name);
pstmt.setBytes(3, contentRow3);
pstmt.setBytes(4, contentRow4);
System.out.println("Added new Person to DB");
pstmt.executeUpdate();
} catch (SQLException e) {
System.out.println(e.getMessage());
}
}
Erreur: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
Quel est le problème ici?
donc le nombre après setString n'est pas le numéro de ligne? – nolags
Les valeurs que vous avez définies dans 'PreparedStatement' correspondent aux espaces réservés aux points d'interrogation dans votre requête SQL. L'indexation commence à 1, et puisque vous avez 3 points d'interrogation, vous devriez donc régler 1, 2 et 3. –