Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## net.sourceforge.jtds.jdbc
Class JtdsPreparedStatement

    java.lang.Object
      |
      +--net.sourceforge.jtds.jdbc.JtdsStatement
            |
            +--net.sourceforge.jtds.jdbc.JtdsPreparedStatement

All Implemented Interfaces:
  java.sql.PreparedStatement, java.sql.Statement

Direct Known Subclasses:
  JtdsCallableStatement

public class JtdsPreparedStatement
extends JtdsStatement
implements java.sql.PreparedStatement

jTDS implementation of the java.sql.PreparedStatement interface.

Implementation notes:

1. Generally a simple subclass of Statement mainly adding support for the setting of parameters.
2. The stream logic is taken over from the work Brian did to add Blob support to the original jTDS.
3. Use of Statement specific method calls eg executeQuery(sql) is blocked by this version of the driver. This is unlike the original jTDS but inline with all the other JDBC drivers that I have been able to test.

Version:
  $Id: JtdsPreparedStatement.java,v 1.63 2007/07/12 21:03:23 bheineman Exp $
Author:
  Mike Hutchinson, Brian Heineman

Field Summary
`private static java.text.NumberFormat` | `f` Used to format numeric values when scale is specified.
`(package private) java.util.Collection` | `handles` Collection of handles used by this statement
`protected ParamInfo[]` | `parameters` The parameter list for the call.
`protected ParamInfo[]` | `paramMetaData` The cached parameter meta data.
`protected java.lang.String` | `procName` The procedure name for CallableStatements.
`private boolean` | `returnKeys` True to return generated keys.
`protected java.lang.String` | `sql` The SQL statement being prepared.
`protected java.lang.String` | `sqlWord` The first SQL keyword in the SQL string.

Fields inherited from class net.sourceforge.jtds.jdbc.JtdsStatement
`batchValues, BOOLEAN, CLOSE_ALL_RESULTS, CLOSE_CURRENT_RESULT, closed, colMetaData, connection, currentResult, cursorName, DATALINK, DEFAULT_FETCH_SIZE, escapeProcessing, EXECUTE_FAILED, fetchDirection, fetchSize, genKeyResultSet, KEEP_CURRENT_RESULT, maxFieldSize, maxRows, messages, NO_GENERATED_KEYS, openResultSets, queryTimeout, resultQueue, resultSetConcurrency, resultSetType, RETURN_GENERATED_KEYS, SUCCESS_NO_INFO, tds, updateCount`

Constructor Summary
`(package private)` | `JtdsPreparedStatement(ConnectionJDBC2 connection, java.lang.String sql, int resultSetType, int concurrency, boolean returnKeys)` Construct a new preparedStatement object.

