Maison > base de données > tutoriel mysql > Comment récupérer l'ID d'insertion après avoir utilisé JDBC ?

Comment récupérer l'ID d'insertion après avoir utilisé JDBC ?

Linda Hamilton
Libérer: 2025-01-23 19:08:17
original
944 Les gens l'ont consulté

How to Retrieve the Insert ID After Using JDBC?

Accès aux ID d'enregistrement nouvellement insérés avec JDBC

Ce guide explique comment récupérer l'ID généré automatiquement après l'insertion d'un enregistrement de base de données à l'aide de JDBC. Plusieurs approches existent, selon votre système de base de données.

Tirer parti Statement#getGeneratedKeys()

Pour les bases de données prenant en charge les clés générées automatiquement, la méthode Statement#getGeneratedKeys() fournit une solution simple. Cette méthode renvoie un ResultSet contenant les clés générées. Surtout, vous devez demander au pilote JDBC de restituer ces clés en spécifiant Statement.RETURN_GENERATED_KEYS lors de la préparation de la déclaration.

Exemple illustratif :

<code class="language-java">try (
    Connection connection = dataSource.getConnection();
    PreparedStatement statement = connection.prepareStatement(SQL_INSERT,
                               Statement.RETURN_GENERATED_KEYS);
) {
    // Set statement parameters
    // ...

    int affectedRows = statement.executeUpdate();

    if (affectedRows == 0) {
        throw new SQLException("Record insertion failed, no rows affected.");
    }

    try (ResultSet generatedKeys = statement.getGeneratedKeys()) {
        if (generatedKeys.next()) {
            user.setId(generatedKeys.getLong(1));
        } else {
            throw new SQLException("Record insertion failed, no ID obtained.");
        }
    }
}</code>
Copier après la connexion

Alternatives spécifiques à la base de données

Il est important de noter que Statement#getGeneratedKeys() n'est pas universellement pris en charge par tous les pilotes JDBC. Des méthodes alternatives existent pour des systèmes de bases de données spécifiques :

  • Oracle : Employez un CallableStatement avec une clause RETURNING ou exécutez une requête SELECT CURRVAL(sequencename) après l'opération d'insertion.
  • MySQL et DB2 : Ces bases de données prennent généralement en charge Statement#getGeneratedKeys().
  • PostgreSQL : Les versions récentes offrent la prise en charge de Statement#getGeneratedKeys().
  • MSSQL : La prise en charge varie en fonction de la version du pilote ; vérifiez la documentation de votre conducteur pour connaître la méthode appropriée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal