Mysql
 sql >> база данни >  >> RDS >> Mysql

не може да намери символ PreparedStatement след надграждане на JAR

com.mysql.jdbc.PreparedStatement е вътрешен клас към MySQL 5.x JDBC драйвера. Вашият код не трябва да го импортира. Трябва да използва стандартния java.sql.PreparedStatement клас вместо това.

Имената на пакетите са променени в JDBC драйверите на MySQL 8.x и това е причината вашият код да започне да дава грешки при компилиране.

Решение:

  1. Коригирайте кода си, така че да не импортира никакви класове за изпълнение на MySQL. Използвайте java.sql.* и javax.sql.* клас вместо това.

  2. Променете зависимостите на вашия проект, така че JAR драйверът на MySQL да не е зависимост по време на компилиране. Правейки това ще доведе до всякакви случайни зависимостите на изходния код от JDBC драйверите да бъдат маркирани като грешки при компилиране. Освен това ще попречи на вашата IDE да прави неправилни предложения за import изявления. (Моето предположение е, че така фалшивият импорт е попаднал във вашата кодова база.)

  3. Ако вашият код (все още) използва Class.forName за да заредите JDBC драйвера, променете го да използва java.sql.DriverManager вместо; вижте javadoc . По този начин няма да бъдете изгорени от друга промяна в името на класа на MySQL драйвер.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да направите диаграма на бебето за растеж с данни в mysql +PDO

  2. MySQL - Изтриване на стойност в реда, вместо изтриване на реда

  3. BLOB/TEXT колона „стойност“, използвана в спецификацията на ключ без дължина на ключа

  4. Защо заявката не е неуспешна с несъществуваща колона в подзаявката?

  5. Изберете N предишни и M следващи елементи около идентификатора на текущия елемент