How to make scrollable resultset?.

Hi All

How to make scrollable resultset.problem is iam calling the storedProc..code is:

Conncetion con1=DriverManager.getConnection("jdbc:odbc:dsnname","uid","pwd");

CallableStatement cst1=con1.prepareCall("{CALL status_rep2(?,?,?,?,?,?)}");

cst1.setString(1,JobStatus);

cst1.setNull(2,java.sql.Types.INTEGER);

cst1.setNull(3,java.sql.Types.INTEGER);

cst1.setNull(4,java.sql.Types.INTEGER);

cst1.setNull(5,java.sql.Types.INTEGER);

cst1.setNull(6,java.sql.Types.INTEGER);

ResultSet rs1=cst1.executeQuery();

I want to find out how many row are return by cst1.executeQuery();.if rs1 have resultset i want print those results on the browser.

To achive above steps iam calling StoredProc two time. first time to findout the row count and second time to print the resultset on the browser.why iam doing this is i could not found the way to make the resultset a scrollble.There is any way to make the resultset scrollable?.if possible send a mail a samplecode or sugesstion.

venky_00@rediffmail.com.

Thanks

venkat.

[1126 byte] By [venkatpathipati] at [2007-9-26 1:28:15]
# 1

Hi Venkat,

Here is a sample code and a URL at the end which gives a good idea about scrollable result set.

import java.sql.*;

import javax.swing.table.*;

import javax.swing.event.*;

/**

* This class takes a JDBC ResultSet object and implements the TableModel

* interface in terms of it so that a Swing JTable component can display the

* contents of the ResultSet. Note that it requires a scrollable JDBC 2.0

* ResultSet. Also note that it provides read-only access to the results

**/

public class ResultSetTableModel implements TableModel {

ResultSet results; // The ResultSet to interpret

ResultSetMetaData metadata;// Additional information about the results

int numcols, numrows; // How many rows and columns in the table

/**

* This constructor creates a TableModel from a ResultSet. It is package

* private because it is only intended to be used by

* ResultSetTableModelFactory, which is what you should use to obtain a

* ResultSetTableModel

**/

ResultSetTableModel(ResultSet results) throws SQLException {

this.results = results;// Save the results

metadata = results.getMetaData();// Get metadata on them

numcols = metadata.getColumnCount();// How many columns?

results.last(); // Move to last row

numrows = results.getRow(); // How many rows?

}

/**

* Call this when done with the table model. It closes the ResultSet and

* the Statement object used to create it.

**/

public void close() {

try { results.getStatement().close(); }

catch(SQLException e) {};

}

/** Automatically close when we're garbage collected */

protected void finalize() { close(); }

// These two TableModel methods return the size of the table

public int getColumnCount() { return numcols; }

public int getRowCount() { return numrows; }

// This TableModel method returns columns names from the ResultSetMetaData

public String getColumnName(int column) {

try {

return metadata.getColumnLabel(column+1);

} catch (SQLException e) { return e.toString(); }

}

// This TableModel method specifies the data type for each column.

// We could map SQL types to Java types, but for this example, we'll just

// convert all the returned data to strings.

public Class getColumnClass(int column) { return String.class; }

/**

* This is the key method of TableModel: it returns the value at each cell

* of the table. We use strings in this case. If anything goes wrong, we

* return the exception as a string, so it will be displayed in the table.

* Note that SQL row and column numbers start at 1, but TableModel column

* numbers start at 0.

**/

public Object getValueAt(int row, int column) {

try {

results.absolute(row+1);// Go to the specified row

Object o = results.getObject(column+1); // Get value of the column

if (o == null) return null;

else return o.toString();// Convert it to a string

} catch (SQLException e) { return e.toString(); }

}

// Our table isn't editable

public boolean isCellEditable(int row, int column) { return false; }

// Since its not editable, we don't need to implement these methods

public void setValueAt(Object value, int row, int column) {}

public void addTableModelListener(TableModelListener l) {}

public void removeTableModelListener(TableModelListener l) {}

}

http://java.sun.com/docs/books/tutorial/jdbc/jdbc2dot0/cursor.html

I hope this will help you.

Thanks

Bakrudeen

Technical Support Engineer

Sun MicroSystems Inc, India

bakrudeen_indts at 2007-6-29 1:13:38 > top of Java-index,Enterprise & Remote Computing,Web Tier APIs...
# 2
method rs1.first() moves the cursor to the first row in this ResultSet object rs1.
echojiang at 2007-6-29 1:13:38 > top of Java-index,Enterprise & Remote Computing,Web Tier APIs...