Base de données : MySQL
Lors de l'écriture d'une application, pour faciliter le débogage du programme, les informations sur les exceptions peuvent être affichées dans le code de gestion des exceptions, afin que le code puisse être débogué en fonction des invites d'erreur. Le code de gestion des exceptions peut généralement être écrit comme ceci :
essayer{
…
}attraper(Exception e){
System.out.println(e.toString());
}
Voici quelques messages d'erreur courants :
(1) Le message d'erreur affiché lorsque le pilote n'existe pas est le suivant :
java.lang.ClassNotFoundException : com.mysql.jdbc.Drive
La seconde moitié est le nom du pilote que vous avez écrit dans le programme.
Solution : Vérifiez attentivement si le nom de la classe est écrit de manière incorrecte. Si le nom de la classe n'est pas mal écrit, cela signifie que le package compressé où se trouve le pilote n'a pas été introduit dans le projet.
(2) Le message d'erreur affiché lorsque l'URL est mal écrite est le suivant :
java.sql.SQLException : aucun pilote approprié
Solution : Vérifiez attentivement si le format de l'URL est correct. Les formats d'URL des différentes bases de données sont différents.
(3) Le message d'erreur affiché lorsque l'adresse IP de l'hôte est incorrecte ou que le réseau est indisponible est le suivant :
com.mysql.jdbc.CommunicationsException : échec du lien de communication en raison d'une exception sous-jacente :
** COMMENCER L'EXCEPTION IMBRIQUÉE **
java.net.ConnectException
MESSAGE : Expiration du délai de connexion : connectez-vous
TRACE DE PILE :
java.net.ConnectException : connexion expirée : connectez-vous
sur java.net.PlainSocketImpl.socketConnect (méthode native)
sur java.net.PlainSocketImpl.doConnect (source inconnue)
sur java.net.PlainSocketImpl.connectToAddress (source inconnue)
sur java.net.PlainSocketImpl.connect (source inconnue)
sur java.net.SocksSocketImpl.connect (source inconnue)
sur java.net.Socket.connect (source inconnue)
sur java.net.Socket.connect (source inconnue)
sur java.net.Socket.<init>(Source inconnue)
sur java.net.Socket.<init>(Source inconnue)
sur com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:132)
sur com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:273)
sur com.mysql.jdbc.Connection.createNewIO(Connection.java:1639)
sur com.mysql.jdbc.Connection.<init>(Connection.java:393)
sur com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:262)
sur java.sql.DriverManager.getConnection (source inconnue)
sur java.sql.DriverManager.getConnection (source inconnue)
à test.JDBCTest.oracleTest(JDBCTest.java:25)
à test.JDBCTest.main(JDBCTest.java:12)
** FIN DE L'EXCEPTION IMBRIQUÉE **
Solution : Vérifiez si l'adresse IP est correcte et s'il y a un problème avec le réseau.
(4) Le message d'erreur si le port est incorrect ou si le serveur de base de données n'est pas démarré est le suivant :
com.mysql.jdbc.CommunicationsException : échec du lien de communication en raison d'une exception sous-jacente :
** COMMENCER L'EXCEPTION IMBRIQUÉE **
java.net.ConnectException
MESSAGE : Connexion refusée : connectez-vous
TRACE DE PILE :
java.net.ConnectException : connexion refusée : connexion
sur java.net.PlainSocketImpl.socketConnect (méthode native)
sur java.net.PlainSocketImpl.doConnect (source inconnue)
sur java.net.PlainSocketImpl.connectToAddress (source inconnue)
sur java.net.PlainSocketImpl.connect (source inconnue)
sur java.net.SocksSocketImpl.connect (source inconnue)
sur java.net.Socket.connect (source inconnue)
sur java.net.Socket.connect (source inconnue)
sur java.net.Socket.<init>(Source inconnue)
sur java.net.Socket.<init>(Source inconnue)
sur com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:132)
sur com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:273)
sur com.mysql.jdbc.Connection.createNewIO(Connection.java:1639)
sur com.mysql.jdbc.Connection.<init>(Connection.java:393)
sur com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:262)
sur java.sql.DriverManager.getConnection (source inconnue)
sur java.sql.DriverManager.getConnection (source inconnue)
à test.JDBCTest.oracleTest(JDBCTest.java:25)
à test.JDBCTest.main(JDBCTest.java:12)
** FIN DE L'EXCEPTION IMBRIQUÉE **
Solution : Vérifiez si le port est correct et si le serveur de base de données est démarré.
(5) Le message d'erreur affiché lorsque le nom de la base de données est incorrect est le suivant :
java.sql.SQLException : base de données inconnue 'test2'
Solution : Vérifiez si la base de données existe.
(6) Le message d'erreur affiché lorsque le nom d'utilisateur ou le mot de passe est incorrect est le suivant :
java.sql.SQLException : Accès refusé pour l'utilisateur 'roo'@'localhost' (en utilisant le mot de passe : OUI)
Solution : Confirmez que le nom d'utilisateur et le mot de passe sont corrects.
(7) Le message d'erreur provoqué par l'erreur de nom de table est le suivant :
java.sql.SQLException : la table 'test.student1' n'existe pas
Solution : Vérifiez si la table existe et si le nom de la table est mal écrit.
(8) Le message d'erreur provoqué par l'erreur de nom de colonne est le suivant :
java.sql.SQLException : colonne inconnue 'sid' dans la 'liste de champs'
Solution : examinez de plus près les noms de colonnes dans la table de base de données.
(9) Lors du traitement de l'ensemble de résultats, le numéro de séquence de la colonne à obtenir est supérieur au nombre de colonnes, ou inférieur à 0
Le message d'erreur affiché est le suivant :
java.sql.SQLException : index de colonne hors plage, 4 > 3.
L'arrière-plan de cette erreur est qu'il n'y a que 3 colonnes dans la table de la base de données et que rs.getString(4) est utilisé lors de la récupération des informations. Cette erreur est facile à commettre, en particulier lors de l'utilisation du traitement en boucle.
(10) Lors de l'exécution de l'instruction insert, si le nombre de colonnes dans la table est différent de celui de l'instruction insert, le message d'erreur affiché est le suivant :
java.sql.SQLException : le nombre de colonnes ne correspond pas au nombre de valeurs à la ligne 1
Le contexte de cette erreur est le suivant : il y a 3 colonnes dans la table de la base de données et 4 valeurs ont été données lors de l'insertion. L'instruction SQL est la suivante :
insérer dans les valeurs des étudiants ('0011323', 'Li Xu',22,99).
(11) Lors de l'exécution de l'instruction insert, la clé primaire est répétée.
Le message d'erreur affiché est le suivant :
java.sql.SQLException : entrée en double '0011323' pour la clé 1
L'arrière-plan de cette erreur est le suivant : une instruction SQL a été exécutée deux fois de suite et une erreur s'est produite la deuxième fois.
(12) Lors de l'exécution de l'instruction insert, le message d'erreur si la valeur est trop longue est le suivant :
java.sql.SQLException : données trop longues pour la colonne « id » à la ligne 1
Solution, vérifiez la longueur de la colonne dans la base de données.