Method Summary
`void` | `addBatch()`
`void` | `addBatch(java.lang.String sql)`
`protected void` | `checkOpen()` Check that this statement is still open.
`void` | `clearParameters()`
`void` | `close()`
`boolean` | `execute()`
`boolean` | `execute(java.lang.String sql)`
`boolean` | `execute(java.lang.String arg0, int arg1)`
`boolean` | `execute(java.lang.String arg0, int[] arg1)`
`boolean` | `execute(java.lang.String arg0, java.lang.String[] arg1)`
`protected java.sql.SQLException` | `executeMSBatch(int size, int executeSize, java.util.ArrayList counts)` Execute the SQL batch on a MS server.
`java.sql.ResultSet` | `executeQuery()`
`java.sql.ResultSet` | `executeQuery(java.lang.String sql)`
`protected java.sql.SQLException` | `executeSybaseBatch(int size, int executeSize, java.util.ArrayList counts)` Execute the SQL batch on a Sybase server.
`int` | `executeUpdate()`
`int` | `executeUpdate(java.lang.String sql)`
`int` | `executeUpdate(java.lang.String sql, int getKeys)`
`int` | `executeUpdate(java.lang.String arg0, int[] arg1)`
`int` | `executeUpdate(java.lang.String arg0, java.lang.String[] arg1)`
`java.sql.ResultSetMetaData` | `getMetaData()`
`protected ParamInfo` | `getParameter(int parameterIndex)` Check the supplied index and return the selected parameter.
`java.sql.ParameterMetaData` | `getParameterMetaData()`
`protected static java.lang.String` | `normalizeCall(java.lang.String sql)` This method converts native call syntax into (hopefully) valid JDBC escape syntax.
`protected void` | `notSupported(java.lang.String method)` Report that user tried to call a method not supported on this type of statement.
`void` | `setArray(int arg0, java.sql.Array arg1)`
`void` | `setAsciiStream(int parameterIndex, java.io.InputStream inputStream, int length)`
`void` | `setBigDecimal(int parameterIndex, java.math.BigDecimal x)`
`void` | `setBinaryStream(int parameterIndex, java.io.InputStream x, int length)`
`void` | `setBlob(int parameterIndex, java.sql.Blob x)`
`void` | `setBoolean(int parameterIndex, boolean x)`
`void` | `setByte(int parameterIndex, byte x)`
`void` | `setBytes(int parameterIndex, byte[] x)`
`void` | `setCharacterStream(int parameterIndex, java.io.Reader reader, int length)`
`void` | `setClob(int parameterIndex, java.sql.Clob x)`
`(package private) void` | `setColMetaData(ColInfo[] value)` Update the cached column meta data information.
`void` | `setDate(int parameterIndex, java.sql.Date x)`
`void` | `setDate(int parameterIndex, java.sql.Date x, java.util.Calendar cal)`
`void` | `setDouble(int parameterIndex, double x)`
`void` | `setFloat(int parameterIndex, float x)`
`void` | `setInt(int parameterIndex, int x)`
`void` | `setLong(int parameterIndex, long x)`
`void` | `setNull(int parameterIndex, int sqlType)`
`void` | `setNull(int parameterIndex, int sqlType, java.lang.String typeName)`
`void` | `setObject(int parameterIndex, java.lang.Object x)`
`void` | `setObject(int parameterIndex, java.lang.Object x, int targetSqlType)`
`void` | `setObject(int parameterIndex, java.lang.Object x, int targetSqlType, int scale)`
`void` | `setObjectBase(int parameterIndex, java.lang.Object x, int targetSqlType, int scale)` Generic setObject method.
`protected void` | `setParameter(int parameterIndex, java.lang.Object x, int targetSqlType, int scale, int length)` Update the ParamInfo object for the specified parameter.
`(package private) void` | `setParamMetaData(ParamInfo[] value)` Update the cached parameter meta data information.
`void` | `setRef(int parameterIndex, java.sql.Ref x)`
`void` | `setShort(int parameterIndex, short x)`
`void` | `setString(int parameterIndex, java.lang.String x)`
`void` | `setTime(int parameterIndex, java.sql.Time x)`
`void` | `setTime(int parameterIndex, java.sql.Time x, java.util.Calendar cal)`
`void` | `setTimestamp(int parameterIndex, java.sql.Timestamp x)`
`void` | `setTimestamp(int parameterIndex, java.sql.Timestamp x, java.util.Calendar cal)`
`void` | `setUnicodeStream(int parameterIndex, java.io.InputStream inputStream, int length)`
`void` | `setURL(int parameterIndex, java.net.URL url)`

Methods inherited from class net.sourceforge.jtds.jdbc.JtdsStatement
`addWarning, cacheResults, cancel, checkCursorException, clearBatch, clearWarnings, closeAllResultSets, closeCurrentResultSet, executeBatch, executeImpl, executeSQL, executeSQLQuery, finalize, getConnection, getDefaultFetchSize, getFetchDirection, getFetchSize, getGeneratedKeys, getMaxFieldSize, getMaxRows, getMessages, getMoreResults, getMoreResults, getQueryTimeout, getResultSet, getResultSetConcurrency, getResultSetHoldability, getResultSetType, getTds, getUpdateCount, getWarnings, initialize, notImplemented, processResults, setCursorName, setEscapeProcessing, setFetchDirection, setFetchSize, setMaxFieldSize, setMaxRows, setQueryTimeout, useCursor`

