Как я пишу эту функцию, чтобы каждый раз возвращать мне новую запись таблицы на экране

#java

#java

Вопрос:

 private void next_contactActionPerformed(java.awt.event.ActionEvent evt) {
    String name, lName, add, em, cell = null;
    try {
        String Url = "Jdbc:Odbc:DirDSN";
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        Connection con = DriverManager.getConnection(Url,"sa","mysql");
        //Statement st = con.createStatement();
        String sql = "SELECT * FROM PersonInformation";
        PreparedStatement pstmt = con.prepareStatement(sql,
        ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
        ResultSet rs = pstmt.executeQuery();
        if(rs.next()) {
            name = rs.getString("First_Name");
            lName = rs.getString("Last_Name");
            add = rs.getString ("Address");
            em = rs.getString("Email_Id");
            cell = rs.getString("cell#");
            jTextField2.setText(name);
            jTextField3.setText(lName);
            jTextField4.setText(add);
            jTextField5.setText(em);
            jTextField10.setText(cell);
        }
        con.close();
    } catch(Exception sqlEx) {
        System.out.println(sqlEx);
    } finally {
    }
}
  

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

Комментарии:

1. Исправьте табуляцию и интервал, прежде чем публиковать здесь, пожалуйста.

2. Пожалуйста, начинайте предложения с заглавных букв. Функции «возвращают» результаты, они не «возвращают вам» результаты. Заставьте нас захотеть прочитать ваш вопрос!

Ответ №1:

Измените ResultSet rs на переменную-член или сохраните позицию, в которой вы находитесь, и используйте ее в качестве параметра для метода (см. LIMIT).

На данный момент вы создаете новый результирующий набор с каждым щелчком мыши, всегда начиная с индекса 0.

Комментарии:

1. @ s3b я новичок в Java, пожалуйста, предоставьте мне какой-нибудь код, связанный с этим. которая говорит мне, как я сохраняю позицию, в которой я нахожусь.

2. Просто создайте частный элемент результирующего набора, который сохраняет позицию для вас.

3. Вы знаете, что такое переменная-член , верно? Измените вашу локальную переменную «rs» на переменную-член. Создайте дополнительный метод для вашего подключения. Единственным кодом, который должен быть в вашем методе actionPerformed, должен быть блок if (rs.next()). Я не буду кодировать это для вас, вы должны сделать это сами.

4. @s3 я сделал это, определив дополнительный метод, и я вызвал этот метод в конструкторе, теперь он работает нормально