Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Symbol PreparedStatement kann nach JAR-Upgrade nicht gefunden werden

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:

  1. Korrigieren Sie Ihren Code so, dass er keine MySQL-Implementierungsklassen importiert. Verwenden Sie java.sql.* und javax.sql.* Klasse statt.

  2. Ä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.)

  3. Wenn Ihr Code (noch) Class.forName verwendet Um den JDBC-Treiber zu laden, ändern Sie ihn in java.sql.DriverManager stattdessen; siehe javadoc . Auf diese Weise werden Sie nicht durch eine weitere Änderung des Klassennamens des MySQL-Treibers verbrannt.