Maison >Java >javaDidacticiel >Comment puis-je exécuter plusieurs requêtes SQL dans une seule instruction JDBC ?

Comment puis-je exécuter plusieurs requêtes SQL dans une seule instruction JDBC ?

DDD
DDDoriginal
2024-12-21 04:32:14976parcourir

How Can I Execute Multiple SQL Queries in a Single JDBC Statement?

Exécuter plusieurs requêtes dans une seule instruction avec JDBC

Dans JDBC, l'exécution de plusieurs requêtes dans une seule instruction est possible, mais avec des exigences spécifiques .

Option 1 : Configuration de plusieurs Requêtes

Pour exécuter plusieurs requêtes séparées par un point-virgule, définissez la propriété de connexion à la base de données allowMultiQueries sur true.

String url = "jdbc:mysql:///test?allowMultiQueries=true";
boolean hasMoreResultSets = stmt.execute(multiQuerySqlString);

Ensuite, parcourez les résultats de la requête en utilisant :

while ( hasMoreResultSets || stmt.getUpdateCount() != -1 ) {
  if ( hasMoreResultSets ) {
    ResultSet rs = stmt.getResultSet();
    // handle resultSet
  } else {
    int queryResult = stmt.getUpdateCount();
    // handle DML updates
  }
  hasMoreResultSets = stmt.getMoreResults();
}

Option 2 : Stocké Procédures

Créez une procédure stockée qui combine les requêtes SELECT et INSERT. Ensuite, exécutez-le à l'aide d'un CallableStatement :

CallableStatement cstmt = con.prepareCall("call multi_query()");
boolean hasMoreResultSets = cstmt.execute();

Parcourez les résultats renvoyés comme avant :

while (hasMoreResultSets) {
  ResultSet rs = stmt.getResultSet();
  // handle resultSet
}

Il est important de noter que même si cette fonctionnalité est largement prise en charge, elle peut ne pas l'être disponible dans tous les pilotes JDBC ou implémentations de bases de données. Consultez toujours la documentation spécifique du pilote pour les détails de compatibilité.

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!

Déclaration:
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