web-dev-qa-db-fra.com

Insérer une ligne dans la base de données avec PreparedStatement

Je souhaite insérer une ligne dans une table à l'aide de PreparedStatement. La table a 3 colonnes (int, String, String). Le fait est que la colonne int est AUTO_INCREMENT, donc je veux laisser cette variable vide et laisser la base de données faire ce travail (c'est un id). Je n'ai pas encore trouvé comment faire ça!

C'est une base de données MySQL.

19
Lucas Arrefelt

C'est relativement simple, laissez simplement la colonne d'auto-incrémentation de la liste des colonnes:

insert into mytbl(str1, str2) values (?, ?)

Préparez l'instruction, définissez les deux paramètres et exécutez-la en mode sans requête.

16
dasblinkenlight

Fournissez simplement les entrées String dans votre chaîne de requête SQL et la base de données remplira le champ auto_increment:

String insertSQL = "INSERT INTO MyTable (StrCol1, StrCol2) VALUES (?, ?)";
PreparedStatement preparedStatement = dbConnection.prepareStatement(insertSQL);
preparedStatement.setString(1, "Val 1");
preparedStatement.setString(2, "Val 2");
preparedStatement.executeUpdate();
16
Reimeus

Si le champ est déjà incrémenté automatiquement, il suffit de remplir uniquement les deux autres champs. Voici un exemple

String sql = "INSERT INTO mytableName("
    + "fistStringColumnName,"
    + "secondStringColumnName) "
    +  "VALUES(?,?)";

try (PreparedStatement pstmt = connection.prepareStatement(sql)) {

    // Set the values
    pstmt.setString(1, "firstString");
    pstmt.setString(2, "secondString");

    // Insert 
    pstmt.executeUpdate();

} catch (SQLException e) {

} catch (FileNotFoundException e) {

}
5
klebe85