com.mysql.jdbc.PreparedStatement
is een interne klasse voor het MySQL 5.x JDBC-stuurprogramma. Uw code zou deze niet moeten importeren. Het zou de standaard java.sql.PreparedStatement
. moeten gebruiken klas in plaats daarvan.
De pakketnamen zijn gewijzigd in de MySQL 8.x JDBC-stuurprogramma's en dat is de reden dat uw code compilatiefouten begon te geven.
Oplossing:
-
Corrigeer uw code zodat deze geen MySQL-implementatieklassen importeert. Gebruik de
java.sql.*
enjavax.sql.*
klas in plaats daarvan. -
Wijzig uw projectafhankelijkheden zodat het MySQL-stuurprogramma JAR geen afhankelijkheid is tijdens het compileren. Als u dat doet, veroorzaakt dit per ongeluk afhankelijkheden van broncode van JDBC-stuurprogramma's worden gemarkeerd als compilatiefouten. Het zal ook voorkomen dat uw IDE onjuiste suggesties doet voor
import
verklaringen. (Mijn gok is dat de nep-import zo in je codebase is gekomen.) -
Als uw code (nog) gebruikmaakt van
Class.forName
om het JDBC-stuurprogramma te laden, wijzigt u het injava.sql.DriverManager
in plaats van; zie javadoc . Op die manier wordt u niet verbrand door een nieuwe wijziging in de naam van de MySQL-stuurprogrammaklasse.