Отсутствие результата от Cloud SQL в Android после успешного выполнения запроса

Я пытаюсь подключиться к 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.");
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
39
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Похоже, вы пытались получить данные с 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

Я не думаю, что это так, также я получаю false для выполнения функции execute(), но запрос выполняется. (Функция execute() используется для создания и вставки операций)

Shubh 17.05.2018 13:01

Это потому, что вы используете rs.isFirst(). Вместо этого используйте rs.next(), который решает проблему.

Subrata 17.05.2018 13:44

Спасибо @subrata, это сработало. Но я до сих пор не понимаю, почему мой execute () возвращает false.

Shubh 17.05.2018 14:06

@Shubh это потому, что rs.isFirst() возвращает true, если курсор указывает на первую строку, в данном случае это не так, поэтому он вернул false.

Subrata 17.05.2018 14:33

Я говорил о функции execute(), которая возвращает логическое значение, а не ResultSet. (Функция execute() используется для операций создания и вставки, а функция executeQuery() используется для запроса выбора). Вы что-нибудь об этом знаете?

Shubh 17.05.2018 16:23

Другие вопросы по теме