Dúvida sobre navegação em registros com JDBC

Tenho um programa que faz acesso a uma base acess via jdbc, em tela tenho quatro botões, para efetuar a navegação nos registros:
Tipo :
<< < > >>
First Prev Next Last
Como eu faço para criar, os comandos SQL e passar via string para o ResultSet???
Alguém poderia me passar um exemplo da sintase destes comandos.
Ou posso utilizar os comando first(),previus(),next() e last().
E por exemplo se eu utitilizar estes comandos e for para o último registro e ao clicar no botão prev o resultSet vai conseguir se posicionar no registro anterior???
Eu fiz o seguinte:
Fiz o seguinte

[code]String url = "jdbc:odbc:dbsample";
Connection con;
Statement stmt;
String msg;

try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

}catch (ClassNotFoundException e) {

System.err.print("ClassNotFoundException: ");
System.err.print(e.getMessage());

}

try {
con = DriverManager.getConnection(url, "user", "password"); stmt = con.createStatement();

}catch(SQLException ex){

msg=ex.getMessage();
JOptionPane.showMessageDialog(null,msg,"Erro",JOptionPane.ERROR_MESSAGE);

}
ResultSet uprs = stmt.executeQuery("SELECT * FROM Departamento");
/*** Aqui carrega os campos de tela com o valor do primeiro registro ***/
while (uprs.first()){
this.JTextField1.setText(uprs.getString("COD_DEPTO"));
this.JTextField2.setText(uprs.getString("DESC_DEPTO"));
} [/code]

[color=“red”]E aparece o seguinte erro de SQL:
java.sql.SQLException: Result set type is TYPE_FORWARD_ONLY
at sun.jdbc.odbc.JdbcOdbcResultSet.first(Unknown Source)[/color]
Mudei para
while (uprs.next()){
this.JTextField1.setText(uprs.getString(“COD_DEPTO”));
this.JTextField2.setText(uprs.getString(“DESC_DEPTO”));

break;

ai funcionol tráz o primeiro registro quando carrego a tela, mas ai vem a outra parte do meu problema, tenho os botões em tela << < > >>, para que o usuário possa navegar para frente e para trás nos registros e ai os comandos first(), previus(), next() e last() vão funcionar???
[size=“11”][color=“red”]* Editado: Lembre-se de utilizar BBCode em seus códigos - Ratinho[/color][/size] :joia:

Olá carlos_valentini,

Na hora de criar seu Statement, tente assim:

Até mais,

Fiz as modificações conforme sugestão e no eento do botão next implementei o seguinte código:
public void actionPerformed(ActionEvent source) {
// TODO Auto-generated method stub
if (source.getSource()==(JButton) bt_next)
{

		try {
			while (uprs.next()){
				this.JTextField1.setText(uprs.getString("COD_DEPTO"));
				this.JTextField2.setText(uprs.getString("DESC_DEPTO"));
				break;

			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
    }
	
}

O seguinte erro aparece no console do eclipse:
[color=“red”]java.sql.SQLException: [Microsoft][ODBC Driver Manager] Estado de cursor inválido
at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.SQLGetDataString(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcResultSet.getDataString(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcResultSet.getString(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcResultSet.getString(Unknown Source)
at cd0107.actionPerformed(cd0107.java:184)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)[/color]

Carlos, ao invés do while, tente com if, algo assim:

if &#40; uprs.next&#40;&#41; &#41; &#123;
    this.JTextField1.setText&#40;uprs.getString&#40;&quot;COD_DEPTO&quot;&#41;&#41;;
    this.JTextField2.setText&#40;uprs.getString&#40;&quot;DESC_DEPTO&quot;&#41;&#41;;
&#125; else &#123;
    JOptionPane.showMessageDialog&#40;null, &quot;Ultimo registro!&quot;&#41;;
    uprs.previous&#40;&#41;;
&#125; 

Dessa forma, o RseultSet nunca atingirá o seu ultimo registro + 1.

Tente isso, e qualquer coisa volte a posta.

[]s