com.mysql.jdbc.PreparedStatement
- это внутренний класс для драйвера MySQL 5.x JDB C. Ваш код не должен импортировать его. Вместо этого следует использовать стандартный класс java.sql.PreparedStatement
.
Имена пакетов в драйверах MySQL 8.x JDB C были изменены, и именно это привело к тому, что ваш код начал выдавать ошибки компиляции.
Решение:
Исправьте свой код, чтобы он не импортировал какие-либо MySQL классы реализации 1 . Вместо этого используйте классы java.sql.*
и javax.sql.*
.
Измените зависимости проекта, чтобы JAR-файл драйвера MySQL не был зависимостью во время компиляции. Это приведет к тому, что любые случайные зависимости исходного кода от драйверов JDB C будут отмечены как ошибки компиляции. Это также помешает вашей среде IDE делать неправильные предложения для операторов import
. (Я предполагаю, что именно так фальшивый импорт попал в вашу базу кода.)
Если ваш код (все еще) использует Class.forName
для загрузки драйвера JDB C, измените вместо этого использовать java.sql.DriverManager
; см. javado c. Таким образом, вы не будете поражены другим изменением имени класса MySQL драйвера.
1 - Ваш код Java не должен должен зависеть от MySQL -specifi c API. Насколько мне известно, классы реализации MySQL отражают стандартные API-интерфейсы JDB C, поэтому вы ничего не получите, используя их напрямую. Это не относится ко всем поставщикам.