#java #mysql #jdbc #visual-studio-code #connection
#java #mysql #jdbc #visual-studio-code #подключение
Вопрос:
У меня возникли серьезные проблемы с созданием Java-проекта с помощью VS Code с добавлением «mysql-connector-java-8.0.21.jar «. Я выполнил следующие шаги:
- Создание нового Java-проекта с помощью VS-кода из командной строки
- Добавляем соединитель mysql, выполнив команду «Добавить библиотеки, на которые ссылаются».
Я попытался использовать оба jdk 11 и 15 (не 8, поскольку VS Code его больше не поддерживает)
Запуск моего кода приводит к ошибке: java.lang.ClassNotFoundException: com.mysql.cj.LocalizedErrorMessages
Вот выдержка из моего кода:
import java.lang.reflect.InvocationTargetException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class SimpleJDBCApplication {
static final String DB_URL = "jdbc:mysql://localhost:3306/company";
static final String DB_DRV = "com.mysql.jdbc.Driver";
static final String DB_USER = "root";
static final String DB_PASSWD = "";
public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException,
IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException {
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
try{
/*To connect with a database using JDBC you need to select get the
driver for the respective database and register the driver.
The forName() method of the class named Class accepts a class name
as a String parameter and loads it into the memory, Soon the is
loaded into the memory it gets registered automatically */
//Take new instance
System.setProperty("jdbc.drivers", "com.mysql.jdbc.Driver");
Class.forName("com.mysql.jdbc.Driver").getDeclaredConstructor().newInstance();
connection=DriverManager.getConnection(DB_URL,DB_USER,DB_PASSWD);
statement=connection.createStatement();
resultSet=statement.executeQuery ("SELECT * FROM dept");
while(resultSet.next()){
System.out.printf("%dt%st%sn",
resultSet.getInt(1),
resultSet.getString(2),
resultSet.getString(3));
Ошибка возникает в строке connection=DriverManager.getConnection(DB_URL,DB_USER,DB_PASSWD);
Спасибо за любую помощь
Ответ №1:
1. Это применимо к версии MySQL ниже 8.0:
статическая конечная строка DB_URL = «jdbc:mysql:// localhost:3306/company»;
Измените его на
static final String DB_URL ="jdbc:mysql://localhost:3306/company?useSSL=falseamp;allowPublicKeyRetrieval=trueamp;serverTimezone=UTC"
2. Передача com.mysql.jdbc.Driver
в com.mysql.cj.jdbc.Driver
;
3. Class.forName("com.mysql.cj.jdbc.Driver")
достаточно, также с этим кодом, System.setProperty("jdbc.drivers", "com.mysql.jdbc.Driver")
не требуется, вы можете прокомментировать или удалить его;
Это работает для меня, и вы можете попробовать.
Ответ №2:
Согласно документации, имя класса должно быть com.mysql.cj.jdbc.Driver
вместо com.mysql.jdbc.Driver
. Также вызов getDeclaredConstructor()
кажется ненужным. Возможно, это источник ваших проблем.
Комментарии:
1. Спасибо за вашу помощь, но, к сожалению, я попробовал оба ваших решения (заменив com.mysql.cj.jdbc.Driver и удалив getDeclaredConstructor()), но ни одно из них не работает: (Я все еще получаю точно такую же ошибку
2. @SoaAlex Я сталкиваюсь с той же ошибкой даже после добавления ref-lib, можете ли вы сказать, была ли решена ваша проблема? Если да, то как?
Ответ №3:
Нажмите на Java-проекты на вкладке проводника слева в VSCode. Затем щелкните правой кнопкой мыши на имени вашего проекта и выберите Настроить путь к классу. это откроет конфигурацию пути к классам на новой вкладке. Прокрутите страницу вниз, а затем нажмите добавить в ссылочных библиотеках. Откроется всплывающее окно проводника. Выберите jar-файл java-mysql connector, и тогда он должен работать.
Ответ №4:
Шаг 1) Откройте java-проекты в левом нижнем углу VS Code
Шаг 2) Нажмите на кнопку в обновленных библиотеках
Шаг 3) Найдите драйвер, то есть файл соединителя в этом случае.
Шаг 4) Проблема решена и соединение создано