Maison > base de données > tutoriel mysql > Comment récupérer l'ID d'insertion à l'aide de JDBC ?

Comment récupérer l'ID d'insertion à l'aide de JDBC ?

Mary-Kate Olsen
Libérer: 2025-01-23 19:02:13
original
555 Les gens l'ont consulté

How to Retrieve the Insert ID Using JDBC?

Récupération des ID d'insertion à l'aide de JDBC : un guide complet

Dans les opérations de base de données impliquant des insertions, il est souvent crucial d'obtenir l'ID de l'enregistrement nouvellement inséré. Cet article fournit un guide détaillé sur la façon d'y parvenir à l'aide de JDBC, en se concentrant spécifiquement sur Microsoft SQL Server.

Prise en charge JDBC pour la récupération d'ID d'insertion

JDBC fournit un mécanisme pratique pour récupérer l'ID d'un enregistrement nouvellement inséré via la méthode Statement#getGeneratedKeys(). Cette méthode ne peut être utilisée que si la colonne insérée contient des valeurs générées automatiquement. Pour permettre la récupération des clés générées, une instruction de création Statement.RETURN_GENERATED_KEYS doit être utilisée.

Exemple de code Java

L'extrait de code suivant montre comment récupérer l'ID d'insertion à l'aide de JDBC en Java :

<code class="language-java">public void create(User user) throws SQLException {
    try (
        Connection connection = dataSource.getConnection();
        PreparedStatement statement = connection.prepareStatement(SQL_INSERT,
            Statement.RETURN_GENERATED_KEYS);
    ) {
        statement.setString(1, user.getName());
        statement.setString(2, user.getPassword());
        statement.setString(3, user.getEmail());

        int affectedRows = statement.executeUpdate();
        if (affectedRows == 0) {
            throw new SQLException("创建用户失败,没有影响的行。");
        }

        try (ResultSet generatedKeys = statement.getGeneratedKeys()) {
            if (generatedKeys.next()) {
                user.setId(generatedKeys.getLong(1));
            } else {
                throw new SQLException("创建用户失败,未获得ID。");
            }
        }
    }
}</code>
Copier après la connexion

Nuances d'implémentation de JDBC

Il est important de noter que l'efficacité de Statement#getGeneratedKeys() peut varier en fonction du pilote JDBC utilisé. Bien que les versions les plus récentes prennent en charge cette fonctionnalité, des exceptions peuvent exister. Par exemple, le pilote JDBC d'Oracle peut nécessiter l'utilisation de RETURNING avec une clause CallableStatement.

Alternatives Oracle

Pour les bases de données Oracle, des alternatives existent. Une solution consiste à utiliser RETURNING avec une clause CallableStatement. Une autre façon consiste à effectuer une requête SELECT CURRVAL(sequencename) après l'opération INSERT pour obtenir les clés générées les plus récemment.

En résumé, JDBC fournit un mécanisme fiable pour obtenir l'ID d'insertion lorsqu'un enregistrement est inséré. En tirant parti de Statement#getGeneratedKeys(), les développeurs peuvent récupérer efficacement les identifiants nouvellement générés pour des opérations de traitement ou de gestion de base de données ultérieures.

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