Переменная пуста после присвоения ей значения из базы данных

Я выполняю запрос, чтобы вернуть Course_Idчто связано с Course_Name который выбирается с помощью JComboBox (slcCourse) в форме. Запрос кажется правильным, по крайней мере, я так думаю, и JComboBox возвращает правильный Course_Name из таблицы. Когда я пытаюсь присвоить возвращаемое значение, которое должно быть Course_Id из таблицы базы данных, в глобальную или локальную переменную и вывести ее с помощью JOptionPane этой переменной, она пуста. Я не уверен, почему она не присваивается переменной, и любая помощь будет высоко ценится.

Соединение с базой данных работает нормально, потому что я уже вставил записи в тот же класс, используя детали соединения. Так что проблема не в этом.

Вот код:

public void courseIdentifier()
    {
        Connection conDBase = null;
        Statement stmt = null;
        ResultSet r = null;

        try
        {
            conDBase = getConnection();
            stmt = conDBase.createStatement();
            String courseSql = "SELECT Course_Id FROM a_courses WHERE Course_Name = '" 
                                    + slcCourse.getSelectedItem() + "';";
            r = stmt.executeQuery(courseSql);

            String s = r.getString("Course_Id");
            JOptionPane.showMessageDialog(null, s);
            conDBase.close();
        }
        catch(SQLException ex)
        {
            ex.printStackTrace();
        }
    }

Если вы хотите увидеть детали подключения, вот оно:

public class ConnectionDetails
{
    private static final String username = "root";
    private static final String password = "root";
    private static final String driver = "com.mysql.jdbc.Driver";
    private static final String url = "jdbc:mysql://localhost:3306/assignment?autoReconnect=true";

    public static String getUsername()
    {
        return username;
    }

    public static String getPassword()
    {
        return password;
    }

    public static String getDriver()
    {
        return driver;
    }

    public static String getUrl()
    {
        return url;
    }
}

1 ответ

Решение

Вам следует позвонить next() на ResultSet до получения значений из него:

if (r.next()) {
    String s = r.getString("Course_Id");
}

Кроме того, вы можете сделать что-то с String вы читаете из ResultSet, Возможно, верните его вызывающему методу.

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