Methods inherited from class java.lang.Object
`, clone, equals, getClass, hashCode, notify, notifyAll, registerNatives, toString, wait, wait, wait`

Methods inherited from interface java.sql.Statement
`cancel, clearBatch, clearWarnings, executeBatch, getConnection, getFetchDirection, getFetchSize, getMaxFieldSize, getMaxRows, getMoreResults, getQueryTimeout, getResultSet, getResultSetConcurrency, getResultSetType, getUpdateCount, getWarnings, setCursorName, setEscapeProcessing, setFetchDirection, setFetchSize, setMaxFieldSize, setMaxRows, setQueryTimeout`

Field Detail

### sql

    protected final java.lang.String sql

  The SQL statement being prepared.

### sqlWord

    protected java.lang.String sqlWord

  The first SQL keyword in the SQL string.

### procName

    protected java.lang.String procName

  The procedure name for CallableStatements.

### parameters

    protected ParamInfo[] parameters

  The parameter list for the call.

### returnKeys

    private boolean returnKeys

  True to return generated keys.

### paramMetaData

    protected ParamInfo[] paramMetaData

  The cached parameter meta data.

### f

    private static final java.text.NumberFormat f

  Used to format numeric values when scale is specified.

### handles

    java.util.Collection handles

  Collection of handles used by this statement

Constructor Detail

### JtdsPreparedStatement

    JtdsPreparedStatement(ConnectionJDBC2 connection,
                          java.lang.String sql,
                          int resultSetType,
                          int concurrency,
                          boolean returnKeys)
                    throws java.sql.SQLException

  Construct a new preparedStatement object.
  Parameters:
    `connection` - The parent connection.
    `sql` - The SQL statement to prepare.
    `resultSetType` - The result set type eg SCROLLABLE etc.
    `concurrency` - The result set concurrency eg READONLY.
    `returnKeys` - True if generated keys should be returned.
  Throws:
    `java.sql.SQLException` -

Method Detail

### normalizeCall

    protected static java.lang.String normalizeCall(java.lang.String sql)

  This method converts native call syntax into (hopefully) valid JDBC escape syntax.

  Note: This method is required for backwards compatibility with previous versions of jTDS. Strictly speaking only the JDBC syntax needs to be recognised, constructions such as "?=#testproc ?,?" are neither valid native syntax nor valid escapes. All the substrings and trims below are not as bad as they look. The objects created all refer back to the original sql string it is just the start and length positions which change.
  Parameters:
    `sql` - the SQL statement to process
  Returns:
    the SQL, possibly in original form

### checkOpen

    protected void checkOpen()
                      throws java.sql.SQLException

  Check that this statement is still open.
  Overrides:
    `checkOpen` in class `JtdsStatement`
  Throws:
    `java.sql.SQLException` - if statement closed.

### notSupported

    protected void notSupported(java.lang.String method)
                         throws java.sql.SQLException

  Report that user tried to call a method not supported on this type of statement.
  Parameters:
    `method` - The method name to report in the error message.
  Throws:
    `java.sql.SQLException` -

### executeMSBatch

    protected java.sql.SQLException executeMSBatch(int size,
                                                   int executeSize,
                                                   java.util.ArrayList counts)
                                            throws java.sql.SQLException

  Execute the SQL batch on a MS server.

  When running with `prepareSQL=1` or `3`, the driver will first prepare temporary stored procedures or statements for each parameter combination found in the batch. The handles to these pre-preared statements will then be used to execute the actual batch statements.
  Overrides:
    `executeMSBatch` in class `JtdsStatement`
  Parameters:
    `size` - the total size of the batch
    `executeSize` - the maximum number of statements to send in one request
    `counts` - the returned update counts
  Returns:
    chained exceptions linked to a `SQLException`
  Throws:
    `java.sql.SQLException` - if a serious error occurs during execution

### executeSybaseBatch

    protected java.sql.SQLException executeSybaseBatch(int size,
                                                       int executeSize,
                                                       java.util.ArrayList counts)
                                                throws java.sql.SQLException

  Execute the SQL batch on a Sybase server.

  Sybase needs to have the SQL concatenated into one TDS language packet followed by up to 1000 parameters. This method will be overriden for `CallableStatements`.
  Overrides:
    `executeSybaseBatch` in class `JtdsStatement`
  Parameters:
    `size` - the total size of the batch
    `executeSize` - the maximum number of statements to send in one request
    `counts` - the returned update counts
  Returns:
    chained exceptions linked to a `SQLException`
  Throws:
    `java.sql.SQLException` - if a serious error occurs during execution

### getParameter

    protected ParamInfo getParameter(int parameterIndex)
                              throws java.sql.SQLException

  Check the supplied index and return the selected parameter.
  Parameters:
    `parameterIndex` - the parameter index 1 to n.
  Returns:
    the parameter as a `ParamInfo` object.
  Throws:
    `java.sql.SQLException` - if the statement is closed; if `parameterIndex` is less than 0; if `parameterIndex` is greater than the number of parameters; if `checkIfSet` was `true` and the parameter was not set

### setObjectBase

    public void setObjectBase(int parameterIndex,
                              java.lang.Object x,
                              int targetSqlType,
                              int scale)
                       throws java.sql.SQLException

  Generic setObject method.
  Parameters:
    `parameterIndex` - Parameter index 1 to n.
    `x` - The value to set.
    `targetSqlType` - The java.sql.Types constant describing the data.
    `scale` - The decimal scale -1 if not set.

### setParameter

    protected void setParameter(int parameterIndex,
                                java.lang.Object x,
                                int targetSqlType,
                                int scale,
                                int length)
                         throws java.sql.SQLException

  Update the ParamInfo object for the specified parameter.
  Parameters:
    `parameterIndex` - Parameter index 1 to n.
    `x` - The value to set.
    `targetSqlType` - The java.sql.Types constant describing the data.
    `scale` - The decimal scale -1 if not set.
    `length` - The length of the data item.

### setColMetaData

    void setColMetaData(ColInfo[] value)

  Update the cached column meta data information.
  Parameters:
    `value` - The Column meta data array.

### setParamMetaData

    void setParamMetaData(ParamInfo[] value)

  Update the cached parameter meta data information.
  Parameters:
    `value` - The Column meta data array.

### close

    public void close()
               throws java.sql.SQLException

  Specified by:
    `close` in interface `java.sql.Statement`
  Overrides:
    `close` in class `JtdsStatement`

### executeUpdate

    public int executeUpdate()
                      throws java.sql.SQLException

  Specified by:
    `executeUpdate` in interface `java.sql.PreparedStatement`

### addBatch

    public void addBatch()
                  throws java.sql.SQLException

  Specified by:
    `addBatch` in interface `java.sql.PreparedStatement`

### clearParameters

    public void clearParameters()
                         throws java.sql.SQLException

  Specified by:
    `clearParameters` in interface `java.sql.PreparedStatement`

### execute

    public boolean execute()
                    throws java.sql.SQLException

  Specified by:
    `execute` in interface `java.sql.PreparedStatement`

### setByte

    public void setByte(int parameterIndex,
                        byte x)
                 throws java.sql.SQLException

  Specified by:
    `setByte` in interface `java.sql.PreparedStatement`

### setDouble

    public void setDouble(int parameterIndex,
                          double x)
                   throws java.sql.SQLException

  Specified by:
    `setDouble` in interface `java.sql.PreparedStatement`

### setFloat

    public void setFloat(int parameterIndex,
                         float x)
                  throws java.sql.SQLException

  Specified by:
    `setFloat` in interface `java.sql.PreparedStatement`

### setInt

    public void setInt(int parameterIndex,
                       int x)
                throws java.sql.SQLException

  Specified by:
    `setInt` in interface `java.sql.PreparedStatement`

### setNull

    public void setNull(int parameterIndex,
                        int sqlType)
                 throws java.sql.SQLException

  Specified by:
    `setNull` in interface `java.sql.PreparedStatement`

