TdsData (jTDS API)
Date: 2013-06-08

net.sourceforge.jtds.jdbc

## Class TdsData

- java.lang.Object
- - net.sourceforge.jtds.jdbc.TdsData

-     public class TdsData
      extends java.lang.Object

  Implement TDS data types and related I/O logic.

  Implementation notes:

- This class encapsulates all the knowledge about reading and writing TDS data descriptors and related application data.
- There are four key methods supplied here:
  1. readType() - Reads the column and parameter meta data.
  2. readData() - Reads actual data values.
  3. writeParam() - Write parameter descriptors and data.
  4. getNativeType() - knows how to map JDBC data types to the equivalent TDS type.

Version:
  $Id: TdsData.java,v 1.60.2.3 2009-11-05 10:42:18 ickzon Exp $
Author:
  Mike Hutchinson, Alin Sinpalean, freeTDS project

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `private static class` | `TdsData.TypeInfo` This class implements a descriptor for TDS data types;

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `private static int` | `DATEN`
    `private static int` | `DATETIME2N`
    `private static int` | `DATETIMEOFFSETN`
    `(package private) static int` | `DEFAULT_PRECISION_28` Default precision for SQL Server 6.5 and 7.
    `(package private) static int` | `DEFAULT_PRECISION_38` Default precision for Sybase and SQL Server 2000 and newer.
    `(package private) static int` | `DEFAULT_SCALE` Default Decimal Scale.
    `private static int` | `MS_LONGVAR_MAX`
    `private static int` | `SYB_CHUNK_SIZE`
    `private static int` | `SYB_LONGVAR_MAX`
    `private static int` | `SYBBINARY`
    `private static int` | `SYBBIT`
    `private static int` | `SYBBITN`
    `private static int` | `SYBCHAR`
    `private static int` | `SYBDATE`
    `private static int` | `SYBDATEN`
    `private static int` | `SYBDATETIME`
    `private static int` | `SYBDATETIME4`
    `private static int` | `SYBDATETIMN`
    `private static int` | `SYBDECIMAL`
    `private static int` | `SYBFLT8`
    `private static int` | `SYBFLTN`
    `private static int` | `SYBIMAGE`
    `private static int` | `SYBINT1`
    `private static int` | `SYBINT2`
    `private static int` | `SYBINT4`
    `private static int` | `SYBINT8`
    `private static int` | `SYBINTN`
    `private static int` | `SYBLONGBINARY`
    `(package private) static int` | `SYBLONGDATA`
    `private static int` | `SYBMONEY`
    `private static int` | `SYBMONEY4`
    `private static int` | `SYBMONEYN`
    `private static int` | `SYBNTEXT`
    `private static int` | `SYBNUMERIC`
    `private static int` | `SYBNVARCHAR`
    `private static int` | `SYBREAL`
    `private static int` | `SYBSINT1`
    `private static int` | `SYBSINT8`
    `private static int` | `SYBTEXT`
    `private static int` | `SYBTIME`
    `private static int` | `SYBTIMEN`
    `private static int` | `SYBUINT2`
    `private static int` | `SYBUINT4`
    `private static int` | `SYBUINT8`
    `private static int` | `SYBUINTN`
    `private static int` | `SYBUNIQUE`
    `private static int` | `SYBUNITEXT`
    `private static int` | `SYBVARBINARY`
    `private static int` | `SYBVARCHAR`
    `private static int` | `SYBVARIANT`
    `private static int` | `SYBVOID`
    `private static int` | `TIMEN`
    `private static TdsData.TypeInfo[]` | `types` Array of TDS data type descriptors.
    `private static int` | `UDT_BINARY`
    `private static int` | `UDT_CHAR`
    `private static int` | `UDT_LONGSYSNAME`
    `private static int` | `UDT_NCHAR`
    `private static int` | `UDT_NEWSYSNAME`
    `private static int` | `UDT_NVARCHAR`
    `private static int` | `UDT_SYSNAME`
    `private static int` | `UDT_TIMESTAMP`
    `private static int` | `UDT_UNICHAR`
    `private static int` | `UDT_UNITEXT`
    `private static int` | `UDT_UNIVARCHAR`
    `private static int` | `UDT_VARBINARY`
    `private static int` | `UDT_VARCHAR`
    `private static int` | `VAR_MAX`
    `private static int` | `XML`
    `private static int` | `XSYBBINARY`
    `private static int` | `XSYBCHAR`
    `private static int` | `XSYBNCHAR`
    `private static int` | `XSYBNVARCHAR`
    `private static int` | `XSYBVARBINARY`
    `private static int` | `XSYBVARCHAR`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `private` | `TdsData()` Private constructor to prevent users creating an actual instance of this class.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `private static boolean` | `canEncode(java.lang.String value, java.lang.String charset)` Establish if a String can be converted to a byte based character set.
    `(package private) static void` | `fillInType(ColInfo ci)` Fill in the TDS native type code and all other fields for a `ColInfo` instance with the JDBC type set.
    `(package private) static int` | `getCollation(ResponseStream in, ColInfo ci)` TDS 8 supplies collation information for character data types.
    `private static java.lang.Object` | `getDatetimeValue(ResponseStream in, int type)` Get a DATETIME value from the server response stream.
    `private static java.lang.Object` | `getMoneyValue(ResponseStream in, int type)` Read a MONEY value from the server response stream.
    `static java.lang.String` | `getMSTypeName(java.lang.String typeName, int tdsType)` For SQL 2005 This routine will modify the meta data to allow the caller to distinguish between varchar(max) and text or varbinary(max) and image or nvarchar(max) and ntext.
    `(package private) static void` | `getNativeType(JtdsConnection connection, ParamInfo pi)` Retrieve the TDS native type code for the parameter.
    `(package private) static int` | `getTds5ParamSize(java.lang.String charset, boolean isWideChar, ParamInfo pi, boolean useParamNames)` Calculate the size of the parameter descriptor array for TDS 5 packets.
    `static int` | `getTdsVersion(int rawTdsVersion)` Extract the TDS protocol version from the value returned by the server in the LOGINACK packet.
    `private static java.lang.Object` | `getVariant(JtdsConnection connection, ResponseStream in)` Read a MSQL 2000 sql_variant data value from the input stream.
    `(package private) static boolean` | `isCollation(ColInfo ci)` Retrieve the collation status of the column.
    `(package private) static boolean` | `isCurrency(ColInfo ci)` Retrieve the currency status of the column.
    `(package private) static boolean` | `isMSSQL2005Plus(JtdsConnection connection)`
    `(package private) static boolean` | `isSearchable(ColInfo ci)` Retrieve the searchable status of the column.
    `(package private) static boolean` | `isSigned(ColInfo ci)` Retrieve the signed status of the column.
    `(package private) static boolean` | `isUnicode(ColInfo ci)` Determines whether the column is Unicode encoded.
    `(package private) static void` | `putCollation(RequestStream out, ParamInfo pi)` TDS 8 requires collation information for char data descriptors.
    `private static void` | `putDateTimeValue(RequestStream out, DateTime value)` Output a java.sql.Date/Time/Timestamp value to the server as a Sybase datetime value.
    `(package private) static java.lang.Object` | `readData(JtdsConnection connection, ResponseStream in, ColInfo ci)` Read the TDS data item from the Response Stream.
    `(package private) static int` | `readType(ResponseStream in, ColInfo ci)` Read the TDS datastream and populate the ColInfo parameter with data type and related information.
    `(package private) static void` | `setColumnCharset(ColInfo ci, JtdsConnection connection)` Set the `charsetInfo` field of `ci` according to the value of its `collation` field.
    `(package private) static void` | `writeParam(RequestStream out, CharsetInfo charsetInfo, byte[] collation, ParamInfo pi)` Write a parameter to the server request stream.
    `(package private) static void` | `writeTds5Param(RequestStream out, CharsetInfo charsetInfo, ParamInfo pi)` Write the actual TDS 5 parameter data.
    `(package private) static void` | `writeTds5ParamFmt(RequestStream out, java.lang.String charset, boolean isWideChar, ParamInfo pi, boolean useParamNames)` Write a TDS 5 parameter format descriptor.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### SYBCHAR

          private static final int SYBCHAR

      See Also:
        Constant Field Values

    - #### SYBVARCHAR

          private static final int SYBVARCHAR

      See Also:
        Constant Field Values

    - #### SYBINTN

          private static final int SYBINTN

      See Also:
        Constant Field Values

    - #### SYBINT1

          private static final int SYBINT1

      See Also:
        Constant Field Values

    - #### SYBDATE

          private static final int SYBDATE

      See Also:
        Constant Field Values

    - #### SYBTIME

          private static final int SYBTIME

      See Also:
        Constant Field Values

    - #### SYBINT2

          private static final int SYBINT2

      See Also:
        Constant Field Values

    - #### SYBINT4

          private static final int SYBINT4

      See Also:
        Constant Field Values

    - #### SYBINT8

          private static final int SYBINT8

      See Also:
        Constant Field Values

    - #### SYBFLT8

          private static final int SYBFLT8

      See Also:
        Constant Field Values

    - #### SYBDATETIME

          private static final int SYBDATETIME

      See Also:
        Constant Field Values

    - #### SYBBIT

          private static final int SYBBIT

      See Also:
        Constant Field Values

    - #### SYBTEXT

          private static final int SYBTEXT

      See Also:
        Constant Field Values

    - #### SYBNTEXT

          private static final int SYBNTEXT

      See Also:
        Constant Field Values

    - #### SYBIMAGE

          private static final int SYBIMAGE

      See Also:
        Constant Field Values

    - #### SYBMONEY4

          private static final int SYBMONEY4

      See Also:
        Constant Field Values

    - #### SYBMONEY

          private static final int SYBMONEY

      See Also:
        Constant Field Values

    - #### SYBDATETIME4

          private static final int SYBDATETIME4

      See Also:
        Constant Field Values

    - #### SYBREAL

          private static final int SYBREAL

      See Also:
        Constant Field Values

    - #### SYBBINARY

          private static final int SYBBINARY

      See Also:
        Constant Field Values

    - #### SYBVOID

          private static final int SYBVOID

      See Also:
        Constant Field Values

    - #### SYBVARBINARY

          private static final int SYBVARBINARY

      See Also:
        Constant Field Values

    - #### SYBNVARCHAR

          private static final int SYBNVARCHAR

      See Also:
        Constant Field Values

    - #### SYBBITN

          private static final int SYBBITN

      See Also:
        Constant Field Values

    - #### SYBNUMERIC

          private static final int SYBNUMERIC

      See Also:
        Constant Field Values

    - #### SYBDECIMAL

          private static final int SYBDECIMAL

      See Also:
        Constant Field Values

    - #### SYBFLTN

          private static final int SYBFLTN

      See Also:
        Constant Field Values

    - #### SYBMONEYN

          private static final int SYBMONEYN

      See Also:
        Constant Field Values

    - #### SYBDATETIMN

          private static final int SYBDATETIMN

      See Also:
        Constant Field Values

    - #### SYBDATEN

          private static final int SYBDATEN

      See Also:
        Constant Field Values

    - #### SYBTIMEN

          private static final int SYBTIMEN

      See Also:
        Constant Field Values

    - #### XSYBCHAR

          private static final int XSYBCHAR

      See Also:
        Constant Field Values

    - #### XSYBVARCHAR

          private static final int XSYBVARCHAR

      See Also:
        Constant Field Values

    - #### XSYBNVARCHAR

          private static final int XSYBNVARCHAR

      See Also:
        Constant Field Values

    - #### XSYBNCHAR

          private static final int XSYBNCHAR

      See Also:
        Constant Field Values

    - #### XSYBVARBINARY

          private static final int XSYBVARBINARY

      See Also:
        Constant Field Values

    - #### XSYBBINARY

          private static final int XSYBBINARY

      See Also:
        Constant Field Values

    - #### SYBUNITEXT

          private static final int SYBUNITEXT

      See Also:
        Constant Field Values

    - #### SYBLONGBINARY

          private static final int SYBLONGBINARY

      See Also:
        Constant Field Values

    - #### SYBSINT1

          private static final int SYBSINT1

      See Also:
        Constant Field Values

    - #### SYBUINT2

          private static final int SYBUINT2

      See Also:
        Constant Field Values

    - #### SYBUINT4

          private static final int SYBUINT4

      See Also:
        Constant Field Values

    - #### SYBUINT8

          private static final int SYBUINT8

      See Also:
        Constant Field Values

    - #### SYBUINTN

          private static final int SYBUINTN

      See Also:
        Constant Field Values

    - #### SYBUNIQUE

          private static final int SYBUNIQUE

      See Also:
        Constant Field Values

    - #### SYBVARIANT

          private static final int SYBVARIANT

      See Also:
        Constant Field Values

    - #### SYBSINT8

          private static final int SYBSINT8

      See Also:
        Constant Field Values

    - #### XML

          private static final int XML

      See Also:
        Constant Field Values

    - #### DATEN

          private static final int DATEN

      See Also:
        Constant Field Values

    - #### TIMEN

          private static final int TIMEN

      See Also:
        Constant Field Values

    - #### DATETIME2N

          private static final int DATETIME2N

      See Also:
        Constant Field Values

    - #### DATETIMEOFFSETN

          private static final int DATETIMEOFFSETN

      See Also:
        Constant Field Values

    - #### SYBLONGDATA

          static final int SYBLONGDATA

      See Also:
        Constant Field Values

    - #### UDT_CHAR

          private static final int UDT_CHAR

      See Also:
        Constant Field Values

    - #### UDT_VARCHAR

          private static final int UDT_VARCHAR

      See Also:
        Constant Field Values

    - #### UDT_BINARY

          private static final int UDT_BINARY

      See Also:
        Constant Field Values

    - #### UDT_VARBINARY

          private static final int UDT_VARBINARY

      See Also:
        Constant Field Values

    - #### UDT_SYSNAME

          private static final int UDT_SYSNAME

      See Also:
        Constant Field Values

    - #### UDT_NCHAR

          private static final int UDT_NCHAR

      See Also:
        Constant Field Values

    - #### UDT_NVARCHAR

          private static final int UDT_NVARCHAR

      See Also:
        Constant Field Values

    - #### UDT_UNICHAR

          private static final int UDT_UNICHAR

      See Also:
        Constant Field Values

    - #### UDT_UNIVARCHAR

          private static final int UDT_UNIVARCHAR

      See Also:
        Constant Field Values

    - #### UDT_UNITEXT

          private static final int UDT_UNITEXT

      See Also:
        Constant Field Values

    - #### UDT_LONGSYSNAME

          private static final int UDT_LONGSYSNAME

      See Also:
        Constant Field Values

    - #### UDT_TIMESTAMP

          private static final int UDT_TIMESTAMP

      See Also:
        Constant Field Values

    - #### UDT_NEWSYSNAME

          private static final int UDT_NEWSYSNAME

      See Also:
        Constant Field Values

    - #### VAR_MAX

          private static final int VAR_MAX

      See Also:
        Constant Field Values

    - #### SYB_LONGVAR_MAX

          private static final int SYB_LONGVAR_MAX

      See Also:
        Constant Field Values

    - #### MS_LONGVAR_MAX

          private static final int MS_LONGVAR_MAX

      See Also:
        Constant Field Values

    - #### SYB_CHUNK_SIZE

          private static final int SYB_CHUNK_SIZE

      See Also:
        Constant Field Values

    - #### types

          private static final TdsData.TypeInfo[] types

      Array of TDS data type descriptors.

    - #### DEFAULT_SCALE

          static final int DEFAULT_SCALE

      Default Decimal Scale.
      See Also:
        Constant Field Values

    - #### DEFAULT_PRECISION_28

          static final int DEFAULT_PRECISION_28

      Default precision for SQL Server 6.5 and 7.
      See Also:
        Constant Field Values

    - #### DEFAULT_PRECISION_38

          static final int DEFAULT_PRECISION_38

      Default precision for Sybase and SQL Server 2000 and newer.
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### TdsData

          private TdsData()

      Private constructor to prevent users creating an actual instance of this class.

  - ### Method Detail

    - #### getCollation

          static int getCollation(ResponseStream in,
                         ColInfo ci)
                           throws java.io.IOException

      TDS 8 supplies collation information for character data types.
      Parameters:
        `in` - the server response stream
        `ci` - the column descriptor
      Returns:
        the number of bytes read from the stream as an `int`
      Throws:
        `java.io.IOException`

    - #### setColumnCharset

          static void setColumnCharset(ColInfo ci,
                              JtdsConnection connection)
                                throws java.sql.SQLException

      Set the `charsetInfo` field of `ci` according to the value of its `collation` field.

      The `Connection` is used to find out whether a specific charset was requested. In this case, the column charset will be ignored.

      Parameters:
        `ci` - the `ColInfo` instance to update
        `connection` - a `Connection` instance to check whether it has a fixed charset or not
      Throws:
        `java.sql.SQLException` - if a `CharsetInfo` is not found for this particular column collation

    - #### readType

          static int readType(ResponseStream in,
                     ColInfo ci)
                       throws java.io.IOException,
                              ProtocolException

      Read the TDS datastream and populate the ColInfo parameter with data type and related information.

      The type infomation conforms to one of the following formats:

      1. [int1 type] - eg SYBINT4.
      2. [int1 type] [int1 buffersize] - eg VARCHAR < 256
      3. [int1 type] [int2 buffersize] - eg VARCHAR > 255.
      4. [int1 type] [int4 buffersize] [int1 tabnamelen] [int1*n tabname] - eg text.
      5. [int1 type] [int4 buffersize] - eg sql_variant.
      6. [int1 type] [int1 buffersize] [int1 precision] [int1 scale] - eg decimal.
      For TDS 8 large character types include a 5 byte collation field after the buffer size.
      Parameters:
        `in` - The server response stream.
        `ci` - The ColInfo column descriptor object.
      Returns:
        The number of bytes read from the input stream.
      Throws:
        `java.io.IOException`
        `ProtocolException`

    - #### readData

          static java.lang.Object readData(JtdsConnection connection,
                                  ResponseStream in,
                                  ColInfo ci)
                                    throws java.io.IOException,
                                           ProtocolException

      Read the TDS data item from the Response Stream.

      The data size is either implicit in the type for example fixed size integers, or a count field precedes the actual data. The size of the count field varies with the data type.

      Parameters:
        `connection` - an object reference to the caller of this method; must be a `Connection`, `Statement` or `ResultSet`
        `in` - The server ResponseStream.
        `ci` - The ColInfo column descriptor object.
      Returns:
        The data item Object or null.
      Throws:
        `java.io.IOException`
        `ProtocolException`

    - #### isSigned

          static boolean isSigned(ColInfo ci)

      Retrieve the signed status of the column.
      Parameters:
        `ci` - the column meta data
      Returns:
        `true` if the column is a signed numeric.

    - #### isCollation

          static boolean isCollation(ColInfo ci)

      Retrieve the collation status of the column.

      TDS 8.0 character columns include collation information.
      Parameters:
        `ci` - the column meta data
      Returns:
        `true` if the column requires collation data.

    - #### isCurrency

          static boolean isCurrency(ColInfo ci)

      Retrieve the currency status of the column.
      Parameters:
        `ci` - The column meta data.
      Returns:
        `boolean` true if the column is a currency type.

    - #### isSearchable

          static boolean isSearchable(ColInfo ci)

      Retrieve the searchable status of the column.
      Parameters:
        `ci` - the column meta data
      Returns:
        `true` if the column is not a text or image type.

    - #### isUnicode

          static boolean isUnicode(ColInfo ci)

      Determines whether the column is Unicode encoded.
      Parameters:
        `ci` - the column meta data
      Returns:
        `true` if the column is Unicode encoded

    - #### fillInType

          static void fillInType(ColInfo ci)
                          throws java.sql.SQLException

      Fill in the TDS native type code and all other fields for a `ColInfo` instance with the JDBC type set.
      Parameters:
        `ci` - the `ColInfo` instance
      Throws:
        `java.sql.SQLException`

    - #### getNativeType

          static void getNativeType(JtdsConnection connection,
                           ParamInfo pi)
                             throws java.sql.SQLException

      Retrieve the TDS native type code for the parameter.
      Parameters:
        `connection` - the connectionJDBC object
        `pi` - the parameter descriptor
      Throws:
        `java.sql.SQLException`

    - #### getTds5ParamSize

          static int getTds5ParamSize(java.lang.String charset,
                             boolean isWideChar,
                             ParamInfo pi,
                             boolean useParamNames)

      Calculate the size of the parameter descriptor array for TDS 5 packets.
      Parameters:
        `charset` - The encoding character set.
        `isWideChar` - True if multi byte encoding.
        `pi` - The parameter to describe.
        `useParamNames` - True if named parameters should be used.
      Returns:
        The size of the parameter descriptor as an `int`.

    - #### writeTds5ParamFmt

          static void writeTds5ParamFmt(RequestStream out,
                               java.lang.String charset,
                               boolean isWideChar,
                               ParamInfo pi,
                               boolean useParamNames)
                                 throws java.io.IOException

      Write a TDS 5 parameter format descriptor.
      Parameters:
        `out` - The server RequestStream.
        `charset` - The encoding character set.
        `isWideChar` - True if multi byte encoding.
        `pi` - The parameter to describe.
        `useParamNames` - True if named parameters should be used.
      Throws:
        `java.io.IOException`

    - #### writeTds5Param

          static void writeTds5Param(RequestStream out,
                            CharsetInfo charsetInfo,
                            ParamInfo pi)
                              throws java.io.IOException,
                                     java.sql.SQLException

      Write the actual TDS 5 parameter data.
      Parameters:
        `out` - the server RequestStream
        `charsetInfo` - the encoding character set
        `pi` - the parameter to output
      Throws:
        `java.io.IOException`
        `java.sql.SQLException`

    - #### putCollation

          static void putCollation(RequestStream out,
                          ParamInfo pi)
                            throws java.io.IOException

      TDS 8 requires collation information for char data descriptors.
      Parameters:
        `out` - The Server request stream.
        `pi` - The parameter descriptor.
      Throws:
        `java.io.IOException`

    - #### writeParam

          static void writeParam(RequestStream out,
                        CharsetInfo charsetInfo,
                        byte[] collation,
                        ParamInfo pi)
                          throws java.io.IOException

      Write a parameter to the server request stream.
      Parameters:
        `out` - the server request stream
        `charsetInfo` - the default character set
        `collation` - the default SQL Server 2000 collation
        `pi` - the parameter descriptor
      Throws:
        `java.io.IOException`

    - #### getDatetimeValue

          private static java.lang.Object getDatetimeValue(ResponseStream in,
                                          int type)
                                                    throws java.io.IOException,
                                                           ProtocolException

      Get a DATETIME value from the server response stream.
      Parameters:
        `in` - The server response stream.
        `type` - The TDS data type.
      Returns:
        The java.sql.Timestamp value or null.
      Throws:
        `java.io.IOException`
        `ProtocolException`

    - #### putDateTimeValue

          private static void putDateTimeValue(RequestStream out,
                              DateTime value)
                                        throws java.io.IOException

      Output a java.sql.Date/Time/Timestamp value to the server as a Sybase datetime value.
      Parameters:
        `out` - the server request stream
        `value` - the date value to write
      Throws:
        `java.io.IOException`

    - #### getMoneyValue

          private static java.lang.Object getMoneyValue(ResponseStream in,
                                       int type)
                                                 throws java.io.IOException,
                                                        ProtocolException

      Read a MONEY value from the server response stream.
      Parameters:
        `in` - The server response stream.
        `type` - The TDS data type.
      Returns:
        The java.math.BigDecimal value or null.
      Throws:
        `java.io.IOException`
        `ProtocolException`

    - #### getVariant

          private static java.lang.Object getVariant(JtdsConnection connection,
                                    ResponseStream in)
                                              throws java.io.IOException,
                                                     ProtocolException

      Read a MSQL 2000 sql_variant data value from the input stream.

      SQL_VARIANT has the following structure:

      1. INT4 total size of data
      2. INT1 TDS data type (text/image/ntext/sql_variant not allowed)
      3. INT1 Length of extra type descriptor information
      4. Optional additional type info required by some types
      5. byte[0...n] the actual data
      Parameters:
        `connection` - used to obtain collation/charset information
        `in` - the server response stream
      Returns:
        the SQL_VARIANT data
      Throws:
        `java.io.IOException`
        `ProtocolException`

    - #### getMSTypeName

          public static java.lang.String getMSTypeName(java.lang.String typeName,
                                       int tdsType)

      For SQL 2005 This routine will modify the meta data to allow the caller to distinguish between varchar(max) and text or varbinary(max) and image or nvarchar(max) and ntext.
      Parameters:
        `typeName` - the SQL type returned by sp_columns
        `tdsType` - the TDS type returned by sp_columns
      Returns:
        the (possibly) modified SQL type name as a `String`

    - #### getTdsVersion

          public static int getTdsVersion(int rawTdsVersion)

      Extract the TDS protocol version from the value returned by the server in the LOGINACK packet.
      Parameters:
        `rawTdsVersion` - the TDS protocol version as returned by the server
      Returns:
        the jTDS internal value for the protocol version (i.e one of the `Driver.TDSXX` values)

    - #### canEncode

          private static boolean canEncode(java.lang.String value,
                          java.lang.String charset)

      Establish if a String can be converted to a byte based character set.
      Parameters:
        `value` - The String to test.
        `charset` - The server character set in force.
      Returns:
        `boolean` true if string can be converted.

    - #### isMSSQL2005Plus

          static boolean isMSSQL2005Plus(JtdsConnection connection)

Generated on June 8 2013