


Pourquoi mon application Java génère-t-elle une exception MySQLSyntaxError lors de l'insertion de données ?
Nov 02, 2024 am 02:32 AMJDBC signale une exception MySQLSyntaxError avec une instruction valide
Dans une application Java se connectant à une base de données MySQL, une exception a été rencontrée lors de la tentative d'insertion d'un nouveau lignes dans un tableau. L'exception MySQLSyntaxError a été levée, malgré le fait que l'instruction INSERT s'est exécutée avec succès lors de l'utilisation de MySQL Workbench.
Le code fourni est :
<code class="java">public static boolean aggiungiElem(String nome, GrafoGenerico g){ //... PreparedStatement sInserim=conn.prepareStatement(sqlCommandInserim); sInserim.setString(1, utente); sInserim.setString(2, nome); //sInserim.setObject(3,g); System.out.println(sInserim.toString()); sInserim.executeUpdate(sqlCommandInserim); sInserim.close(); return true; //... }</code>
La trace de pile de l'exception a révélé ce qui suit :
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '? , ? , DEFAULT , NULL )' at line 1
Cause
L'erreur suggère qu'il y a un problème de syntaxe dans l'instruction INSERT. Cependant, après vérification, la déclaration semble valide.
Résolution
Le problème réside dans la ligne :
<code class="java">sInserim.executeUpdate(sqlCommandInserim);</code>
Cette ligne tente pour exécuter la chaîne SQL brute au lieu d'exécuter le PreparedStatement avec les valeurs définies. La méthode appropriée pour exécuter PreparedStatement est :
<code class="java">sInserim.executeUpdate();</code>
Considérations supplémentaires
En dehors de ce problème spécifique, il est important de noter que des fuites de ressources peuvent se produire si PreparedStatements ne sont pas correctement fermés. Pour éviter cela, il est recommandé d'utiliser le bloc final pour fermer PreparedStatement ainsi que d'autres ressources telles que Connection, Statement et ResultSet.
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!

Article chaud

Outils chauds Tags

Article chaud

Tags d'article chaud

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Réduisez l'utilisation de la mémoire MySQL dans Docker

Comment modifier une table dans MySQL en utilisant l'instruction ALTER TABLE?

Comment résoudre le problème de MySQL ne peut pas ouvrir la bibliothèque partagée

Exécutez MySQL dans Linux (avec / sans conteneur Podman avec phpmyadmin)

Exécuter plusieurs versions MySQL sur macOS: un guide étape par étape

Comment sécuriser MySQL contre les vulnérabilités communes (injection SQL, attaques par force brute)?

Comment configurer le cryptage SSL / TLS pour les connexions MySQL?
