Я пытаюсь подключиться к Cloud SQL. Запросы выполняются успешно, но я не получаю результатов. Я создал базу данных и таблицы с помощью executeQuery(), и все прошло успешно, но executeQuery() вернул false.
Вот мой код -
Connection connection;
String query = "SELECT NOW()";
System.out.println("Connecting...");
try {
//Class.forName("com.mysql.jdbc.Driver");
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://<IP address>/test", "root", "root");
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(query);
String result = "No Result Found";
if (resultSet.isFirst())
result = resultSet.getString(0);
System.out.println("Result - " + result);
} catch (Exception e) {
System.out.println(e.getMessage());
}
System.out.println("Process Terminated.");




Похоже, вы пытались получить данные с ResultSet из индекса 0
то есть result = resultSet.getString(0);, что неверно.
Индекс ResultSet's начинается с «1» вместо нуля.
Try out with:
result = resultSet.getString(1);
Для справки: https://www.javamex.com/tutorials/database/jdbc_result_set.shtml#.Wv1PpnWFPPY
Это потому, что вы используете rs.isFirst(). Вместо этого используйте rs.next(), который решает проблему.
Спасибо @subrata, это сработало. Но я до сих пор не понимаю, почему мой execute () возвращает false.
@Shubh это потому, что rs.isFirst() возвращает true, если курсор указывает на первую строку, в данном случае это не так, поэтому он вернул false.
Я говорил о функции execute(), которая возвращает логическое значение, а не ResultSet. (Функция execute() используется для операций создания и вставки, а функция executeQuery() используется для запроса выбора). Вы что-нибудь об этом знаете?
Я не думаю, что это так, также я получаю false для выполнения функции
execute(), но запрос выполняется. (Функцияexecute()используется для создания и вставки операций)