|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--net.sourceforge.jtds.jdbc.JtdsResultSet | +--net.sourceforge.jtds.jdbc.CachedResultSet
This class implements a memory cached scrollable/updateable result set.
Notes:
Field Summary | |
protected TdsCore |
cursorTds
Cursor TdsCore object. |
protected boolean |
hasKeys
Indicates that result set is keyed. |
protected int |
initialRowCnt
The row count of the initial result set. |
protected ParamInfo[] |
insertRow
Buffer row used for inserts. |
protected boolean |
isKeyed
Table is keyed. |
protected boolean |
isSybase
Flag to indicate Sybase. |
protected boolean |
onInsertRow
Indicates currently inserting. |
protected ParamInfo[] |
procedureParams
Original parameters. |
protected java.lang.String |
procName
Original procedure name. |
protected boolean |
rowDeleted
Indicates that row has been deleted. |
protected boolean |
rowUpdated
Indicates that row has been updated. |
protected boolean |
sizeChanged
Fetch size has been changed. |
protected java.lang.String |
sql
Original SQL statement. |
protected java.lang.String |
tableName
First table name in select. |
protected boolean |
tempResultSet
True if this is a local temporary result set. |
protected ParamInfo[] |
updateRow
The "update" row. |
protected TdsCore |
updateTds
Updates TdsCore object used for positioned updates. |
Fields inherited from class net.sourceforge.jtds.jdbc.JtdsResultSet |
cancelled, CLOSE_CURSORS_AT_COMMIT, closed, columnCount, columnMap, columns, concurrency, currentRow, cursorName, direction, f, fetchDirection, fetchSize, HOLD_CURSORS_OVER_COMMIT, INITIAL_ROW_COUNT, pos, POS_AFTER_LAST, POS_BEFORE_FIRST, readAhead, resultSetType, rowData, rowPtr, rowsInResult, statement, wasNull |
Fields inherited from interface java.sql.ResultSet |
CONCUR_READ_ONLY, CONCUR_UPDATABLE, FETCH_FORWARD, FETCH_REVERSE, FETCH_UNKNOWN, TYPE_FORWARD_ONLY, TYPE_SCROLL_INSENSITIVE, TYPE_SCROLL_SENSITIVE |
Constructor Summary | |
(package private) |
CachedResultSet(JtdsResultSet rs,
boolean load)
Create a cached result set with the same columns (and optionally data) as an existing result set. |
(package private) |
CachedResultSet(JtdsStatement statement,
ColInfo[] columns,
java.lang.Object[] data)
Create a cached result set containing one row. |
(package private) |
CachedResultSet(JtdsStatement statement,
java.lang.String[] colName,
int[] colType)
Construct a cached result set based on locally generated data. |
(package private) |
CachedResultSet(JtdsStatement statement,
java.lang.String sql,
java.lang.String procName,
ParamInfo[] procedureParams,
int resultSetType,
int concurrency)
Construct a new cached result set. |
Method Summary | |
boolean |
absolute(int row)
|
void |
afterLast()
|
void |
beforeFirst()
|
protected ParamInfo |
buildParameter(int pos,
ColInfo info,
java.lang.Object value)
Create a parameter object for an update, delete or insert statement. |
(package private) ParamInfo[] |
buildWhereClause(java.lang.StringBuffer sql,
java.util.ArrayList params,
boolean select)
Build a where clause for update or delete statements. |
void |
cancelRowUpdates()
|
void |
close()
|
private void |
cursorClose()
Close the result set. |
private void |
cursorCreate(java.lang.String sql,
java.lang.String procName,
ParamInfo[] parameters)
Create a new scrollable result set in memory or a named server cursor. |
private boolean |
cursorFetch(int rowNum)
Fetch the next result row from the internal row array. |
void |
deleteRow()
|
boolean |
first()
|
void |
insertRow()
|
(package private) boolean |
isCursorUpdateable()
Analyse the tables in the result set and determine if we have the primary key columns needed to make each updateable. |
boolean |
isLast()
|
boolean |
last()
|
void |
moveToCurrentRow()
|
void |
moveToInsertRow()
|
boolean |
next()
|
boolean |
previous()
|
protected void |
refreshKeyedRows()
Refresh a result set row from keyed tables. |
protected void |
refreshReRead()
Refresh the row by rereading the result set. |
void |
refreshRow()
|
boolean |
relative(int row)
|
boolean |
rowDeleted()
|
boolean |
rowInserted()
|
boolean |
rowUpdated()
|
protected void |
setColValue(int colIndex,
int jdbcType,
java.lang.Object value,
int length)
Set the specified column's data value. |
(package private) void |
setConcurrency(int concurrency)
Modify the concurrency of the result set. |
void |
setFetchSize(int size)
|
void |
updateRow()
|
Methods inherited from class java.lang.Object |
|
Field Detail |
protected boolean onInsertRow
protected ParamInfo[] insertRow
protected ParamInfo[] updateRow
protected boolean hasKeys
protected boolean rowUpdated
protected boolean rowDeleted
protected int initialRowCnt
protected boolean tempResultSet
protected TdsCore cursorTds
protected TdsCore updateTds
protected boolean isSybase
protected boolean sizeChanged
protected java.lang.String sql
protected java.lang.String procName
protected ParamInfo[] procedureParams
protected boolean isKeyed
protected java.lang.String tableName
Constructor Detail |
CachedResultSet(JtdsStatement statement, java.lang.String sql, java.lang.String procName, ParamInfo[] procedureParams, int resultSetType, int concurrency) throws java.sql.SQLException
This result set will either be cached in memory or, if the cursor name is set, can be a forward only server side cursor. This latter form of cursor can also support positioned updates.
statement
- The parent statement object.sql
- The SQL statement used to build the result set.procName
- An optional stored procedure name.procedureParams
- Parameters for prepared statements.resultSetType
- The result set type eg scrollable.concurrency
- The result set concurrency eg updateable.java.sql.SQLException
- CachedResultSet(JtdsStatement statement, java.lang.String[] colName, int[] colType) throws java.sql.SQLException
statement
- The parent statement object.colName
- Array of column names.colType
- Array of corresponding data types.java.sql.SQLException
- CachedResultSet(JtdsResultSet rs, boolean load) throws java.sql.SQLException
rs
- The result set to copy.load
- Load data from the supplied result set.java.sql.SQLException
- CachedResultSet(JtdsStatement statement, ColInfo[] columns, java.lang.Object[] data) throws java.sql.SQLException
statement
- The parent statement object.columns
- The column descriptor array.data
- The row data.java.sql.SQLException
- Method Detail |
void setConcurrency(int concurrency)
Use to make result set read only once loaded.
concurrency
- The concurrency value eg ResultSet.CONCUR_READ_ONLY.private void cursorCreate(java.lang.String sql, java.lang.String procName, ParamInfo[] parameters) throws java.sql.SQLException
sql
- The SQL SELECT statement.procName
- Optional procedure name for cursors based on a stored procedure.parameters
- Optional stored procedure parameters.java.sql.SQLException
- boolean isCursorUpdateable() throws java.sql.SQLException
Sybase (and SQL 6.5) will automatically include any additional key and timestamp columns as hidden fields even if the user does not reference them in the select statement.
If table is unkeyed but there is an identity column then this is promoted to a key.
Alternatively we can update, provided all the columns in the table row have been selected, by regarding all of them as keys.
SQL Server 7+ does not return the correct primary key meta data for temporary tables so the driver has to query the catalog to locate any keys.
boolean true if there is one table and it is keyed.
private boolean cursorFetch(int rowNum) throws java.sql.SQLException
rowNum
- The row number to fetch.boolean
true if a result set row is returned.java.sql.SQLException
- private void cursorClose() throws java.sql.SQLException
protected ParamInfo buildParameter(int pos, ColInfo info, java.lang.Object value) throws java.sql.SQLException
pos
- the substitution position of the parameter marker in the SQLinfo
- the ColInfo column descriptorvalue
- the column data itemParamInfo
object.protected void setColValue(int colIndex, int jdbcType, java.lang.Object value, int length) throws java.sql.SQLException
setColValue
in class JtdsResultSet
colIndex
- The index of the column in the row.value
- The new column value.ParamInfo[] buildWhereClause(java.lang.StringBuffer sql, java.util.ArrayList params, boolean select) throws java.sql.SQLException
sql
- The SQL Statement to append the where clause to.params
- The parameter descriptor array for this statement.select
- True if this where clause will be used in a select statement.ParamInfo[]
.java.sql.SQLException
- protected void refreshKeyedRows() throws java.sql.SQLException
If all the tables in the result set have primary keys then the result set row can be refreshed by refetching the individual table rows.
java.sql.SQLException
- protected void refreshReRead() throws java.sql.SQLException
Obviously very slow on large result sets but may be the only option if tables do not have keys.
public void setFetchSize(int size) throws java.sql.SQLException
setFetchSize
in class JtdsResultSet
public void afterLast() throws java.sql.SQLException
afterLast
in class JtdsResultSet
public void beforeFirst() throws java.sql.SQLException
beforeFirst
in class JtdsResultSet
public void cancelRowUpdates() throws java.sql.SQLException
cancelRowUpdates
in class JtdsResultSet
public void close() throws java.sql.SQLException
close
in class JtdsResultSet
public void deleteRow() throws java.sql.SQLException
deleteRow
in class JtdsResultSet
public void insertRow() throws java.sql.SQLException
insertRow
in class JtdsResultSet
public void moveToCurrentRow() throws java.sql.SQLException
moveToCurrentRow
in class JtdsResultSet
public void moveToInsertRow() throws java.sql.SQLException
moveToInsertRow
in class JtdsResultSet
public void refreshRow() throws java.sql.SQLException
refreshRow
in class JtdsResultSet
public void updateRow() throws java.sql.SQLException
updateRow
in class JtdsResultSet
public boolean first() throws java.sql.SQLException
first
in class JtdsResultSet
public boolean isLast() throws java.sql.SQLException
isLast
in class JtdsResultSet
public boolean last() throws java.sql.SQLException
last
in class JtdsResultSet
public boolean next() throws java.sql.SQLException
next
in class JtdsResultSet
public boolean previous() throws java.sql.SQLException
previous
in class JtdsResultSet
public boolean rowDeleted() throws java.sql.SQLException
rowDeleted
in class JtdsResultSet
public boolean rowInserted() throws java.sql.SQLException
rowInserted
in class JtdsResultSet
public boolean rowUpdated() throws java.sql.SQLException
rowUpdated
in class JtdsResultSet
public boolean absolute(int row) throws java.sql.SQLException
absolute
in class JtdsResultSet
public boolean relative(int row) throws java.sql.SQLException
relative
in class JtdsResultSet
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |