Datenbank: MySQL
Beim Schreiben einer Anwendung können zur Vereinfachung des Debuggens des Programms die Ausnahmeinformationen im Ausnahmebehandlungscode angezeigt werden, sodass der Code gemäß den Fehleraufforderungen debuggt werden kann. Code zur Ausnahmebehandlung kann normalerweise wie folgt geschrieben werden:
versuchen{
…
}catch(Ausnahme e){
System.out.println(e.toString());
}
Hier sind einige häufige Fehlermeldungen:
(1) Die Fehlermeldung, die angezeigt wird, wenn der Treiber nicht vorhanden ist, lautet wie folgt:
java.lang.ClassNotFoundException: com.mysql.jdbc.Drive
Die zweite Hälfte ist der Name des Treibers, den Sie im Programm geschrieben haben.
Lösung: Überprüfen Sie sorgfältig, ob der Klassenname falsch geschrieben ist. Wenn der Klassenname nicht falsch geschrieben ist, bedeutet dies, dass das komprimierte Paket, in dem sich der Treiber befindet, nicht in das Projekt eingeführt wurde.
(2) Die Fehlermeldung, die angezeigt wird, wenn die URL falsch geschrieben ist, lautet wie folgt:
java.sql.SQLException: Kein passender Treiber
Lösung: Überprüfen Sie sorgfältig, ob das Format der URL korrekt ist. Die URL-Formate verschiedener Datenbanken sind unterschiedlich.
(3) Die Fehlermeldung, die angezeigt wird, wenn die Host-IP-Adresse falsch ist oder das Netzwerk nicht verfügbar ist, lautet wie folgt:
com.mysql.jdbc.CommunicationsException: Kommunikationsverbindungsfehler aufgrund einer zugrunde liegenden Ausnahme:
** BEGIN NESTED Exception **
java.net.ConnectException
MELDUNG: Zeitüberschreitung bei der Verbindung: Verbindung herstellen
STACKTRACE:
java.net.ConnectException: Zeitüberschreitung bei der Verbindung: Verbinden
bei java.net.PlainSocketImpl.socketConnect(Native Methode)
bei java.net.PlainSocketImpl.doConnect (Unbekannte Quelle)
bei java.net.PlainSocketImpl.connectToAddress (unbekannte Quelle)
bei java.net.PlainSocketImpl.connect (unbekannte Quelle)
bei java.net.SocksSocketImpl.connect (unbekannte Quelle)
bei java.net.Socket.connect (unbekannte Quelle)
bei java.net.Socket.connect (unbekannte Quelle)
bei java.net.Socket.<init>(Unbekannte Quelle)
bei java.net.Socket.<init>(Unbekannte Quelle)
unter com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:132)
unter com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:273)
unter com.mysql.jdbc.Connection.createNewIO(Connection.java:1639)
unter com.mysql.jdbc.Connection.<init>(Connection.java:393)
unter com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:262)
bei java.sql.DriverManager.getConnection (unbekannte Quelle)
bei java.sql.DriverManager.getConnection (unbekannte Quelle)
bei test.JDBCTest.oracleTest(JDBCTest.java:25)
at test.JDBCTest.main(JDBCTest.java:12)
** ENDE VERSCHACHTELTER AUSNAHME **
Lösung: Überprüfen Sie, ob die IP-Adresse korrekt ist und ob ein Problem mit dem Netzwerk vorliegt.
(4) Die Fehlermeldung, wenn der Port falsch ist oder der Datenbankserver nicht gestartet ist, lautet wie folgt:
com.mysql.jdbc.CommunicationsException: Kommunikationsverbindungsfehler aufgrund einer zugrunde liegenden Ausnahme:
** BEGIN NESTED Exception **
java.net.ConnectException
NACHRICHT: Verbindung abgelehnt: Verbindung herstellen
STACKTRACE:
java.net.ConnectException: Verbindung abgelehnt: Verbinden
bei java.net.PlainSocketImpl.socketConnect(Native Methode)
bei java.net.PlainSocketImpl.doConnect (Unbekannte Quelle)
bei java.net.PlainSocketImpl.connectToAddress (unbekannte Quelle)
bei java.net.PlainSocketImpl.connect (unbekannte Quelle)
bei java.net.SocksSocketImpl.connect (unbekannte Quelle)
bei java.net.Socket.connect (unbekannte Quelle)
bei java.net.Socket.connect (unbekannte Quelle)
bei java.net.Socket.<init>(Unbekannte Quelle)
bei java.net.Socket.<init>(Unbekannte Quelle)
unter com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:132)
unter com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:273)
unter com.mysql.jdbc.Connection.createNewIO(Connection.java:1639)
unter com.mysql.jdbc.Connection.<init>(Connection.java:393)
unter com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:262)
bei java.sql.DriverManager.getConnection (unbekannte Quelle)
bei java.sql.DriverManager.getConnection (unbekannte Quelle)
bei test.JDBCTest.oracleTest(JDBCTest.java:25)
at test.JDBCTest.main(JDBCTest.java:12)
** ENDE VERSCHACHTELTER AUSNAHME **
Lösung: Überprüfen Sie, ob der Port korrekt ist und ob der Datenbankserver gestartet ist.
(5) Die Fehlermeldung, die angezeigt wird, wenn der Datenbankname falsch ist, lautet wie folgt:
java.sql.SQLException: Unbekannte Datenbank „test2“
Lösung: Überprüfen Sie, ob die Datenbank vorhanden ist.
(6) Die Fehlermeldung, die angezeigt wird, wenn der Benutzername oder das Passwort falsch ist, lautet wie folgt:
java.sql.SQLException: Zugriff für Benutzer „roo“@„localhost“ verweigert (mit Passwort: JA)
Lösung: Bestätigen Sie, dass Benutzername und Passwort korrekt sind.
(7) Die durch den Tabellennamenfehler ausgelöste Fehlermeldung lautet wie folgt:
java.sql.SQLException: Tabelle „test.student1“ existiert nicht
Lösung: Überprüfen Sie, ob die Tabelle existiert und ob der Tabellenname falsch geschrieben ist.
(8) Die durch den Spaltennamenfehler ausgelöste Fehlermeldung lautet wie folgt:
java.sql.SQLException: Unbekannte Spalte „sid“ in „field list“
Lösung: Schauen Sie sich die Spaltennamen in der Datenbanktabelle genauer an.
(9) Bei der Verarbeitung des Ergebnissatzes ist die Sequenznummer der abzurufenden Spalte größer als die Anzahl der Spalten oder kleiner als 0
Die angezeigte Fehlermeldung lautet wie folgt:
java.sql.SQLException: Spaltenindex außerhalb des gültigen Bereichs, 4 > 3.
Der Hintergrund dieses Fehlers besteht darin, dass die Datenbanktabelle nur drei Spalten enthält und beim Abrufen von Informationen rs.getString(4) verwendet wird. Dieser Fehler kann leicht auftreten, insbesondere bei Verwendung der Schleifenverarbeitung.
(10) Wenn beim Ausführen der Einfügeanweisung die Anzahl der Spalten in der Tabelle von der in der Einfügeanweisung abweicht, wird folgende Fehlermeldung angezeigt:
java.sql.SQLException: Die Spaltenanzahl stimmt nicht mit der Wertanzahl in Zeile 1 überein
Der Hintergrund dieses Fehlers ist: Die Datenbanktabelle enthält 3 Spalten und beim Einfügen wurden 4 Werte angegeben. Die SQL-Anweisung lautet wie folgt:
In Schülerwerte einfügen ('0011323','Li Xu',22,99).
(11) Beim Ausführen der Einfügeanweisung wird der Primärschlüssel wiederholt.
Die angezeigte Fehlermeldung lautet wie folgt:
java.sql.SQLException: Doppelter Eintrag „0011323“ für Schlüssel 1
Der Hintergrund dieses Fehlers ist: Eine SQL-Anweisung wurde zweimal hintereinander ausgeführt und beim zweiten Mal ist ein Fehler aufgetreten.
(12) Bei der Ausführung der INSERT-Anweisung lautet die Fehlermeldung, wenn der Wert zu lang ist:
java.sql.SQLException: Daten zu lang für Spalte „id“ in Zeile 1
Lösung: Überprüfen Sie die Länge der Spalte in der Datenbank.