KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > jimm > datavision > source > sql > ResultSetRow


1 package jimm.datavision.source.sql;
2 import jimm.datavision.ErrorHandler;
3 import jimm.datavision.source.DataCursor;
4 import java.util.List JavaDoc;
5 import java.util.ArrayList JavaDoc;
6 import java.sql.*;
7
8 /**
9  * A concrete subclass of <code>DataCursor</code> that wraps a JDBC result set.
10  *
11  * @author Jim Menard, <a HREF="mailto:jimm@io.com">jimm@io.com</a>
12  */

13 public class ResultSetRow extends DataCursor {
14
15 protected PreparedStatement stmt;
16 protected ResultSet rset;
17 protected int numSelectables;
18 protected boolean noMoreData;
19
20 ResultSetRow(Connection conn, SQLQuery query) throws SQLException {
21     // Suggested by Konstantin. Though it works for his Oracle driver,
22
// it doesn't work for my PostgreSQL driver. These args are also
23
// legal for prepared statements.
24
// stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
25
// ResultSet.CONCUR_READ_ONLY);
26

27     String JavaDoc preparedStmtString = query.toPreparedStatementString();
28     if (preparedStmtString != null && preparedStmtString.length() > 0) {
29     stmt = conn.prepareStatement(preparedStmtString);
30     query.setParameters(stmt);
31     rset = stmt.executeQuery();
32     numSelectables = query.getNumSelectables();
33     noMoreData = false;
34     }
35     else {
36     numSelectables = 0;
37     noMoreData = true;
38     }
39 }
40
41 public List JavaDoc readRowData() {
42     // Avoid calling rset.next() if it has already returned false. Doing so
43
// appears harmless in most cases but seems to be causing a problem
44
// with at least one user's DB2 JDBC driver.
45
if (noMoreData)
46     return null;
47
48     try {
49     if (!rset.next()) {
50         noMoreData = true;
51         return null;
52     }
53     }
54     catch (SQLException sqle) {
55     ErrorHandler.error(sqle);
56     return null;
57     }
58
59     ArrayList JavaDoc list = new ArrayList JavaDoc();
60     try {
61     for (int i = 1; i <= numSelectables; ++i)
62         list.add(rset.getObject(i));
63     }
64     catch (SQLException sqle) {
65     ErrorHandler.error(sqle);
66     }
67     return list;
68 }
69
70 public void close() {
71     try {
72     if (rset != null) rset.close();
73     if (stmt != null) stmt.close();
74     }
75     catch (SQLException sqle) {
76     ErrorHandler.error(sqle);
77     }
78     finally {
79     rset = null;
80     stmt = null;
81     }
82 }
83
84 }
85
Popular Tags