### setLong

    public void setLong(int parameterIndex,
                        long x)
                 throws java.sql.SQLException

  Specified by:
    `setLong` in interface `java.sql.PreparedStatement`

### setShort

    public void setShort(int parameterIndex,
                         short x)
                  throws java.sql.SQLException

  Specified by:
    `setShort` in interface `java.sql.PreparedStatement`

### setBoolean

    public void setBoolean(int parameterIndex,
                           boolean x)
                    throws java.sql.SQLException

  Specified by:
    `setBoolean` in interface `java.sql.PreparedStatement`

### setBytes

    public void setBytes(int parameterIndex,
                         byte[] x)
                  throws java.sql.SQLException

  Specified by:
    `setBytes` in interface `java.sql.PreparedStatement`

### setAsciiStream

    public void setAsciiStream(int parameterIndex,
                               java.io.InputStream inputStream,
                               int length)
                        throws java.sql.SQLException

  Specified by:
    `setAsciiStream` in interface `java.sql.PreparedStatement`

### setBinaryStream

    public void setBinaryStream(int parameterIndex,
                                java.io.InputStream x,
                                int length)
                         throws java.sql.SQLException

  Specified by:
    `setBinaryStream` in interface `java.sql.PreparedStatement`

### setUnicodeStream

    public void setUnicodeStream(int parameterIndex,
                                 java.io.InputStream inputStream,
                                 int length)
                          throws java.sql.SQLException

  Specified by:
    `setUnicodeStream` in interface `java.sql.PreparedStatement`

### setCharacterStream

    public void setCharacterStream(int parameterIndex,
                                   java.io.Reader reader,
                                   int length)
                            throws java.sql.SQLException

  Specified by:
    `setCharacterStream` in interface `java.sql.PreparedStatement`

### setObject

    public void setObject(int parameterIndex,
                          java.lang.Object x)
                   throws java.sql.SQLException

  Specified by:
    `setObject` in interface `java.sql.PreparedStatement`

### setObject

    public void setObject(int parameterIndex,
                          java.lang.Object x,
                          int targetSqlType)
                   throws java.sql.SQLException

  Specified by:
    `setObject` in interface `java.sql.PreparedStatement`

### setObject

    public void setObject(int parameterIndex,
                          java.lang.Object x,
                          int targetSqlType,
                          int scale)
                   throws java.sql.SQLException

  Specified by:
    `setObject` in interface `java.sql.PreparedStatement`

### setNull

    public void setNull(int parameterIndex,
                        int sqlType,
                        java.lang.String typeName)
                 throws java.sql.SQLException

  Specified by:
    `setNull` in interface `java.sql.PreparedStatement`

### setString

    public void setString(int parameterIndex,
                          java.lang.String x)
                   throws java.sql.SQLException

  Specified by:
    `setString` in interface `java.sql.PreparedStatement`

### setBigDecimal

    public void setBigDecimal(int parameterIndex,
                              java.math.BigDecimal x)
                       throws java.sql.SQLException

  Specified by:
    `setBigDecimal` in interface `java.sql.PreparedStatement`

### setURL

    public void setURL(int parameterIndex,
                       java.net.URL url)
                throws java.sql.SQLException

### setArray

    public void setArray(int arg0,
                         java.sql.Array arg1)
                  throws java.sql.SQLException

  Specified by:
    `setArray` in interface `java.sql.PreparedStatement`

### setBlob

    public void setBlob(int parameterIndex,
                        java.sql.Blob x)
                 throws java.sql.SQLException

  Specified by:
    `setBlob` in interface `java.sql.PreparedStatement`

### setClob

    public void setClob(int parameterIndex,
                        java.sql.Clob x)
                 throws java.sql.SQLException

  Specified by:
    `setClob` in interface `java.sql.PreparedStatement`

### setDate

    public void setDate(int parameterIndex,
                        java.sql.Date x)
                 throws java.sql.SQLException

  Specified by:
    `setDate` in interface `java.sql.PreparedStatement`

