Как получить одного студента из БД SQL-сервера, используя Java? - PullRequest
0 голосов
/ 28 сентября 2018

Я пытался заставить этот код работать уже несколько часов и мне нужна помощь.У меня есть база данных, которая содержит таблицу под названием «Студенты».Я пытаюсь написать метод ниже, который выбирает одного студента на основе ввода пользователя (что произойдет позже в графическом интерфейсе).Сейчас я просто тестирую его в тестовом классе.

Я хочу получить все значения студента в system.out.print.Что я делаю неправильно?

public Student getOneSpecificStudent(int studentID) throws SQLException {

        Connection con = null;
        PreparedStatement stm = null;

        try {
            con = DatabaseConnection.getConnection();
            stm = con.prepareStatement("SELECT * FROM Student WHERE studentID = ?");
            stm.setInt(1, studentID);

            ResultSet rs = stm.executeQuery();

            Student student = new Student();
            while (rs.next()) {
                return (new Student(studentID = rs.getInt("studentID"), rs.getString("studentSSN"), rs.getString("studentName"), rs.getString("studentAddress"), rs.getString("studentPhoneNumber")));

            }
            return student;
        } finally {
            DbUtils.close(con);
            DbUtils.close(stm);
        }
    }

Моя текущая проблема заключается в том, что этот метод тестирования:

    try {
        dal.getOneSpecificStudent(2);
        System.out.println("Student is: " + student.getStudentSSN() + 
student.getStudentID() );
    } catch (SQLException e) {
        System.out.println("SQL exception" + e );
    }

Возвращает ноль.

Ответы [ 3 ]

0 голосов
/ 28 сентября 2018

Вы должны сделать это следующим образом:

Student student = dal.getOneSpecificStudent(2);
System.out.println("Student is: " + student.getStudentSSN() + 
student.getStudentID() );

Таким образом, он напечатает значения.

0 голосов
/ 28 сентября 2018

Итак, вы получаете null значения или вы получаете NullPointerException.Если вы получаете нулевые значения, это потому, что вы инициализируете свой объект Student как пустой в Student student = new Student();, поскольку вы ничего не передали в конструктор.Объект ученика пуст, значит, получатели вернут нулевые значения.

0 голосов
/ 28 сентября 2018

Здесь есть довольно «странный» код:

    dal.getOneSpecificStudent(2);
    System.out.println("Student is: " + student.getStudentSSN() + 
                       student.getStudentID());

Вы пытаетесь вызывать методы для переменной student ... но это никак не связано с предыдущим оператором.

  1. Вызов getOneSpecificStudent(2) возвращает значение, но вы его отбрасываете.
  2. Переменная student в теле метода getOneSpecificStudent является local переменная.Это не та переменная, которую вы печатаете.

Так что, возможно, ваше утверждение о том, что что-то "Возвращает ноль" должно быть пересмотрено .....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...