public class DBReader extends DBRecordData
This class is used to perform database queries from a DBCommand object and access the results.
In oder to perform a query call the open() function or - for single row queries - call getRecordData();
You can iterate through the rows using moveNext() or an iterator.
However take care: A reader must always be explicitly closed using the close() method!
Otherwise you may lock the JDBC connection and run out of resources.
Use
try { ... } finally { reader.close(); }to make sure the reader is closed.
To access and work with the query result you can do one of the following:
DBRecordData
)getBeanList(Class, int)
getXmlDocument()
initRecord(DBRowSet, DBRecord)
Modifier and Type | Class and Description |
---|---|
class |
DBReader.DBReaderForwardIterator
This is an iterator for forward only resultsets.
|
class |
DBReader.DBReaderIterator |
class |
DBReader.DBReaderScrollableIterator
This is an iterator for scrolling resultsets.
|
Modifier and Type | Field and Description |
---|---|
protected static org.slf4j.Logger |
log |
Constructor and Description |
---|
DBReader()
Constructs a default DBReader object with the fieldIndexMap enabled.
|
DBReader(boolean useFieldIndexMap)
Constructs an empty DBRecordSet object.
|
Modifier and Type | Method and Description |
---|---|
int |
addColumnDesc(Element parent)
Moves the cursor down one row from its current position.
|
int |
addRows(Element parent)
Adds all children to a parent.
|
int |
addRowValues(Element parent)
Adds all children to a parent.
|
static void |
checkOpenResultSets()
Call this if you want to check whether there are any unclosed resultsets
It logs stack traces to help find piece of code
where a DBReader was opened but not closed.
|
void |
close()
Closes the DBRecordSet object, the Statement object and detach the columns.
|
static boolean |
enableOpenResultSetTracking(boolean enable)
Enables or disabled tracking of open ResultSets
|
protected void |
endTrackingThisResultSet()
Support for finding code errors where a DBRecordSet is opened but not closed.
|
protected int |
findFieldIndex(ColumnExpr column)
finds the field Index of a given column expression
Internally used as helper for getFieldIndex()
|
protected static Constructor<?> |
findMatchingAccessibleConstructor(Class<?> clazz,
Class<?>[] parameterTypes)
copied from org.apache.commons.beanutils.ConstructorUtils since it's private there
|
protected List<Object[]> |
findSubQueryParams(DBCommand cmd)
internal helper function to find parameterized subqueries
|
<C extends Collection<T>,T> |
getBeanList(C c,
Class<T> t,
int maxCount)
Returns the result of a query as a list of objects restricted
to a maximum number of objects (unless maxCount is -1).
|
<T> ArrayList<T> |
getBeanList(Class<T> t)
Returns the result of a query as a list of objects.
|
<T> ArrayList<T> |
getBeanList(Class<T> t,
int maxItems)
Returns the result of a query as a list of objects.
|
DBColumnExpr |
getColumnExpr(int iColumn)
Get the column Expression at position
|
protected DBColumnExpr[] |
getColumnExprList()
Access the column expression list
|
DBDatabase |
getDatabase()
Returns the current DBDatabase object.
|
int |
getFieldCount()
returns the number of the elements of the colList array
|
int |
getFieldIndex(ColumnExpr column)
Returns the index value by a specified DBColumnExpr object.
|
int |
getFieldIndex(String column)
Returns the index value by a specified column name.
|
void |
getRecordData(DBCommandExpr cmd,
Connection conn)
Opens the reader by executing the given SQL command and moves to the first row.
|
protected ResultSet |
getResultSet()
Access the JDBC-ResultSet
|
boolean |
getScrollable() |
Object |
getValue(int index)
Returns a data value identified by the column index.
|
protected DBXmlDictionary |
getXmlDictionary()
returns the DBXmlDictionary that should used to generate XMLDocuments
|
Document |
getXmlDocument()
Returns a XML document with the field description an values of this record.
|
protected void |
init(DBDatabase db,
DBColumnExpr[] colList,
ResultSet rset)
Initialize the reader from an open JDBC-ResultSet
|
void |
initRecord(DBRowSet rowset,
DBRecord rec)
initializes a DBRecord object with the values of the current row.
|
boolean |
isNull(int index)
Checks wehter a column value is null Unlike the base
class implementation, this class directly check the value fromt the
resultset.
|
boolean |
isOpen()
Checks if the rowset is open
|
Iterator<DBRecordData> |
iterator()
Returns an row iterator for this reader.
|
Iterator<DBRecordData> |
iterator(int maxCount)
Returns an row iterator for this reader.
|
boolean |
moveNext()
Moves the cursor down one row from its current position.
|
void |
open(DBCommandExpr cmd,
boolean scrollable,
Connection conn)
Opens the reader by executing the given SQL command.
|
void |
open(DBCommandExpr cmd,
Connection conn)
Opens the reader by executing the given SQL command.
|
boolean |
skipRows(int count)
Moves the cursor down the given number of rows.
|
protected void |
trackThisResultSet()
Support for finding code errors where a DBRecordSet is opened but not closed.
|
getBoolean, getBoolean, getDateTime, getDateTime, getDecimal, getDecimal, getDouble, getDouble, getInt, getInt, getLong, getLong, getString, getString, getValue, isNull, setBeanProperties, setBeanProperties, setBeanProperty
public DBReader()
public DBReader(boolean useFieldIndexMap)
useFieldIndexMap
- public DBDatabase getDatabase()
getDatabase
in class DBObject
public boolean getScrollable()
public int getFieldIndex(ColumnExpr column)
getFieldIndex
in interface RecordData
getFieldIndex
in class DBRecordData
column
- the column for which to return the indexpublic DBColumnExpr getColumnExpr(int iColumn)
getColumnExpr
in interface RecordData
getColumnExpr
in class DBRecordData
iColumn
- field index of the column expressionpublic int getFieldIndex(String column)
getFieldIndex
in interface RecordData
getFieldIndex
in class DBRecordData
column
- the column namepublic boolean isNull(int index)
isNull
in interface RecordData
isNull
in class DBRecordData
index
- index of the columnpublic Object getValue(int index)
getValue
in interface RecordData
getValue
in class DBRecordData
index
- index of the columnpublic boolean isOpen()
public void open(DBCommandExpr cmd, boolean scrollable, Connection conn)
ATTENTION: After using the reader it must be closed using the close() method!
Use
try { ... } finally { reader.close(); }to make sure the reader is closed.
cmd
- the SQL-Command with cmd.getSelect()scrollable
- true if the reader should be scrollable or false if notconn
- a valid JDBC connection.public final void open(DBCommandExpr cmd, Connection conn)
cmd
- the SQL-Command with cmd.getSelect()conn
- a valid JDBC connection.public void getRecordData(DBCommandExpr cmd, Connection conn)
Opens the reader by executing the given SQL command and moves to the first row.
If true is returned data of the row can be accessed through the functions on the RecordData interface.
This function is intended for single row queries and provided for convenience.
However it behaves exacly as calling reader.open() and reader.moveNext()
ATTENTION: After using the reader it must be closed using the close() method!
Use
try { ... } finally { reader.close(); }to make sure the reader is closed.
cmd
- the SQL-Command with cmd.getSelect()conn
- a valid JDBC connection.public void close()
close
in class DBRecordData
public boolean skipRows(int count)
count
- the number of rows to skippublic boolean moveNext()
public Iterator<DBRecordData> iterator(int maxCount)
maxCount
- the maximum number of item that should be returned by this iteratorpublic final Iterator<DBRecordData> iterator()
Returns an row iterator for this reader. There can only be one iterator at a time.
public void initRecord(DBRowSet rowset, DBRecord rec)
initializes a DBRecord object with the values of the current row.
At least all primary key columns of the target rowset must be provided by this reader.
This function is equivalent to calling rowset.initRecord(rec, reader)
set also DBRowSet.initRecord(DBRecord, DBRecordData)
);
rowset
- the rowset to which to attachrec
- the record which to initializepublic <C extends Collection<T>,T> C getBeanList(C c, Class<T> t, int maxCount)
c
- the collection to add the objects tot
- the class type of the objects in the listmaxCount
- the maximum number of objectspublic final <T> ArrayList<T> getBeanList(Class<T> t, int maxItems)
t
- the class type of the objects in the listmaxItems
- the maximum number of objectspublic final <T> ArrayList<T> getBeanList(Class<T> t)
t
- the class type of the objects in the listpublic int addColumnDesc(Element parent)
addColumnDesc
in class DBRecordData
public int addRowValues(Element parent)
addRowValues
in class DBRecordData
parent
- the parent element below which to search the childpublic int addRows(Element parent)
parent
- the parent element below which to search the childprotected DBXmlDictionary getXmlDictionary()
public Document getXmlDocument()
getXmlDocument
in class DBRecordData
public int getFieldCount()
getFieldCount
in interface RecordData
getFieldCount
in class DBRecordData
protected void init(DBDatabase db, DBColumnExpr[] colList, ResultSet rset)
db
- the databasecolList
- the query column expressionsrset
- the JDBC-ResultSetprotected final DBColumnExpr[] getColumnExprList()
protected final ResultSet getResultSet()
protected int findFieldIndex(ColumnExpr column)
protected List<Object[]> findSubQueryParams(DBCommand cmd)
cmd
- the commandprotected void trackThisResultSet()
protected void endTrackingThisResultSet()
protected static Constructor<?> findMatchingAccessibleConstructor(Class<?> clazz, Class<?>[] parameterTypes)
public static boolean enableOpenResultSetTracking(boolean enable)
enable
- true to enable or false otherwisepublic static void checkOpenResultSets()
Call this if you want to check whether there are any unclosed resultsets It logs stack traces to help find piece of code where a DBReader was opened but not closed.
Copyright © 2008–2017 Apache Software Foundation. All rights reserved.