### getParameterMetaData

    public java.sql.ParameterMetaData getParameterMetaData()
                                                    throws java.sql.SQLException

### setRef

    public void setRef(int parameterIndex,
                       java.sql.Ref x)
                throws java.sql.SQLException

  Specified by:
    `setRef` in interface `java.sql.PreparedStatement`

### executeQuery

    public java.sql.ResultSet executeQuery()
                                    throws java.sql.SQLException

  Specified by:
    `executeQuery` in interface `java.sql.PreparedStatement`

### getMetaData

    public java.sql.ResultSetMetaData getMetaData()
                                           throws java.sql.SQLException

  Specified by:
    `getMetaData` in interface `java.sql.PreparedStatement`

### setTime

    public void setTime(int parameterIndex,
                        java.sql.Time x)
                 throws java.sql.SQLException

  Specified by:
    `setTime` in interface `java.sql.PreparedStatement`

### setTimestamp

    public void setTimestamp(int parameterIndex,
                             java.sql.Timestamp x)
                      throws java.sql.SQLException

  Specified by:
    `setTimestamp` in interface `java.sql.PreparedStatement`

### setDate

    public void setDate(int parameterIndex,
                        java.sql.Date x,
                        java.util.Calendar cal)
                 throws java.sql.SQLException

  Specified by:
    `setDate` in interface `java.sql.PreparedStatement`

### setTime

    public void setTime(int parameterIndex,
                        java.sql.Time x,
                        java.util.Calendar cal)
                 throws java.sql.SQLException

  Specified by:
    `setTime` in interface `java.sql.PreparedStatement`

### setTimestamp

    public void setTimestamp(int parameterIndex,
                             java.sql.Timestamp x,
                             java.util.Calendar cal)
                      throws java.sql.SQLException

  Specified by:
    `setTimestamp` in interface `java.sql.PreparedStatement`

### executeUpdate

    public int executeUpdate(java.lang.String sql)
                      throws java.sql.SQLException

  Specified by:
    `executeUpdate` in interface `java.sql.Statement`
  Overrides:
    `executeUpdate` in class `JtdsStatement`

### addBatch

    public void addBatch(java.lang.String sql)
                  throws java.sql.SQLException

  Specified by:
    `addBatch` in interface `java.sql.Statement`
  Overrides:
    `addBatch` in class `JtdsStatement`

### execute

    public boolean execute(java.lang.String sql)
                    throws java.sql.SQLException

  Specified by:
    `execute` in interface `java.sql.Statement`
  Overrides:
    `execute` in class `JtdsStatement`

### executeUpdate

    public int executeUpdate(java.lang.String sql,
                             int getKeys)
                      throws java.sql.SQLException

  Overrides:
    `executeUpdate` in class `JtdsStatement`

### execute

    public boolean execute(java.lang.String arg0,
                           int arg1)
                    throws java.sql.SQLException

  Overrides:
    `execute` in class `JtdsStatement`

### executeUpdate

    public int executeUpdate(java.lang.String arg0,
                             int[] arg1)
                      throws java.sql.SQLException

  Overrides:
    `executeUpdate` in class `JtdsStatement`

### execute

    public boolean execute(java.lang.String arg0,
                           int[] arg1)
                    throws java.sql.SQLException

  Overrides:
    `execute` in class `JtdsStatement`

### executeUpdate

    public int executeUpdate(java.lang.String arg0,
                             java.lang.String[] arg1)
                      throws java.sql.SQLException

  Overrides:
    `executeUpdate` in class `JtdsStatement`

### execute

    public boolean execute(java.lang.String arg0,
                           java.lang.String[] arg1)
                    throws java.sql.SQLException

  Overrides:
    `execute` in class `JtdsStatement`

### executeQuery

    public java.sql.ResultSet executeQuery(java.lang.String sql)
                                    throws java.sql.SQLException

  Specified by:
    `executeQuery` in interface `java.sql.Statement`
  Overrides:
    `executeQuery` in class `JtdsStatement`

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Generated on August 22 2007