sql >> Database teknologi >  >> RDS >> Mysql

kan ikke finde symbol PreparedStatement efter JAR-opgradering

com.mysql.jdbc.PreparedStatement er en intern klasse til MySQL 5.x JDBC-driveren. Din kode bør ikke importere den. Det bør bruge standarden java.sql.PreparedStatement klasse i stedet for.

Pakkenavnene er ændret i MySQL 8.x JDBC-driverne, og det er det, der fik din kode til at begynde at give kompileringsfejl.

Løsning:

  1. Ret din kode, så den ikke importerer nogen MySQL-implementeringsklasser. Brug java.sql.* og javax.sql.* klasse i stedet for.

  2. Skift dine projektafhængigheder, så MySQL-driveren JAR ikke er en kompilerings-tidsafhængighed. Hvis du gør det, vil det forårsage uheld kildekodeafhængigheder på JDBC-drivere skal markeres som kompileringsfejl. Det vil også forhindre din IDE i at komme med forkerte forslag til import udsagn. (Mit gæt er, at det var sådan den falske import kom ind i din kodebase.)

  3. Hvis din kode (stadig) bruger Class.forName for at indlæse JDBC-driveren skal du ændre den til at bruge java.sql.DriverManager i stedet; se javadoc . På den måde bliver du ikke brændt af endnu en ændring i MySQL-driverklassens navn.



  1. Matchende to kolonner

  2. mysql venstre join sum to tabeller med rollup

  3. Installation af MySQL Python på Mac OS X

  4. Problem med SQL Server-agentjobkonto