Support (jTDS API)
Keywords: net.sourceforge.jtds.jdbc.Support class

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

## net.sourceforge.jtds.jdbc
Class Support

    java.lang.Object
      net.sourceforge.jtds.jdbc.Support

public class Support
extends java.lang.Object

This class contains static utility methods designed to support the main driver classes.

Implementation notes:

1. The methods in this class incorporate some code from previous versions of jTDS to handle dates, BLobs etc.
2. This class contains routines to generate runtime messages from the resource file.
3. The key data conversion logic used in Statements and result sets is implemented here.
4. There is nothing here which is TDS specific.

Version:
  $Id: Support.java,v 1.56.2.5 2009/10/22 07:28:23 ickzon Exp $
Author:
  Mike Hutchinson, jTDS project

Field Summary
`private static java.math.BigDecimal` | `BIG_DECIMAL_ONE`
`private static java.math.BigDecimal` | `BIG_DECIMAL_ZERO`
`private static java.lang.ThreadLocal` | `calendar` Thread-bound utility Calendar object.
`private static java.sql.Date` | `DATE_ZERO`
`private static java.lang.Double` | `DOUBLE_ONE`
`private static java.lang.Double` | `DOUBLE_ZERO`
`private static java.lang.Float` | `FLOAT_ONE`
`private static java.lang.Float` | `FLOAT_ZERO`
`private static char[]` | `hex` Hex constants to use in conversion routines.
`private static java.lang.Integer` | `INTEGER_ONE`
`private static java.lang.Integer` | `INTEGER_ZERO`
`private static java.lang.Long` | `LONG_ONE`
`private static java.lang.Long` | `LONG_ZERO`
`private static java.math.BigInteger` | `MAX_VALUE_28`
`private static java.math.BigInteger` | `MAX_VALUE_38`
`private static java.math.BigDecimal` | `MAX_VALUE_LONG_BD`
`private static java.math.BigInteger` | `MAX_VALUE_LONG_BI`
`private static java.math.BigDecimal` | `MIN_VALUE_LONG_BD`
`private static java.math.BigInteger` | `MIN_VALUE_LONG_BI`
`private static java.sql.Time` | `TIME_ZERO`
`private static java.util.HashMap` | `typeMap` Convert java clases to java.sql.Type constant.

Constructor Summary
`private` | `Support()`

Method Summary
`(package private) static int` | `calculateNamedPipeBufferSize(int tdsVersion, int packetSize)` Calculate the buffer size to use when buffering the `InputStream` for named pipes.
`(package private) static java.lang.Object` | `castNumeric(java.lang.Object orig, int sourceType, int targetType)`
`(package private) static java.lang.Object` | `convert(java.lang.Object callerReference, java.lang.Object x, int jdbcType, java.lang.String charSet)` Convert an existing data object to the specified JDBC type.
`static java.lang.Object` | `convertLOB(java.lang.Object value)` Converts a LOB to the equivalent Java type, i.e.
`static int` | `convertLOBType(int type)` Converts a LOB type constant to the equivalent Java type constant, i.e.
`(package private) static void` | `embedData(java.lang.StringBuffer buf, java.lang.Object value, boolean isUnicode, ConnectionJDBC2 connection)` Embed the data object as a string literal in the buffer supplied.
`(package private) static byte[]` | `encodeString(java.lang.String cs, java.lang.String value)` Encode a string into a byte array using the specified character set.
`(package private) static java.lang.String` | `getClassName(int jdbcType)` Retrieve the fully qualified java class name for the supplied JDBC Types constant.
`private static ConnectionJDBC2` | `getConnection(java.lang.Object callerReference)` Returns the connection for a given `ResultSet`, `Statement` or `Connection` object.
`(package private) static int` | `getJdbcType(java.lang.Class typeClass)` Get the JDBC type constant which matches the supplied `Class`.
`(package private) static int` | `getJdbcType(java.lang.Object value)` Get the JDBC type constant which matches the supplied Object type.
`(package private) static java.lang.String` | `getJdbcTypeName(int jdbcType)` Get a String describing the supplied JDBC type constant.
`(package private) static java.lang.String` | `getParameterDefinitions(ParamInfo[] parameters)` Constructs a parameter definition string for use with sp_executesql, sp_prepare, sp_prepexec, sp_cursoropen, sp_cursorprepare and sp_cursorprepexec.
`(package private) static java.lang.String` | `getStatementKey(java.lang.String sql, ParamInfo[] params, int serverType, java.lang.String catalog, boolean autoCommit, boolean cursor)` Generates a unique statement key for a given SQL statement.
`static boolean` | `isWindowsOS()` Checks the `os.name` system property to see if it starts with "windows".
`static java.lang.Throwable` | `linkException(java.lang.Exception exception, java.lang.Throwable cause)` Link the original cause to an `Exception`.
`static java.sql.SQLException` | `linkException(java.sql.SQLException sqle, java.lang.Throwable cause)` Link the original cause to an `SQLException`.
`static java.sql.SQLWarning` | `linkException(java.sql.SQLWarning sqle, java.lang.Throwable cause)` Link the original cause to an `SQLWarning`.
`(package private) static java.math.BigDecimal` | `normalizeBigDecimal(java.math.BigDecimal value, int maxPrecision)` Normalize a BigDecimal value so that it fits within the available precision.
`(package private) static java.lang.String` | `substituteParameters(java.lang.String sql, ParamInfo[] list, ConnectionJDBC2 connection)` Substitute actual data for the parameter markers to simulate parameter substitution in a PreparedStatement.
`(package private) static java.lang.String` | `substituteParamMarkers(java.lang.String sql, ParamInfo[] list)` Update the SQL string and replace the ?
`static long` | `timeFromZone(java.util.Date value, java.util.Calendar target)` Convert a timestamp from a different Timezone.
`static long` | `timeToZone(java.util.Date value, java.util.Calendar target)` Convert a timestamp to a different Timezone.
`static java.lang.String` | `toHex(byte[] bytes)` Convert a byte[] object to a hex string.

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

Field Detail

### INTEGER_ZERO

    private static final java.lang.Integer INTEGER_ZERO

### INTEGER_ONE

    private static final java.lang.Integer INTEGER_ONE

### LONG_ZERO

    private static final java.lang.Long LONG_ZERO

### LONG_ONE

    private static final java.lang.Long LONG_ONE

### FLOAT_ZERO

    private static final java.lang.Float FLOAT_ZERO

### FLOAT_ONE

    private static final java.lang.Float FLOAT_ONE

### DOUBLE_ZERO

    private static final java.lang.Double DOUBLE_ZERO

### DOUBLE_ONE

    private static final java.lang.Double DOUBLE_ONE

### BIG_DECIMAL_ZERO

    private static final java.math.BigDecimal BIG_DECIMAL_ZERO

### BIG_DECIMAL_ONE

    private static final java.math.BigDecimal BIG_DECIMAL_ONE

### DATE_ZERO

    private static final java.sql.Date DATE_ZERO

### TIME_ZERO

    private static final java.sql.Time TIME_ZERO

### MIN_VALUE_LONG_BI

    private static final java.math.BigInteger MIN_VALUE_LONG_BI

### MAX_VALUE_LONG_BI

    private static final java.math.BigInteger MAX_VALUE_LONG_BI

### MIN_VALUE_LONG_BD

    private static final java.math.BigDecimal MIN_VALUE_LONG_BD

### MAX_VALUE_LONG_BD

    private static final java.math.BigDecimal MAX_VALUE_LONG_BD

### MAX_VALUE_28

    private static final java.math.BigInteger MAX_VALUE_28

### MAX_VALUE_38

    private static final java.math.BigInteger MAX_VALUE_38

### typeMap

    private static final java.util.HashMap typeMap

  Convert java clases to java.sql.Type constant.

### hex

    private static final char[] hex

  Hex constants to use in conversion routines.

### calendar

    private static final java.lang.ThreadLocal calendar

  Thread-bound utility Calendar object.

Constructor Detail

### Support

    private Support()

Method Detail

### toHex

    public static java.lang.String toHex(byte[] bytes)

  Convert a byte[] object to a hex string.

  Parameters:
    `bytes` - The byte array to convert.
  Returns:
    The hex equivalent as a `String`.

### normalizeBigDecimal

    static java.math.BigDecimal normalizeBigDecimal(java.math.BigDecimal value,
                                                    int maxPrecision)
                                             throws java.sql.SQLException

  Normalize a BigDecimal value so that it fits within the available precision.

  Parameters:
    `value` - The decimal value to normalize.
    `maxPrecision` - The decimal precision supported by the server (assumed to be a value of either 28 or 38).
  Returns:
    The possibly normalized decimal value as a `BigDecimal`.
  Throws:
    `java.sql.SQLException` - If the number is too big.

