Cursor bei JDBC Treiber

Hallo hat der JDBC Treiber nur den next Cursor oder auch first, prev und last Cursor. Denn ich habe in java ein kleine Programm gechrieben und da funktioniert nur next

import java.sql.*;
import java.awt.*;
import java.awt.event.*;

public class VorZurueck extends Frame {
	Panel knoepfe = new Panel(new GridLayout(1,4));
	Button erst = new Button("Erste Zeile"),
	       prev = new Button("Voherige Zeile"),
	       next = new Button("Nächste Zeile"),
	       last = new Button("Letzte Zeile"); 
	TextField aus = new TextField();
	Connection c; Statement s; ResultSet r;
	
	public VorZurueck() {
		setLayout(new BorderLayout());
		add(knoepfe, "North");
		knoepfe.add(erst); knoepfe.add(prev); knoepfe.add(next); knoepfe.add(last);
		add(aus,"Center");
		setSize(400, 250);
		setVisible(true);
		erst.addActionListener(new ActionListener() {
		public void actionPerformed(ActionEvent e) {
			erster();
		}});
		
		prev.addActionListener(new ActionListener() {
		public void actionPerformed(ActionEvent e) {
			vorheriger();
		}});
		
		next.addActionListener(new ActionListener() {
		public void actionPerformed(ActionEvent e) {
			naechster();
		}});
		
		last.addActionListener(new ActionListener() {
		public void actionPerformed(ActionEvent e) {
			letzter();
		}});
		
		addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(0);	
			}
		});
		
		try {
			Class.forName("org.postgresql.Driver");
			// c = DriverManager.getConnection("jdbc :p ostgresql://localhost","postgres", "werner80");
			 c = DriverManager.getConnection( "jdbc :p ostgresql://localhost/jahb", "postgres", "werner80" );
			 s = c.createStatement();
			 r=s.executeQuery("SELECT * FROM jahb.\"alle berufe\"");
			 erster();
		}
		catch (Exception ex) { ex.printStackTrace();}
	}
		void erster() {
			try {
				r.first(); zeige();
			}
			catch (Exception ex) {}
		}
		
		void vorheriger() {
			try {
				r.previous(); zeige();
			}
			catch (Exception ex) {}
		}
		
		void naechster() {
			try {
				r.next(); zeige();
			}
			catch (Exception ex) {}
		}
		
		void letzter() {
			try {
				r.last(); zeige();
			}
			catch (Exception ex) {}
		}
		
		void zeige() throws Exception {
			aus.setText(r.getString("Berufsbez"));
		}
		
		public static void main(String[] argv) {
	        new VorZurueck();
	
		}
	
}

gruß niesel

Um einen Cursor zu erhalten bei dem prev() und next() funktioniert, muss man das beim createStatement() entsprechend mit angeben (siehe Connection.createStatement(int, int) )
Der default ist TYPE_FORWARD_ONLY.

Mit

stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);

sollte das mit previous(), last() usw dann funktionieren.

Denk aber daran, dass der Postgres Treiber dann das gesamte ResultSet im Speicher hält.
Bei großen Tabellen vermutlich keine gute Idee

Danke, auch für den Hinweis. Ist nur zum Test und zu wissen was möglich ist.

gruß