Web
Design & Development
Lec - 16
1
Web
Design & Development
More on JDBC
2
Web
Design & Development
Result Set
3
ResultSet
• Overview
– A ResultSet contains the results of the SQL query
• Represented by a table with rows and columns
• Maintains a cursor pointing to its current row of data.
• Initially the cursor positioned before the row (0).
• First row has index 1
4
JDBC
Umair Javed©2005
ResultSet (cont.)
Row numbers
ResultSet
0
5
JDBC
id
Name
Address
phoneNum
1
1
ali
model town
9203256
2
2
usman
gulberg
8219065
3
3
raza
defence
5173946
Umair Javed©2005
ResultSet (cont.)
• A default ResultSet object is not updateable
and has a cursor that moves forward only
– You can iterate through it only once and only from the
first row to last row.
String sql = “SELECT * FROM Person”;
PreparedStatement pStmt = con.prepareStatement(sql);
ResultSet rs = pStmt.executeQuery( );
6
JDBC
Umair Javed©2005
ResultSet (cont.)
• Useful Methods
– next( )
• Attempts to move to the next row in the ResultSet
• If successful true is returned; otherwise, false
• The first call to next, moves the cursor to the first row
– close( )
• Releases the JDBC and database resources
• The result set is automatically closed when the
associated Statement object executes a new query or
closed by method call
7
JDBC
Umair Javed©2005
ResultSet (cont.)
• Useful Methods
– getters
• Returns the value from the column specified by the
column name or index
– String name = rs.getString(“name”);
– String add = rs.getString(3);
– double sal = rs.getDouble(“Salary”)
• Returns the value in a specified format
double
float
8
JDBC
byte
short
int
long
Date
Time
String
Object
Umair Javed©2005
ResultSet (cont.)
• It is possible to produce ResultSet objects that are
scrollable and/or updatable (since JDK 1.2).
String sql = “SELECT * FROM Person”;
PreparedStatement pStmt = con.prepareStatement( sql,
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE );
ResultSet rs = pStmt.executeQuery( );
9
JDBC
Umair Javed©2005
ResultSet (cont.)
• Useful Methods
– previous( )
• Moves the cursor to the previous row in the
ResultSet object.
• Returns true if cursor is on a valid row, false it
is off the result set.
• Throws exception if result type is TYPE_FORWARD_ONLY.
10
JDBC
Umair Javed©2005
Example Code: ResultSetEx
previous, next & getters methods
import java.sql.*;
public class ResultSetEx {
public static void main ( String args[ ]) {
try {
// load driver & make connection
String sql = “SELECT * FROM Person”;
PreparedStatement pStmt = con.prepareStatement( sql,
ResultSet.TYPE_SCROLL_INSENSITIVE ,
ResultSet.CONCUR_UPDATABLE );
ResultSet rs = pStmt.executeQuery( );
11
JDBC
Umair Javed©2005
Example Code: ResultSetEx
previous, next & getters methods
rs.next();
System.out.println(“moving cursor forward”);
String name = rs.getString(“name”);
System.out.println(name);
rs.next();
rs.previous();
System.out.println(“moving cursor backward”);
name = rs.getString(“name”);
System.out.println(name);
12
JDBC
Umair Javed©2005
Example Code: ResultSetEx
previous, next & getters methods
con.close();
} catch (Exception ex) {
System.out.println(ex);
}
}// end main
}//end class
13
JDBC
Umair Javed©2005
Compile & Execute
14
JDBC
Umair Javed©2005
ResultSet (cont.)
• Useful Methods
– absolute(int)
• Move the cursor to the given row number in the
ResultSet object
• If the row number is positive, moves the cursor forward
with respect to beginning of the result set.
• If the given row number is negative, the cursor moves to
the absolute row position with respect to the end of the
result set.
– For example, calling absolute(-1) positions the cursor
on the last row; calling absolute(-2) moves the cursor
to next-to-last row, and so on.
• Throws exception if result type is TYPE_FORWARD_ONLY.
15
JDBC
Umair Javed©2005
ResultSet (cont.)
• Useful Methods
– updaters (for primitives, Object & String)
• Used to update column values in the current row
or the insert row.
• Do not update the underlying database
• Each update method is overloaded.
• For example of String
updateString(String columnName, String value)
updateString(int columnIndex, String value)
16
JDBC
Umair Javed©2005
ResultSet (cont.)
• Useful Methods
– updateRow( )
• Updates the underlying database with new
contents of the current row of this ResultSet
object.
17
JDBC
Umair Javed©2005
Modify Example : ResultSetEx
updating existing rows
Import java.sql.*;
public class ResultSetEx {
….. // main method
….. Load driver, make connection
….. Make updatable resultset
//move cursor to 2nd row of rs
rs.absolute(2);
//update address column of 2nd row in rs
rs.updateString(“address”, “model town’);
//update the row in database
rs.updateRow();
………. // close connection etc
…. //end main
}// end class
18
JDBC
Umair Javed©2005
Compile & Execute
Before execution
After execution
19
JDBC
Umair Javed©2005
ResultSet (cont.)
• Useful Methods
– moveToInsertRow( )
• An Updatable ResultSet object has a special row
associated with it i.e. insert row.
• Insert row – a buffer, where a new row may be
construted by calling the updater methods
• Doesn’t insert row into a result set or into a
database
20
JDBC
Umair Javed©2005
ResultSet (cont.)
• Useful Methods
– insertRow( )
• Inserts the contents of the insert row into this
ResultSet object and into the database.
• The cursor must be on the insert row when this
method is called
21
JDBC
Umair Javed©2005
ResultSet (cont.)
moveToInsertRow( )
Row numbers
0
id
Name
Address
phoneNum
1
1
ali
model town
9203256
2
2
usman
gulberg
8219065
3
3
raza
defence
5173946
imitiaz
cantt
Updatable
ResultSet
9201211
Insert Row
22
JDBC
Umair Javed©2005
ResultSet (cont.)
insertRow( )
Row numbers
0
id
Name
Address
phoneNum
1
1
ali
model town
9203256
2
2
usman
gulberg
8219065
3
3
raza
defence
5173946
4
4
imitiaz
cantt
Updatable
ResultSet
9201211
Insert Row
23
JDBC
Umair Javed©2005
Modify Example : ResultSetEx
Inserting new row
Import java.sql.*;
public class ResultSetEx {
….. // main method
….. Load driver, make connection
….. Make updatable resultset
//move cursor to insert row
rs.moveToInsertRow();
// updating values into insert row
rs.updateString(“name”, “imitaz’);
rs.updateString(“address”, “cantt’);
rs.updateString(“phoneNum”, “9201211’);
//insert row into rs & db
rs.insertRow();
……….
…. //end main
}// end class
24
JDBC
Umair Javed©2005
Compile & Execute
Before execution
After execution
25
JDBC
Umair Javed©2005
ResultSet (cont.)
• Useful Methods
– last( ) & first( )
• Moves the cursor to the last & first row of the
ResultSet object respectively.
• Throws exception if the result set is TYPE_FORWARD_ONLY
– getRow( )
• Returns the current row numner
• The first row number is 1, second row number is 2 and
so on
26
JDBC
Umair Javed©2005
ResultSet (cont.)
• Useful Methods
– deleteRow( )
• Deletes the current row from this ResultSet object
and from the underlying database.
• Throws exception when the cursor is on the insert row
27
JDBC
Umair Javed©2005
Modify Example : ResultSetEx
deleting existing row
Import java.sql.*;
public class ResultSetEx {
….. // main method
….. Load driver, make connection
….. Make updatable resultset
//moves to last row
rs.last( );
int rNo = rs.getRow();
System.out.println(“curr row no: ”+ rNo );
//delete current row (4) from rs & db
rs.deleteRow();
……….
…. //end main
}// end class
28
JDBC
Umair Javed©2005
Compile & Execute
Before execution
After execution
29
JDBC
Umair Javed©2005
© Copyright 2026 Paperzz