Mysql
 sql >> Base de données >  >> RDS >> Mysql

Puis-je exécuter plusieurs requêtes séparées par un point-virgule avec MySQL Connector/J ?

Utilisation de ; dans une requête pour la plupart des bases de données ne fonctionne pas car il ne fait généralement pas partie de la syntaxe de l'instruction elle-même, mais un terminateur pour la ligne de commande ou l'entrée de script pour séparer les instructions. La ligne de commande ou le processeur de script voit un point-virgule comme signal que l'instruction est terminée et peut être envoyée au serveur.

De plus, dans JDBC, une seule instruction prepare (ou execute) ne doit être une déclaration réelle, donc plusieurs déclarations ne sont pas autorisées et il n'est donc pas nécessaire d'avoir un point-virgule, et comme pour certaines (la plupart?) Bases de données, le point-virgule ne fait pas partie de la syntaxe de la déclaration, c'est simplement une erreur de syntaxe pour en avoir un inclus.

Si vous souhaitez exécuter plusieurs instructions, vous devez utiliser des exécutions distinctes. Techniquement, MySQL a une option pour prendre en charge plusieurs exécutions qui peuvent être activées par une propriété de connexion. Ce comportement n'est pas conforme à la spécification/API JDBC et rend votre code moins portable. Voir allowMultiQueries sur Noms de classes de pilotes/sources de données, Syntaxe d'URL et propriétés de configuration pour Connector/J