sql >> Databasteknik >  >> RDS >> Mysql

kan inte hitta symbolen PreparedStatement efter JAR-uppgradering

com.mysql.jdbc.PreparedStatement är en intern klass till MySQL 5.x JDBC-drivrutinen. Din kod bör inte importera den. Den bör använda standarden java.sql.PreparedStatement klass istället.

Paketnamnen har ändrats i MySQL 8.x JDBC-drivrutinerna, och det var det som gjorde att din kod började ge kompileringsfel.

Lösning:

  1. Fixa din kod så att den inte importerar några MySQL-implementeringsklasser. Använd java.sql.* och javax.sql.* klass istället.

  2. Ändra dina projektberoenden så att MySQL-drivrutinen JAR inte är ett kompileringstidsberoende. Att göra det kommer att orsaka oavsiktliga Källkodsberoenden på JDBC-drivrutiner ska flaggas som kompileringsfel. Det kommer också att stoppa din IDE från att ge felaktiga förslag för import uttalanden. (Min gissning är att det var så den falska importen kom in i din kodbas.)

  3. Om din kod (fortfarande) använder Class.forName för att ladda JDBC-drivrutinen, ändra den till att använda java.sql.DriverManager istället; se javadoc . På så sätt kommer du inte att brännas av ytterligare en ändring i MySQL-drivrutinsklassnamnet.



  1. varchar(255) vs tinytext/tinyblob och varchar(65535) vs blob/text

  2. C# NHibernate &Oracle Managed Client

  3. Biblioteket har inte laddats:@rpath/libmysqlclient.21.dylib Orsak:bilden hittades inte Django migreringsfel med mysqlclient DB-drivrutinen och MySQL 8 med macOS

  4. Vad är det mest effektiva sättet att kontrollera om en post finns i Oracle?