#java #mysql
#java #mysql
Вопрос:
У меня есть база данных mysql, работающая на localhost. Имя базы данных ‘iot’ и имя таблицы ‘iot’. Я пытаюсь подключиться, но при проверке, является ли соединение нулевым, оно. Где я ошибаюсь?
У меня есть эти переменные класса:
private Connection connection;
private String server = "localhost:8090";
private String db = "iot";
private String username = "root";
private String password = "";
private String url = "jdbc:mysql://" server "/" db;
В конструкторе:
Class.forName("com.mysql.jdbc.Driver").newInstance();
this.connection = DriverManager.getConnection(url, username, password);
Тест:
if(connection == null){
System.out.println("null"); //prints unfortunately
}
Комментарии:
1. Я предполагаю, что раздел «Test» выполняется не в конструкторе, а в каком-то методе. Вы установили промежуточное значение
this.connection
равным null (конструктор и метод)? Я думаю, да…2. Да, тест выполняется по методу. Я не устанавливал для нее значение null, не так ли?
3. Можете ли вы показать значение
connection
сразу после его получения — то есть в конструкторе? Если там не указано значение null, то вы устанавливаете для него значение null где-то между конструктором и методом.4.
localhost:8090
вы уверены насчет порта? Порт по умолчанию равен 3306. Кроме того, используйте последнюю версию драйвера и класс драйвераcom.mysql.cj.jdbc.Driver
.5. Это странно. При проверке в конструкторе значение не равно null. У меня есть JFrame, поэтому в конструкторе многое происходит. Внизу я подключаюсь к базе данных, а затем пытаюсь запросить базу данных с помощью кнопки, вот где это значение равно null. Таким образом, в конструкторе это значение не равно null, но в классе actionlistener оно есть. @Atul да, я уверен, что это на 8090.