### castNumeric

    static java.lang.Object castNumeric(java.lang.Object orig,
                                        int sourceType,
                                        int targetType)

### convert

    static java.lang.Object convert(java.lang.Object callerReference,
                                    java.lang.Object x,
                                    int jdbcType,
                                    java.lang.String charSet)
                             throws java.sql.SQLException

  Convert an existing data object to the specified JDBC type.

  Parameters:
    `callerReference` - an object reference to the caller of this method; must be a `Connection`, `Statement` or `ResultSet`
    `x` - the data object to convert
    `jdbcType` - the required type constant from `java.sql.Types`
  Returns:
    the converted data object
  Throws:
    `java.sql.SQLException` - if the conversion is not supported or fails

### getJdbcType

    static int getJdbcType(java.lang.Object value)

  Get the JDBC type constant which matches the supplied Object type.

  Parameters:
    `value` - The object to analyse.
  Returns:
    The JDBC type constant as an `int`.

### getJdbcType

    static int getJdbcType(java.lang.Class typeClass)

  Get the JDBC type constant which matches the supplied `Class`.

  Parameters:
    `typeClass` - the `Class` to analyse
  Returns:
    the JDBC type constant as an `int`

### getJdbcTypeName

    static java.lang.String getJdbcTypeName(int jdbcType)

  Get a String describing the supplied JDBC type constant.

  Parameters:
    `jdbcType` - The constant to be decoded.
  Returns:
    The text decode of the type constant as a `String`.

### getClassName

    static java.lang.String getClassName(int jdbcType)

  Retrieve the fully qualified java class name for the supplied JDBC Types constant.

  Parameters:
    `jdbcType` - The JDBC Types constant.
  Returns:
    The fully qualified java class name as a `String`.

### embedData

    static void embedData(java.lang.StringBuffer buf,
                          java.lang.Object value,
                          boolean isUnicode,
                          ConnectionJDBC2 connection)
                   throws java.sql.SQLException

  Embed the data object as a string literal in the buffer supplied.

  Parameters:
    `buf` - The buffer in which the data will be embedded.
    `value` - The data object.
    `isUnicode` - Set to `true` if Unicode strings should be used, else `false`.
    `connection` - The `ConnectionJDBC2` object.
  Throws:
    `java.sql.SQLException`

### getStatementKey

    static java.lang.String getStatementKey(java.lang.String sql,
                                            ParamInfo[] params,
                                            int serverType,
                                            java.lang.String catalog,
                                            boolean autoCommit,
                                            boolean cursor)

  Generates a unique statement key for a given SQL statement.

  Parameters:
    `sql` - the sql statement to generate the key for
    `params` - the statement parameters
    `serverType` - the type of server to generate the key for
    `catalog` - the catalog is required for uniqueness on Microsoft SQL Server
    `autoCommit` - true if in auto commit mode
    `cursor` - true if this is a prepared cursor
  Returns:
    the unique statement key

### getParameterDefinitions

    static java.lang.String getParameterDefinitions(ParamInfo[] parameters)

  Constructs a parameter definition string for use with sp_executesql, sp_prepare, sp_prepexec, sp_cursoropen, sp_cursorprepare and sp_cursorprepexec.

  Parameters:
    `parameters` - Parameters to construct the definition for
  Returns:
    a parameter definition string

### substituteParamMarkers

    static java.lang.String substituteParamMarkers(java.lang.String sql,
                                                   ParamInfo[] list)

  Update the SQL string and replace the ? markers with parameter names eg @P0, @P1 etc.

  Parameters:
    `sql` - the SQL containing markers to substitute
    `list` - the parameter list
  Returns:
    the modified SQL as a `String`

### substituteParameters

    static java.lang.String substituteParameters(java.lang.String sql,
                                                 ParamInfo[] list,
                                                 ConnectionJDBC2 connection)
                                          throws java.sql.SQLException

  Substitute actual data for the parameter markers to simulate parameter substitution in a PreparedStatement.

  Parameters:
    `sql` - The SQL containing parameter markers to substitute.
    `list` - The parameter descriptors.
    `connection` - The current connection.
  Returns:
    The modified SQL statement.
  Throws:
    `java.sql.SQLException`

### encodeString

    static byte[] encodeString(java.lang.String cs,
                               java.lang.String value)

  Encode a string into a byte array using the specified character set.

  Parameters:
    `cs` - The Charset name.
    `value` - The value to encode.
  Returns:
    The value of the String as a `byte[]`.

