com.mysql.jdbc.PreparedStatement
ist eine interne Klasse des MySQL 5.x JDBC-Treibers. Ihr Code sollte es nicht importieren. Es sollte das standardmäßige java.sql.PreparedStatement
verwenden Klasse statt.
Die Paketnamen haben sich in den MySQL 8.x JDBC-Treibern geändert, und das hat dazu geführt, dass Ihr Code angefangen hat, Kompilierungsfehler zu geben.
Lösung:
-
Korrigieren Sie Ihren Code so, dass er keine MySQL-Implementierungsklassen importiert. Verwenden Sie
java.sql.*
undjavax.sql.*
Klasse statt. -
Ändern Sie Ihre Projektabhängigkeiten so, dass die JAR-Datei des MySQL-Treibers keine Abhängigkeit zur Kompilierungszeit darstellt. Dies führt zu einem Unfall Quellcode-Abhängigkeiten von JDBC-Treibern werden als Kompilierungsfehler gekennzeichnet. Es verhindert auch, dass Ihre IDE falsche Vorschläge für
import
macht Aussagen. (Meine Vermutung ist, dass der falsche Import auf diese Weise in Ihre Codebasis gelangt ist.) -
Wenn Ihr Code (noch)
Class.forName
verwendet Um den JDBC-Treiber zu laden, ändern Sie ihn injava.sql.DriverManager
stattdessen; siehe javadoc . Auf diese Weise werden Sie nicht durch eine weitere Änderung des Klassennamens des MySQL-Treibers verbrannt.