Class MSCursorResultSet

java.lang.Object
net.sourceforge.jtds.jdbc.JtdsResultSet
net.sourceforge.jtds.jdbc.MSCursorResultSet
All Implemented Interfaces:
AutoCloseable, ResultSet, Wrapper

public class MSCursorResultSet extends JtdsResultSet
This class extends the JtdsResultSet to support scrollable and or updateable cursors on Microsoft servers.

The undocumented Microsoft sp_cursor procedures are used.

Implementation notes:

  1. All of Alin's cursor result set logic is incorporated here.
  2. This logic was originally implemented in the JtdsResultSet class but on reflection it seems that Alin's original approch of having a dedicated cursor class leads to a more flexible and maintainable design.
Version:
$Id: MSCursorResultSet.java,v 1.59 2007-07-11 20:02:45 bheineman Exp $
Author:
Alin Sinpalean, Mike Hutchinson
  • Field Details

    • FETCH_FIRST

      private static final Integer FETCH_FIRST
    • FETCH_NEXT

      private static final Integer FETCH_NEXT
    • FETCH_PREVIOUS

      private static final Integer FETCH_PREVIOUS
    • FETCH_LAST

      private static final Integer FETCH_LAST
    • FETCH_ABSOLUTE

      private static final Integer FETCH_ABSOLUTE
    • FETCH_RELATIVE

      private static final Integer FETCH_RELATIVE
    • FETCH_REPEAT

      private static final Integer FETCH_REPEAT
    • FETCH_INFO

      private static final Integer FETCH_INFO
    • CURSOR_TYPE_KEYSET

      private static final int CURSOR_TYPE_KEYSET
      See Also:
    • CURSOR_TYPE_DYNAMIC

      private static final int CURSOR_TYPE_DYNAMIC
      See Also:
    • CURSOR_TYPE_FORWARD

      private static final int CURSOR_TYPE_FORWARD
      See Also:
    • CURSOR_TYPE_STATIC

      private static final int CURSOR_TYPE_STATIC
      See Also:
    • CURSOR_TYPE_FASTFORWARDONLY

      private static final int CURSOR_TYPE_FASTFORWARDONLY
      See Also:
    • CURSOR_TYPE_PARAMETERIZED

      private static final int CURSOR_TYPE_PARAMETERIZED
      See Also:
    • CURSOR_TYPE_AUTO_FETCH

      private static final int CURSOR_TYPE_AUTO_FETCH
      See Also:
    • CURSOR_CONCUR_READ_ONLY

      private static final int CURSOR_CONCUR_READ_ONLY
      See Also:
    • CURSOR_CONCUR_SCROLL_LOCKS

      private static final int CURSOR_CONCUR_SCROLL_LOCKS
      See Also:
    • CURSOR_CONCUR_OPTIMISTIC

      private static final int CURSOR_CONCUR_OPTIMISTIC
      See Also:
    • CURSOR_CONCUR_OPTIMISTIC_VALUES

      private static final int CURSOR_CONCUR_OPTIMISTIC_VALUES
      See Also:
    • CURSOR_OP_INSERT

      private static final Integer CURSOR_OP_INSERT
    • CURSOR_OP_UPDATE

      private static final Integer CURSOR_OP_UPDATE
    • CURSOR_OP_DELETE

      private static final Integer CURSOR_OP_DELETE
    • SQL_ROW_DIRTY

      private static final Integer SQL_ROW_DIRTY
      The row is dirty and needs to be reloaded (internal state).
    • SQL_ROW_SUCCESS

      private static final Integer SQL_ROW_SUCCESS
      The row is valid.
    • SQL_ROW_DELETED

      private static final Integer SQL_ROW_DELETED
      The row has been deleted.
    • onInsertRow

      private boolean onInsertRow
      Set when moveToInsertRow() was called.
    • insertRow

      private ParamInfo[] insertRow
      The "insert row".
    • updateRow

      private ParamInfo[] updateRow
      The "update row".
    • rowCache

      private Object[][] rowCache
      The row cache used instead JtdsResultSet.currentRow.
    • cursorPos

      private int cursorPos
      Actual position of the cursor.
    • asyncCursor

      private boolean asyncCursor
      The cursor is being built asynchronously.
    • PARAM_CURSOR_HANDLE

      private final ParamInfo PARAM_CURSOR_HANDLE
      Cursor handle parameter.
    • PARAM_FETCHTYPE

      private final ParamInfo PARAM_FETCHTYPE
      sp_cursorfetch fetchtype parameter.
    • PARAM_ROWNUM_IN

      private final ParamInfo PARAM_ROWNUM_IN
      sp_cursorfetch rownum IN parameter (for actual fetches).
    • PARAM_NUMROWS_IN

      private final ParamInfo PARAM_NUMROWS_IN
      sp_cursorfetch numrows IN parameter (for actual fetches).
    • PARAM_ROWNUM_OUT

      private final ParamInfo PARAM_ROWNUM_OUT
      sp_cursorfetch rownum OUT parameter (for FETCH_INFO).
    • PARAM_NUMROWS_OUT

      private final ParamInfo PARAM_NUMROWS_OUT
      sp_cursorfetch numrows OUT parameter (for FETCH_INFO).
    • PARAM_OPTYPE

      private final ParamInfo PARAM_OPTYPE
      sp_cursor optype parameter.
    • PARAM_ROWNUM

      private final ParamInfo PARAM_ROWNUM
      sp_cursor rownum parameter.
    • PARAM_TABLE

      private final ParamInfo PARAM_TABLE
      sp_cursor table parameter.
  • Constructor Details

    • MSCursorResultSet

      MSCursorResultSet(JtdsStatement statement, String sql, String procName, ParamInfo[] procedureParams, int resultSetType, int concurrency) throws SQLException
      Construct a cursor result set using Microsoft sp_cursorcreate etc.
      Parameters:
      statement - The parent statement object or null.
      resultSetType - one of FORWARD_ONLY, SCROLL_INSENSITIVE, SCROLL_SENSITIVE.
      concurrency - One of CONCUR_READ_ONLY, CONCUR_UPDATE.
      Throws:
      SQLException
  • Method Details