### linkException

    public static java.sql.SQLWarning linkException(java.sql.SQLWarning sqle,
                                                    java.lang.Throwable cause)

  Link the original cause to an `SQLWarning`.

  This convenience method calls `linkException(Exception, Throwable)` and casts the result for cleaner code elsewhere.

  Parameters:
    `sqle` - The `SQLWarning` to enhance.
    `cause` - The `Throwable` to link.
  Returns:
    The original `SQLWarning` object.

### linkException

    public static java.sql.SQLException linkException(java.sql.SQLException sqle,
                                                      java.lang.Throwable cause)

  Link the original cause to an `SQLException`.

  This convenience method calls `linkException(Exception, Throwable)` and casts the result for cleaner code elsewhere.

  Parameters:
    `sqle` - The `SQLException` to enhance.
    `cause` - The `Throwable` to link.
  Returns:
    The original `SQLException` object.

### linkException

    public static java.lang.Throwable linkException(java.lang.Exception exception,
                                                    java.lang.Throwable cause)

  Link the original cause to an `Exception`.

  If running under JVM 1.4+ the `Throwable.initCause(Throwable)` method will be invoked to chain the exception, else the exception is logged via the `Logger` class. Modeled after the code written by Brian Heineman.

  Parameters:
    `exception` - The `Exception` to enhance.
    `cause` - The `Throwable` to link.
  Returns:
    The original `Exception` object.

### timeToZone

    public static long timeToZone(java.util.Date value,
                                  java.util.Calendar target)

  Convert a timestamp to a different Timezone.

  Parameters:
    `value` - the timestamp value
    `target` - the `Calendar` containing the TimeZone
  Returns:
    the new timestamp value as a `long`

### timeFromZone

    public static long timeFromZone(java.util.Date value,
                                    java.util.Calendar target)

  Convert a timestamp from a different Timezone.

  Parameters:
    `value` - the timestamp value.
    `target` - the Calendar containing the TimeZone.
  Returns:
    The new timestamp value as a `long`.

### convertLOB

    public static java.lang.Object convertLOB(java.lang.Object value)
                                       throws java.sql.SQLException

  Converts a LOB to the equivalent Java type, i.e. `Clob` to `String` and `Blob` to `byte[]`. If the value passed is not a LOB object, it is left unchanged and no exception is thrown; the idea is to transparently convert only LOBs.

  Parameters:
    `value` - an object that may be a LOB
  Returns:
    if the value was a LOB, the equivalent Java object, otherwise the original value
  Throws:
    `java.sql.SQLException` - if an error occurs while reading the LOB contents

### convertLOBType

    public static int convertLOBType(int type)

  Converts a LOB type constant to the equivalent Java type constant, i.e. `Types.CLOB` to `Types.LONGVARCHAR` and `Types.BLOB` to `Types.LONGVARBINARY`. If the type passed is not that of a LOB, it is left unchanged and no exception is thrown; the idea is to transparently convert only LOB types.

  Parameters:
    `type` - a `Types` constant defining a JDBC type, possibly a LOB
  Returns:
    if the type was that of a LOB, the equivalent Java object type, otherwise the original type

### isWindowsOS

    public static boolean isWindowsOS()

  Checks the `os.name` system property to see if it starts with "windows".

  Returns:
    `true` if `os.name` starts with "windows", else `false`.

### getConnection

    private static ConnectionJDBC2 getConnection(java.lang.Object callerReference)

  Returns the connection for a given `ResultSet`, `Statement` or `Connection` object.

  Parameters:
    `callerReference` - an object reference to the caller of this method; must be a `Connection`, `Statement` or `ResultSet`
  Returns:
    a connection

### calculateNamedPipeBufferSize

    static int calculateNamedPipeBufferSize(int tdsVersion,
                                            int packetSize)

  Calculate the buffer size to use when buffering the `InputStream` for named pipes.

  The buffer size is tied directly to the packet size because each request to the `SmbNamedPipe` will send a request for a particular size of packet. In other words, if you only request 1 byte, the `SmbNamedPipe` will send a request out and only ask for 1 byte back. Buffering the expected packet size ensures that all of the data will be returned in the buffer without wasting any space.

  Parameters:
    `tdsVersion` - the TDS version for the connection
    `packetSize` - requested packet size for the connection
  Returns:
    minimum default packet size if `packetSize == 0`, else `packetSize`

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

Generated on December 30 2009