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

net.sourceforge.jtds.jdbc

## Class JtdsConnection

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

- All Implemented Interfaces:
    java.lang.AutoCloseable, java.sql.Connection, java.sql.Wrapper

      public class JtdsConnection
      extends java.lang.Object
      implements java.sql.Connection

  jTDS implementation of the java.sql.Connection interface.

  Implementation notes:

  1. Environment setting code carried over from old jTDS otherwise generally a new implementation of Connection.
  2. Connection properties and SQLException text messages are loaded from a properties file.
  3. Character set choices are also loaded from a resource file and the original Encoder class has gone.
  4. Prepared SQL statements are converted to procedures in the prepareSQL method.
  5. Use of Stored procedures is optional and controlled via connection property.
  6. This Connection object maintains a table of weak references to associated statements. This allows the connection object to control the statements (for example to close them) but without preventing them being garbage collected in a pooled environment.
  Version:
    $Id: JtdsConnection.java,v 1.119.2.14 2010-05-17 10:27:00 ickzon Exp $
  Author:
    Mike Hutchinson, Alin Sinpalean

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `private java.lang.String` | `appName` The application name.
    `private boolean` | `autoCommit` Default auto commit state.
    `private TdsCore` | `baseTds` The cored TDS protocol object.
    `private int` | `batchSize` The maximum size of a batch.
    `private java.lang.String` | `bindAddress` The local address to bind to when connecting to a database via TCP/IP.
    `private java.io.File` | `bufferDir` The directory to buffer data to
    `private int` | `bufferMaxMemory` The global buffer memory limit for all connections (in kilobytes).
    `private int` | `bufferMinPackets` The minimum number of packets per statement to buffer to memory.
    `private TdsCore` | `cachedTds` A cached `TdsCore` instance to reuse on new statements.
    `private CharsetInfo` | `charsetInfo` Java charset for encoding.
    `private boolean` | `charsetSpecified` True if user specifies an explicit charset.
    `private boolean` | `closed` True if this connection is closed.
    `private byte[]` | `collation` SQL Server 2000 collation.
    `private static int[]` | `connections` the number of currently open connections
    `private java.lang.String` | `currentDatabase` The current database name.
    `private int` | `cursorSequenceNo` Cursor unique ID number.
    `private int` | `databaseMajorVersion` The major version number eg 11.
    `private int` | `databaseMinorVersion` The minor version number eg 92.
    `private java.lang.String` | `databaseName` The requested database name.
    `private java.lang.String` | `databaseProductName` The database product name eg SQL SERVER.
    `private java.lang.String` | `databaseProductVersion` The product version eg 11.92.
    `private java.lang.String` | `domainName` The Windows Domain name.
    `private java.lang.String` | `instanceName` The SQL Server instance.
    `private java.lang.String` | `language` The server message language.
    `private boolean` | `lastUpdateCount` Only return the last update count.
    `private long` | `lobBuffer` The amount of LOB data to buffer in memory.
    `private int` | `loginTimeout` Login timeout value in seconds or 0.
    `private java.lang.String` | `macAddress` The client MAC Address.
    `private int` | `maxPrecision` Maximum decimal precision.
    `private int` | `maxStatements` The maximum number of statements to keep open.
    `private SQLDiagnostic` | `messages` Diagnostc messages for this connection.
    `private Semaphore` | `mutex` Mutual exclusion lock to control access to connection.
    `private boolean` | `namedPipe` Use named pipe IPC instead of TCP/IP sockets.
    `private int` | `netPacketSize` The initial network packet size.
    `private int` | `packetSize` User requested packet size.
    `private java.lang.String` | `password` The user password.
    `private int` | `portNumber` The server port number.
    `private int` | `prepareSql` Method for preparing SQL used in Prepared Statements.
    `private static java.lang.Integer` | `processId` The process ID to report to a server when connecting.
    `private java.util.ArrayList` | `procInTran` Procedures in this transaction.
    `private java.lang.String` | `progName` The program name.
    `private boolean` | `readOnly` True if this connection is read only.
    `private int` | `rowCount` Connection's current rowcount limit.
    `private int` | `savepointId` Counter for generating unique savepoint identifiers
    `private java.util.Map` | `savepointProcInTran` Maps each savepoint to a list of temp procedures created since the savepoint
    `private java.util.ArrayList` | `savepoints` The list of savepoints.
    `private java.lang.String` | `serverCharset` The server character set.
    `private java.lang.String` | `serverName` The server host name.
    `private int` | `serverType` The make of SQL Server (sybase/microsoft).
    `private SharedSocket` | `socket` The network TCP/IP socket.
    `private boolean` | `socketKeepAlive` True to enable socket keep alive.
    `private int` | `socketTimeout` Socket timeout value in seconds or 0.
    `private int` | `spSequenceNo` Stored procedure unique ID number.
    `private static java.lang.String` | `SQL_SERVER_65_CHARSET_QUERY` SQL query to determine the server charset on MS SQL Server 6.5.
    `private static java.lang.String` | `SQL_SERVER_INITIAL_SQL` SQL Server initial connection string.
    `private java.lang.String` | `ssl` SSL setting.
    `private StatementCache` | `statementCache` Statement cache.
    `private java.util.ArrayList` | `statements` List of statements associated with this connection.
    `private static java.lang.String` | `SYBASE_INITIAL_SQL` Sybase initial connection string.
    `private static java.lang.String` | `SYBASE_SERVER_CHARSET_QUERY` SQL query to determine the server charset on Sybase.
    `private int` | `sybaseInfo` Sybase capability mask.
    `private boolean` | `tcpNoDelay` TCP_NODELAY
    `private int` | `tdsVersion` The server protocol version.
    `private int` | `textSize` Connection's current maximum field size limit.
    `static int` | `TRANSACTION_SNAPSHOT` SQL Server custom transaction isolation level.
    `private int` | `transactionIsolation` Default transaction isolation level.
    `private java.lang.String` | `url` The orginal connection URL.
    `private boolean` | `useCursors` Use fast forward cursors for forward only result sets.
    `private boolean` | `useJCIFS` Force use of jCIFS library on Windows when connecting via named pipes.
    `private boolean` | `useKerberos` Force Kerberos authentication
    `private boolean` | `useLOBs` Map large types (IMAGE and TEXT/NTEXT) to LOBs by default.
    `private boolean` | `useMetadataCache` Use metadata cache for prepared statements.
    `private boolean` | `useNTLMv2` When doing NTLM authentication, send NTLMv2 response rather than regular response
    `private java.lang.String` | `user` The database user ID.
    `private boolean` | `useUnicode` Send parameters as unicode.
    `private java.lang.String` | `wsid` Workstation ID.
    `private boolean` | `xaEmulation` True if driver should emulate distributed transactions.
    `private int` | `xaState` Current emulated XA State eg start/end/prepare etc.
    `private boolean` | `xaTransaction` True if running distributed transaction.
    `private java.lang.Object` | `xid` Current XA Transaction ID.

    - ### Fields inherited from interface java.sql.Connection

      `TRANSACTION_NONE, TRANSACTION_READ_COMMITTED, TRANSACTION_READ_UNCOMMITTED, TRANSACTION_REPEATABLE_READ, TRANSACTION_SERIALIZABLE`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `private` | `JtdsConnection()` Default constructor.
    `(package private)` | `JtdsConnection(java.lang.String url, java.util.Properties info)` Create a new database connection.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `abort(java.util.concurrent.Executor executor)`
    `(package private) void` | `addCachedProcedure(java.lang.String key)` Add a stored procedure to the savepoint cache.
    `(package private) void` | `addCachedProcedure(java.lang.String key, ProcEntry proc)` Add a stored procedure to the cache.
    `(package private) void` | `addStatement(JtdsStatement statement)` Adds a statement object to the list maintained by the connection.
    `(package private) void` | `checkLocal(java.lang.String method)` Checks that this connection is in local transaction mode.
    `(package private) void` | `checkOpen()` Checks that the connection is still open.
    `private void` | `clearSavepoints()` Releases all savepoints.
    `void` | `clearWarnings()`
    `void` | `close()` Releases this `Connection` object's database and JDBC resources immediately instead of waiting for them to be automatically released.
    `void` | `commit()`
    `java.sql.Array` | `createArrayOf(java.lang.String typeName, java.lang.Object[] elements)`
    `java.sql.Blob` | `createBlob()`
    `java.sql.Clob` | `createClob()`
    `private SharedSocket` | `createNamedPipe(JtdsConnection connection)` Creates a `SharedSocket` object representing a connection to a named pipe.
    `java.sql.NClob` | `createNClob()`
    `java.sql.SQLXML` | `createSQLXML()`
    `java.sql.Statement` | `createStatement()`
    `java.sql.Statement` | `createStatement(int type, int concurrency)`
    `java.sql.Statement` | `createStatement(int type, int concurrency, int holdability)`
    `java.sql.Struct` | `createStruct(java.lang.String typeName, java.lang.Object[] attributes)`
    `private java.lang.String` | `determineServerCharset()` Discovers the server charset for server versions that do not send `ENVCHANGE` packets on login ack, by executing a DB vendor/version specific query.
    `(package private) void` | `enlistConnection(byte[] oleTranID)` Enlists the current connection in a distributed transaction.
    `protected void` | `finalize()` Ensure all resources are released.
    `(package private) java.lang.String` | `getAppName()` Retrieves the application name for this connection.
    `boolean` | `getAutoCommit()`
    `(package private) int` | `getBatchSize()` Retrieves the batch size to be used internally.
    `(package private) java.lang.String` | `getBindAddress()` Retrieves the bind address for this connection.
    `(package private) java.io.File` | `getBufferDir()` Returns the directory where data should be buffered to.
    `(package private) int` | `getBufferMaxMemory()` Retrieves the maximum amount of memory in Kb to buffer for all connections.
    `(package private) int` | `getBufferMinPackets()` Retrieves the minimum number of packets to buffer per `Statement` for this connection.
    `(package private) TdsCore` | `getCachedTds()` Retrieves the cached `TdsCore` or `null` if nothing is cached and resets the cache (sets it to `null`).
    `java.lang.String` | `getCatalog()`
    `protected java.lang.String` | `getCharset()` Retrieve the Java charset to use for encoding.
    `protected CharsetInfo` | `getCharsetInfo()` Retrieve the `CharsetInfo` instance used by this connection.
    `java.util.Properties` | `getClientInfo()`
    `java.lang.String` | `getClientInfo(java.lang.String name)`
    `(package private) byte[]` | `getCollation()` Retrieve the SQL Server 2000 default collation.
    `(package private) java.lang.String` | `getCursorName()` Retrieves the next unique cursor name.
    `int` | `getDatabaseMajorVersion()` Retrieves the DBMS major version.
    `int` | `getDatabaseMinorVersion()` Retrieves the DBMS minor version.
    `(package private) java.lang.String` | `getDatabaseName()` Retrieves the database name for this connection.
    `(package private) java.lang.String` | `getDatabaseProductName()` Retrieves the DBMS product name.
    `(package private) java.lang.String` | `getDatabaseProductVersion()` Retrieves the DBMS product version.
    `(package private) java.lang.String` | `getDomainName()` Retrieves the domain name for this connection.
    `int` | `getHoldability()`
    `(package private) java.lang.String` | `getInstanceName()` Retrieves the instance name for this connection.
    `(package private) boolean` | `getLastUpdateCount()` Retrieves the status of the lastUpdateCount flag.
    `(package private) long` | `getLobBuffer()` Retrieves the LOB buffer size.
    `(package private) int` | `getLoginTimeout()` Retrieves the login timeout for this connection.
    `(package private) java.lang.String` | `getMacAddress()` Retrieves the MAC (ethernet) address for this connection.
    `(package private) int` | `getMaxPrecision()` Retrieves the maximum decimal precision.
    `(package private) int` | `getMaxStatements()` Retrieves the maximum statement cache size.
    `java.sql.DatabaseMetaData` | `getMetaData()`
    `(package private) Semaphore` | `getMutex()` Retrieves the connection mutex and acquires an exclusive lock on the network connection.
    `(package private) boolean` | `getNamedPipe()` Retrieves the named pipe setting for this connection.
    `(package private) int` | `getNetPacketSize()` Retrieves the network packet size.
    `int` | `getNetworkTimeout()`
    `private int` | `getNextSavepointId()` Returns the next savepoint identifier.
    `(package private) int` | `getPacketSize()` Retrieves the packet size for this connection.
    `(package private) java.lang.String` | `getPassword()` Retrieves the password for this connection.
    `(package private) int` | `getPortNumber()` Retrieves the port number for this connection.
    `(package private) int` | `getPrepareSql()` Retrieves the Prepared SQL method.
    `(package private) int` | `getProcessId()` Retrieves the process ID to send to a server when a connection is established.
    `(package private) java.lang.String` | `getProcName()` Retrieves the next unique stored procedure name.
    `(package private) java.lang.String` | `getProgName()` Retrieves the program name for this connection.
    `java.lang.String` | `getRmHost()` Retrieves the host and port for this connection.
    `(package private) int` | `getRowCount()` Retrieves the current row count on this connection.
    `java.lang.String` | `getSchema()`
    `(package private) java.lang.String` | `getServerName()` Retrieves the server name for this connection.
    `int` | `getServerType()` Retrieves the server type.
    `(package private) SharedSocket` | `getSocket()` Retrive the shared socket.
    `(package private) boolean` | `getSocketKeepAlive()` Retrieves whether to enable socket keep alive.
    `(package private) int` | `getSocketTimeout()` Retrieves the socket timeout for this connection.
    `protected boolean` | `getSybaseInfo(int flag)` Retrieve the Sybase capability data.
    `(package private) boolean` | `getTcpNoDelay()` Retrieves the tcpNoDelay setting for this connection.
    `(package private) int` | `getTdsVersion()` Retrieve the TDS protocol version.
    `int` | `getTextSize()` Retrieves the current maximum textsize on this connection.
    `int` | `getTransactionIsolation()`
    `java.util.Map` | `getTypeMap()`
    `(package private) java.lang.String` | `getURL()` Retrieves the original connection URL.
    `(package private) boolean` | `getUseCursors()` Indicates whether fast forward only cursors should be used for forward only result sets.
    `(package private) boolean` | `getUseJCIFS()` Retrieves the useJCIFS setting for this connection.
    `(package private) boolean` | `getUseKerberos()` Return whether to use Kerberos authentication for MS SQL Server.
    `(package private) boolean` | `getUseLOBs()` Indicates whether large types (IMAGE and TEXT/NTEXT) should be mapped by default to LOB types or `String` and `byte[]` respectively.
    `(package private) boolean` | `getUseMetadataCache()` Retrieves the boolean indicating whether metadata caching is enabled.
    `(package private) boolean` | `getUseNTLMv2()` Indicates whether, when doing Windows authentication to an MS SQL server, NTLMv2 should be used.
    `(package private) java.lang.String` | `getUser()` Retrieves the user for this connection.
    `protected boolean` | `getUseUnicode()` Retrieve the sendParametersAsUnicode flag.
    `java.sql.SQLWarning` | `getWarnings()`
    `(package private) java.lang.String` | `getWsid()` Retrieves the workstation ID (WSID) for this connection.
    `(package private) int` | `getXaState()` Retrieves the XA state variable.
    `(package private) java.lang.Object` | `getXid()` Gets the XA transaction ID when running in emulation mode.
    `(package private) boolean` | `isCharsetSpecified()` Retrieves whether a specific charset was requested on creation.
    `boolean` | `isClosed()`
    `boolean` | `isReadOnly()`
    `boolean` | `isValid(int timeout)`
    `protected boolean` | `isWideChar()` Retrieve the multibyte status of the current character set.
    `boolean` | `isWrapperFor(java.lang.Class arg0)`
    `(package private) boolean` | `isXaEmulation()` Retrieves the XA Emulation flag.
    `private void` | `loadCharset(CharsetInfo ci, java.lang.String ref)` Load the Java charset to match the server character set.
    `private void` | `loadCharset(java.lang.String charset)` Load the Java charset to match the server character set.
    `java.lang.String` | `nativeSQL(java.lang.String sql)`
    `(package private) static void` | `notImplemented(java.lang.String method)` Reports that user tried to call a method which has not been implemented.
    `private static boolean` | `parseBooleanProperty(java.util.Properties info, java.lang.String key)` Parse a string property value into an boolean value.
    `private static int` | `parseIntegerProperty(java.util.Properties info, java.lang.String key)` Parse a string property value into an integer value.
    `private static long` | `parseLongProperty(java.util.Properties info, java.lang.String key)` Parse a string property value into a long value.
    `java.sql.CallableStatement` | `prepareCall(java.lang.String sql)`
    `java.sql.CallableStatement` | `prepareCall(java.lang.String sql, int type, int concurrency)`
    `java.sql.CallableStatement` | `prepareCall(java.lang.String sql, int type, int concurrency, int holdability)`
    `(package private) java.lang.String` | `prepareSQL(JtdsPreparedStatement pstmt, java.lang.String sql, ParamInfo[] params, boolean returnKeys, boolean cursorNeeded)` Try to convert the SQL statement into a statement prepare.
    `java.sql.PreparedStatement` | `prepareStatement(java.lang.String sql)`
    `java.sql.PreparedStatement` | `prepareStatement(java.lang.String sql, int autoGeneratedKeys)`
    `java.sql.PreparedStatement` | `prepareStatement(java.lang.String sql, int[] columnIndexes)`
    `java.sql.PreparedStatement` | `prepareStatement(java.lang.String sql, int type, int concurrency)`
    `java.sql.PreparedStatement` | `prepareStatement(java.lang.String sql, int type, int concurrency, int holdability)`
    `java.sql.PreparedStatement` | `prepareStatement(java.lang.String sql, java.lang.String[] columnNames)`
    `void` | `releaseSavepoint(java.sql.Savepoint savepoint)`
    `(package private) void` | `releaseTds(TdsCore tds)` Releases (either closes or caches) a `TdsCore`.
    `(package private) void` | `removeCachedProcedure(java.lang.String key)` Remove a stored procedure from the cache.
    `(package private) void` | `removeStatement(JtdsStatement statement)` Removes a statement object from the list maintained by the connection and cleans up the statement cache if necessary.
    `void` | `rollback()`
    `void` | `rollback(java.sql.Savepoint savepoint)`
    `(package private) byte[][]` | `sendXaPacket(int[] args, byte[] data)` Invokes the `xp_jtdsxa` extended stored procedure on the server.
    `void` | `setAutoCommit(boolean autoCommit)`
    `void` | `setCatalog(java.lang.String catalog)`
    `void` | `setClientInfo(java.util.Properties properties)`
    `void` | `setClientInfo(java.lang.String name, java.lang.String value)`
    `(package private) void` | `setClosed()` Forces the closed status on the statement if an I/O error has occurred.
    `(package private) void` | `setCollation(byte[] collation)` Set the default collation for this connection.
    `protected void` | `setDatabase(java.lang.String newDb, java.lang.String oldDb)` Called by the protcol to change the current database context.
    `protected void` | `setDBServerInfo(java.lang.String databaseProductName, int databaseMajorVersion, int databaseMinorVersion, int buildNumber)` Update the connection instance with information about the server.
    `void` | `setHoldability(int holdability)`
    `(package private) void` | `setNetPacketSize(int size)` Sets the network packet size.
    `void` | `setNetworkTimeout(java.util.concurrent.Executor executor, int milliseconds)`
    `void` | `setReadOnly(boolean readOnly)`
    `(package private) void` | `setRowCount(int count)` Sets the current row count on this connection.
    `java.sql.Savepoint` | `setSavepoint()`
    `private void` | `setSavepoint(SavepointImpl savepoint)` Add a savepoint to the list maintained by this connection.
    `java.sql.Savepoint` | `setSavepoint(java.lang.String name)`
    `void` | `setSchema(java.lang.String schema)`
    `protected void` | `setServerCharset(java.lang.String charset)` Called by the protocol to change the current character set.
    `protected void` | `setSybaseInfo(int mask)` Set the Sybase capability data.
    `void` | `setTextSize(int textSize)` Sets the current maximum textsize on this connection.
    `void` | `setTransactionIsolation(int level)`
    `void` | `setTypeMap(java.util.Map map)`
    `(package private) void` | `setXaState(int value)` Sets the XA state variable.
    `(package private) void` | `setXid(java.lang.Object xid)` Sets the XA transaction ID when running in emulation mode.
    `protected void` | `unpackProperties(java.util.Properties info)` Transfers the properties to the local instance variables.
    `java.lang.Object` | `unwrap(java.lang.Class arg0)`

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

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

- - ### Field Detail

    - #### SYBASE_SERVER_CHARSET_QUERY

          private static final java.lang.String SYBASE_SERVER_CHARSET_QUERY

      SQL query to determine the server charset on Sybase.
      See Also:
        Constant Field Values

    - #### SQL_SERVER_65_CHARSET_QUERY

          private static final java.lang.String SQL_SERVER_65_CHARSET_QUERY

      SQL query to determine the server charset on MS SQL Server 6.5.
      See Also:
        Constant Field Values

    - #### SYBASE_INITIAL_SQL

          private static final java.lang.String SYBASE_INITIAL_SQL

      Sybase initial connection string.
      See Also:
        Constant Field Values

    - #### SQL_SERVER_INITIAL_SQL

          private static final java.lang.String SQL_SERVER_INITIAL_SQL

      SQL Server initial connection string. Also contains a `SELECT @@MAX_PRECISION` query to retrieve the maximum precision for DECIMAL/NUMERIC data.
      See Also:
        Constant Field Values

    - #### TRANSACTION_SNAPSHOT

          public static final int TRANSACTION_SNAPSHOT

      SQL Server custom transaction isolation level.
      See Also:
        Constant Field Values

    - #### url

          private final java.lang.String url

      The orginal connection URL.

    - #### serverName

          private java.lang.String serverName

      The server host name.

    - #### portNumber

          private int portNumber

      The server port number.

    - #### serverType

          private int serverType

      The make of SQL Server (sybase/microsoft).

    - #### instanceName

          private java.lang.String instanceName

      The SQL Server instance.

    - #### databaseName

          private java.lang.String databaseName

      The requested database name.

    - #### currentDatabase

          private java.lang.String currentDatabase

      The current database name.

    - #### domainName

          private java.lang.String domainName

      The Windows Domain name.

    - #### user

          private java.lang.String user

      The database user ID.

    - #### password

          private java.lang.String password

      The user password.

    - #### serverCharset

          private java.lang.String serverCharset

      The server character set.

    - #### appName

          private java.lang.String appName

      The application name.

    - #### progName

          private java.lang.String progName

      The program name.

    - #### wsid

          private java.lang.String wsid

      Workstation ID.

    - #### language

          private java.lang.String language

      The server message language.

    - #### macAddress

          private java.lang.String macAddress

      The client MAC Address.

    - #### tdsVersion

          private int tdsVersion

      The server protocol version.

    - #### socket

          private final SharedSocket socket

      The network TCP/IP socket.

    - #### baseTds

          private final TdsCore baseTds

      The cored TDS protocol object.

    - #### netPacketSize

          private int netPacketSize

      The initial network packet size.

    - #### packetSize

          private int packetSize

      User requested packet size.

    - #### collation

          private byte[] collation

      SQL Server 2000 collation.

    - #### charsetSpecified

          private boolean charsetSpecified

      True if user specifies an explicit charset.

    - #### databaseProductName

          private java.lang.String databaseProductName

      The database product name eg SQL SERVER.

    - #### databaseProductVersion

          private java.lang.String databaseProductVersion

      The product version eg 11.92.

    - #### databaseMajorVersion

          private int databaseMajorVersion

      The major version number eg 11.

    - #### databaseMinorVersion

          private int databaseMinorVersion

      The minor version number eg 92.

    - #### closed

          private boolean closed

      True if this connection is closed.

    - #### readOnly

          private boolean readOnly

      True if this connection is read only.

    - #### statements

          private final java.util.ArrayList statements

      List of statements associated with this connection.

    - #### transactionIsolation

          private int transactionIsolation

      Default transaction isolation level.

    - #### autoCommit

          private boolean autoCommit

      Default auto commit state.

    - #### messages

          private final SQLDiagnostic messages

      Diagnostc messages for this connection.

    - #### rowCount

          private int rowCount

      Connection's current rowcount limit.

    - #### textSize

          private int textSize

      Connection's current maximum field size limit.

    - #### maxPrecision

          private int maxPrecision

      Maximum decimal precision.

    - #### spSequenceNo

          private int spSequenceNo

      Stored procedure unique ID number.

    - #### cursorSequenceNo

          private int cursorSequenceNo

      Cursor unique ID number.

    - #### procInTran

          private final java.util.ArrayList procInTran

      Procedures in this transaction.

    - #### charsetInfo

          private CharsetInfo charsetInfo

      Java charset for encoding.

    - #### prepareSql

          private int prepareSql

      Method for preparing SQL used in Prepared Statements.

    - #### lobBuffer

          private long lobBuffer

      The amount of LOB data to buffer in memory.

    - #### maxStatements

          private int maxStatements

      The maximum number of statements to keep open.

    - #### statementCache

          private StatementCache statementCache

      Statement cache.

    - #### useUnicode

          private boolean useUnicode

      Send parameters as unicode.

    - #### namedPipe

          private boolean namedPipe

      Use named pipe IPC instead of TCP/IP sockets.

    - #### lastUpdateCount

          private boolean lastUpdateCount

      Only return the last update count.

    - #### tcpNoDelay

          private boolean tcpNoDelay

      TCP_NODELAY

    - #### loginTimeout

          private int loginTimeout

      Login timeout value in seconds or 0.

    - #### sybaseInfo

          private int sybaseInfo

      Sybase capability mask.

    - #### xaTransaction

          private boolean xaTransaction

      True if running distributed transaction.

    - #### xaState

          private int xaState

      Current emulated XA State eg start/end/prepare etc.

    - #### xid

          private java.lang.Object xid

      Current XA Transaction ID.

    - #### xaEmulation

          private boolean xaEmulation

      True if driver should emulate distributed transactions.

    - #### mutex

          private final Semaphore mutex

      Mutual exclusion lock to control access to connection.

    - #### socketTimeout

          private int socketTimeout

      Socket timeout value in seconds or 0.

    - #### socketKeepAlive

          private boolean socketKeepAlive

      True to enable socket keep alive.

    - #### processId

          private static java.lang.Integer processId

      The process ID to report to a server when connecting.

    - #### ssl

          private java.lang.String ssl

      SSL setting.

    - #### batchSize

          private int batchSize

      The maximum size of a batch.

    - #### useMetadataCache

          private boolean useMetadataCache

      Use metadata cache for prepared statements.

    - #### useCursors

          private boolean useCursors

      Use fast forward cursors for forward only result sets.

    - #### bufferDir

          private java.io.File bufferDir

      The directory to buffer data to

    - #### bufferMaxMemory

          private int bufferMaxMemory

      The global buffer memory limit for all connections (in kilobytes).

    - #### bufferMinPackets

          private int bufferMinPackets

      The minimum number of packets per statement to buffer to memory.

    - #### useLOBs

          private boolean useLOBs

      Map large types (IMAGE and TEXT/NTEXT) to LOBs by default.

    - #### cachedTds

          private TdsCore cachedTds

      A cached `TdsCore` instance to reuse on new statements.

    - #### bindAddress

          private java.lang.String bindAddress

      The local address to bind to when connecting to a database via TCP/IP.

    - #### useJCIFS

          private boolean useJCIFS

      Force use of jCIFS library on Windows when connecting via named pipes.

    - #### useNTLMv2

          private boolean useNTLMv2

      When doing NTLM authentication, send NTLMv2 response rather than regular response

    - #### useKerberos

          private boolean useKerberos

      Force Kerberos authentication

    - #### connections

          private static int[] connections

      the number of currently open connections

    - #### savepoints

          private java.util.ArrayList savepoints

      The list of savepoints.

    - #### savepointProcInTran

          private java.util.Map savepointProcInTran

      Maps each savepoint to a list of temp procedures created since the savepoint

    - #### savepointId

          private int savepointId

      Counter for generating unique savepoint identifiers

  - ### Constructor Detail

    - #### JtdsConnection

          private JtdsConnection()

      Default constructor.

      Used for testing.

    - #### JtdsConnection

          JtdsConnection(java.lang.String url,
                        java.util.Properties info)
                   throws java.sql.SQLException

      Create a new database connection.
      Parameters:
        `url` - The connection URL starting jdbc:jtds:.
        `info` - The additional connection properties.
      Throws:
        `java.sql.SQLException`

  - ### Method Detail

    - #### finalize

          protected void finalize()
                           throws java.lang.Throwable

      Ensure all resources are released.
      Overrides:
        `finalize` in class `java.lang.Object`
      Throws:
        `java.lang.Throwable`

    - #### createNamedPipe

          private SharedSocket createNamedPipe(JtdsConnection connection)
                                        throws java.io.IOException

      Creates a `SharedSocket` object representing a connection to a named pipe. If the `os.name` system property starts with "Windows" (case-insensitive) and the `useJCIFS` parameter is `false`, a `SharedLocalNamedPipe` object is created. Else a `SharedNamedPipe` is created which uses jCIFS to provide a pure-Java implementation of Windows named pipes.

      This method will retry for `loginTimeout` seconds to create a named pipe if an `IOException` continues to be thrown stating, "All pipe instances are busy". If `loginTimeout` is set to zero (e.g., not set), a default of 20 seconds will be used.

      Parameters:
        `connection` - the connection object
      Returns:
        an object representing the named pipe connection
      Throws:
        `java.io.IOException` - on error; if an `IOException` is thrown with a message stating "All pipe instances are busy", then the method timed out after `loginTimeout` milliseconds attempting to create a named pipe.

    - #### getSocket

          SharedSocket getSocket()

      Retrive the shared socket.
      Returns:
        The `SharedSocket` object.

    - #### getTdsVersion

          int getTdsVersion()

      Retrieve the TDS protocol version.
      Returns:
        The TDS version as an `int`.

    - #### getProcName

          java.lang.String getProcName()

      Retrieves the next unique stored procedure name.

      Notes:

      1. Some versions of Sybase require an id with a length of <= 10.
      2. The format of this name works for sybase and Microsoft and allows for 16M names per session.
      3. The leading '#jtds' indicates this is a temporary procedure and the '#' is removed by the lower level TDS5 routines.
      Not synchronized because it's only called from the synchronized `prepareSQL(net.sourceforge.jtds.jdbc.JtdsPreparedStatement, java.lang.String, net.sourceforge.jtds.jdbc.ParamInfo[], boolean, boolean)` method.
      Returns:
        the next temporary SP name as a `String`

    - #### getCursorName

          java.lang.String getCursorName()

      Retrieves the next unique cursor name.
      Returns:
        the next cursor name as a `String`

    - #### prepareSQL

          java.lang.String prepareSQL(JtdsPreparedStatement pstmt,
                                    java.lang.String sql,
                                    ParamInfo[] params,
                                    boolean returnKeys,
                                    boolean cursorNeeded)
                                throws java.sql.SQLException

      Try to convert the SQL statement into a statement prepare.

      Synchronized because it accesses the procedure cache and the `baseTds`, but the method call also needs to made in a `synchronized (connection)` block together with the execution (if the prepared statement is actually executed) to ensure the transaction isn't rolled back between this method call and the actual execution.

      Parameters:
        `pstmt` - the target prepared statement
        `sql` - the SQL statement to prepare
        `params` - the parameters
        `returnKeys` - indicates whether the statement will return generated keys
        `cursorNeeded` - indicates whether a cursor prepare is needed
      Returns:
        the SQL procedure name as a `String` or null if the SQL cannot be prepared
      Throws:
        `java.sql.SQLException`

    - #### addCachedProcedure

          void addCachedProcedure(java.lang.String key,
                                ProcEntry proc)

      Add a stored procedure to the cache.

      Not explicitly synchronized because it's only called by synchronized methods.

      Parameters:
        `key` - The signature of the procedure to cache.
        `proc` - The stored procedure descriptor.

    - #### removeCachedProcedure

          void removeCachedProcedure(java.lang.String key)

      Remove a stored procedure from the cache.

      Not explicitly synchronized because it's only called by synchronized methods.

      Parameters:
        `key` - The signature of the procedure to remove from the cache.

    - #### getMaxStatements

          int getMaxStatements()

      Retrieves the maximum statement cache size.
      Returns:
        the maximum statement cache size

    - #### getServerType

          public int getServerType()

      Retrieves the server type.
      Returns:
        the server type as an `int` where 1 == SQLSERVER and 2 == SYBASE.

    - #### setNetPacketSize

          void setNetPacketSize(int size)

      Sets the network packet size.
      Parameters:
        `size` - the new packet size

    - #### getNetPacketSize

          int getNetPacketSize()

      Retrieves the network packet size.
      Returns:
        the packet size as an `int`

    - #### getRowCount

          int getRowCount()

      Retrieves the current row count on this connection.
      Returns:
        the row count as an `int`

    - #### setRowCount

          void setRowCount(int count)

      Sets the current row count on this connection.
      Parameters:
        `count` - the new row count

    - #### getTextSize

          public int getTextSize()

      Retrieves the current maximum textsize on this connection.
      Returns:
        the maximum textsize as an `int`

    - #### setTextSize

          public void setTextSize(int textSize)

      Sets the current maximum textsize on this connection.
      Parameters:
        `textSize` - the new maximum textsize

    - #### getLastUpdateCount

          boolean getLastUpdateCount()

      Retrieves the status of the lastUpdateCount flag.
      Returns:
        the lastUpdateCount flag as a `boolean`

    - #### getMaxPrecision

          int getMaxPrecision()

      Retrieves the maximum decimal precision.
      Returns:
        the precision as an `int`

    - #### getLobBuffer

          long getLobBuffer()

      Retrieves the LOB buffer size.
      Returns:
        the LOB buffer size as a `long`

    - #### getPrepareSql

          int getPrepareSql()

      Retrieves the Prepared SQL method.
      Returns:
        the Prepared SQL method

    - #### getBatchSize

          int getBatchSize()

      Retrieves the batch size to be used internally.
      Returns:
        the batch size as an `int`

    - #### getUseMetadataCache

          boolean getUseMetadataCache()

      Retrieves the boolean indicating whether metadata caching is enabled.
      Returns:
        `true` if metadata caching is enabled, `false` if caching is disabled

    - #### getUseCursors

          boolean getUseCursors()

      Indicates whether fast forward only cursors should be used for forward only result sets.
      Returns:
        `true` if fast forward cursors are requested

    - #### getUseLOBs

          boolean getUseLOBs()

      Indicates whether large types (IMAGE and TEXT/NTEXT) should be mapped by default to LOB types or `String` and `byte[]` respectively.
      Returns:
        `true` if the default mapping should be to LOBs, `false` otherwise

    - #### getUseNTLMv2

          boolean getUseNTLMv2()

      Indicates whether, when doing Windows authentication to an MS SQL server, NTLMv2 should be used. When this is set to "false", LM and NTLM responses are sent to the server, which should work fine in most cases. However, some servers are configured to require LMv2 and NTLMv2. In these rare cases, this property should be set to "true".

    - #### getUseKerberos

          boolean getUseKerberos()

      Return whether to use Kerberos authentication for MS SQL Server.

    - #### getAppName

          java.lang.String getAppName()

      Retrieves the application name for this connection.
      Returns:
        the application name

    - #### getBindAddress

          java.lang.String getBindAddress()

      Retrieves the bind address for this connection.
      Returns:
        the bind address

    - #### getBufferDir

          java.io.File getBufferDir()

      Returns the directory where data should be buffered to.
      Returns:
        the directory where data should be buffered to.

    - #### getBufferMaxMemory

          int getBufferMaxMemory()

      Retrieves the maximum amount of memory in Kb to buffer for all connections.
      Returns:
        the maximum amount of memory in Kb to buffer for all connections

    - #### getBufferMinPackets

          int getBufferMinPackets()

      Retrieves the minimum number of packets to buffer per `Statement` for this connection.
      Returns:
        the minimum number of packets to buffer per `Statement`

    - #### getDatabaseName

          java.lang.String getDatabaseName()

      Retrieves the database name for this connection.
      Returns:
        the database name

    - #### getDomainName

          java.lang.String getDomainName()

      Retrieves the domain name for this connection.
      Returns:
        the domain name

    - #### getInstanceName

          java.lang.String getInstanceName()

      Retrieves the instance name for this connection.
      Returns:
        the instance name

    - #### getLoginTimeout

          int getLoginTimeout()

      Retrieves the login timeout for this connection.
      Returns:
        the login timeout

    - #### getSocketTimeout

          int getSocketTimeout()

      Retrieves the socket timeout for this connection.
      Returns:
        the socket timeout

    - #### getSocketKeepAlive

          boolean getSocketKeepAlive()

      Retrieves whether to enable socket keep alive.
      Returns:
        `true` if the socket keep alive is enabled

    - #### getProcessId

          int getProcessId()

      Retrieves the process ID to send to a server when a connection is established.
      Returns:
        the process ID

    - #### getMacAddress

          java.lang.String getMacAddress()

      Retrieves the MAC (ethernet) address for this connection.
      Returns:
        the MAC (ethernet) address

    - #### getNamedPipe

          boolean getNamedPipe()

      Retrieves the named pipe setting for this connection.
      Returns:
        the named pipe setting

    - #### getPacketSize

          int getPacketSize()

      Retrieves the packet size for this connection.
      Returns:
        the packet size

    - #### getPassword

          java.lang.String getPassword()

      Retrieves the password for this connection.
      Returns:
        the password

    - #### getPortNumber

          int getPortNumber()

      Retrieves the port number for this connection.
      Returns:
        the port number

    - #### getProgName

          java.lang.String getProgName()

      Retrieves the program name for this connection.
      Returns:
        the program name

    - #### getServerName

          java.lang.String getServerName()

      Retrieves the server name for this connection.
      Returns:
        the server name

    - #### getTcpNoDelay

          boolean getTcpNoDelay()

      Retrieves the tcpNoDelay setting for this connection.
      Returns:
        the tcpNoDelay setting

    - #### getUseJCIFS

          boolean getUseJCIFS()

      Retrieves the useJCIFS setting for this connection.
      Returns:
        the useJCIFS setting

    - #### getUser

          java.lang.String getUser()

      Retrieves the user for this connection.
      Returns:
        the user

    - #### getWsid

          java.lang.String getWsid()

      Retrieves the workstation ID (WSID) for this connection.
      Returns:
        the workstation ID (WSID)

    - #### unpackProperties

          protected void unpackProperties(java.util.Properties info)
                                   throws java.sql.SQLException

      Transfers the properties to the local instance variables.
      Parameters:
        `info` - The connection properties Object.
      Throws:
        `java.sql.SQLException` - If an invalid property value is found.

    - #### parseBooleanProperty

          private static boolean parseBooleanProperty(java.util.Properties info,
                                     java.lang.String key)
                                               throws java.sql.SQLException

      Parse a string property value into an boolean value.
      Parameters:
        `info` - The connection properties object.
        `key` - The message key used to retrieve the property name.
      Returns:
        The boolean value of the string property value.
      Throws:
        `java.sql.SQLException` - If the property value can't be parsed.

    - #### parseIntegerProperty

          private static int parseIntegerProperty(java.util.Properties info,
                                 java.lang.String key)
                                           throws java.sql.SQLException

      Parse a string property value into an integer value.
      Parameters:
        `info` - The connection properties object.
        `key` - The message key used to retrieve the property name.
      Returns:
        The integer value of the string property value.
      Throws:
        `java.sql.SQLException` - If the property value can't be parsed.

    - #### parseLongProperty

          private static long parseLongProperty(java.util.Properties info,
                               java.lang.String key)
                                         throws java.sql.SQLException

      Parse a string property value into a long value.
      Parameters:
        `info` - The connection properties object.
        `key` - The message key used to retrieve the property name.
      Returns:
        The long value of the string property value.
      Throws:
        `java.sql.SQLException` - If the property value can't be parsed.

    - #### getCharset

          protected java.lang.String getCharset()

      Retrieve the Java charset to use for encoding.
      Returns:
        the Charset name as a `String`

    - #### isWideChar

          protected boolean isWideChar()

      Retrieve the multibyte status of the current character set.
      Returns:
        `boolean` true if a multi byte character set

    - #### getCharsetInfo

          protected CharsetInfo getCharsetInfo()

      Retrieve the `CharsetInfo` instance used by this connection.
      Returns:
        the default `CharsetInfo` for this connection

    - #### getUseUnicode

          protected boolean getUseUnicode()

      Retrieve the sendParametersAsUnicode flag.
      Returns:
        `boolean` true if parameters should be sent as unicode.

    - #### getSybaseInfo

          protected boolean getSybaseInfo(int flag)

      Retrieve the Sybase capability data.
      Returns:
        Capability bit mask as an `int`.

    - #### setSybaseInfo

          protected void setSybaseInfo(int mask)

      Set the Sybase capability data.
      Parameters:
        `mask` - The capability bit mask.

    - #### setServerCharset

          protected void setServerCharset(java.lang.String charset)
                                   throws java.sql.SQLException

      Called by the protocol to change the current character set.
      Parameters:
        `charset` - the server character set name
      Throws:
        `java.sql.SQLException`

    - #### loadCharset

          private void loadCharset(java.lang.String charset)
                            throws java.sql.SQLException

      Load the Java charset to match the server character set.
      Parameters:
        `charset` - the server character set
      Throws:
        `java.sql.SQLException`

    - #### loadCharset

          private void loadCharset(CharsetInfo ci,
                         java.lang.String ref)
                            throws java.sql.SQLException

      Load the Java charset to match the server character set.
      Parameters:
        `ci` - the `CharsetInfo` to load
      Throws:
        `java.sql.SQLException`

    - #### determineServerCharset

          private java.lang.String determineServerCharset()
                                                   throws java.sql.SQLException

      Discovers the server charset for server versions that do not send `ENVCHANGE` packets on login ack, by executing a DB vendor/version specific query.

      Will throw an `SQLException` if used on SQL Server 7.0 or 2000; the idea is that the charset should already be determined from `ENVCHANGE` packets for these DB servers.

      Should only be called from the constructor.

      Returns:
        the default server charset
      Throws:
        `java.sql.SQLException` - if an error condition occurs

    - #### setCollation

          void setCollation(byte[] collation)
                      throws java.sql.SQLException

      Set the default collation for this connection.

      Set by a SQL Server 2000 environment change packet. The collation consists of the following fields:

      - bits 0-19 - The locale eg 0x0409 for US English which maps to code page 1252 (Latin1_General).
      - bits 20-31 - Reserved.
      - bits 32-39 - Sort order (csid from syscharsets)
      If the sort order is non-zero it determines the character set, otherwise the character set is determined by the locale id.
      Parameters:
        `collation` - The new collation.
      Throws:
        `java.sql.SQLException`

    - #### getCollation

          byte[] getCollation()

      Retrieve the SQL Server 2000 default collation.
      Returns:
        The collation as a `byte[5]`.

    - #### isCharsetSpecified

          boolean isCharsetSpecified()

      Retrieves whether a specific charset was requested on creation. If this is the case, all character data should be encoded/decoded using that charset.

    - #### setDatabase

          protected void setDatabase(java.lang.String newDb,
                         java.lang.String oldDb)
                              throws java.sql.SQLException

      Called by the protcol to change the current database context.
      Parameters:
        `newDb` - The new database selected on the server.
        `oldDb` - The old database as known by the server.
      Throws:
        `java.sql.SQLException`

    - #### setDBServerInfo

          protected void setDBServerInfo(java.lang.String databaseProductName,
                             int databaseMajorVersion,
                             int databaseMinorVersion,
                             int buildNumber)

      Update the connection instance with information about the server.
      Parameters:
        `databaseProductName` - The server name eg SQL Server.
        `databaseMajorVersion` - The major version eg 11
        `databaseMinorVersion` - The minor version eg 92
        `buildNumber` - The server build number.

    - #### removeStatement

          void removeStatement(JtdsStatement statement)
                         throws java.sql.SQLException

      Removes a statement object from the list maintained by the connection and cleans up the statement cache if necessary.

      Synchronized because it accesses the statement list, the statement cache and the `baseTds`.

      Parameters:
        `statement` - the statement to remove
      Throws:
        `java.sql.SQLException`

    - #### addStatement

          void addStatement(JtdsStatement statement)

      Adds a statement object to the list maintained by the connection.

      WeakReferences are used so that statements can still be closed and garbage collected even if not explicitly closed by the connection.
      Parameters:
        `statement` - statement to add

    - #### checkOpen

          void checkOpen()
                   throws java.sql.SQLException

      Checks that the connection is still open.
      Throws:
        `java.sql.SQLException` - if the connection is closed

    - #### checkLocal

          void checkLocal(java.lang.String method)
                    throws java.sql.SQLException

      Checks that this connection is in local transaction mode.
      Parameters:
        `method` - the method name being tested
      Throws:
        `java.sql.SQLException` - if in XA distributed transaction mode

    - #### notImplemented

          static void notImplemented(java.lang.String method)
                              throws java.sql.SQLException

      Reports that user tried to call a method which has not been implemented.
      Parameters:
        `method` - the method name to report in the error message
      Throws:
        `java.sql.SQLException` - always, with the not implemented message

    - #### getDatabaseMajorVersion

          public int getDatabaseMajorVersion()

      Retrieves the DBMS major version.
      Returns:
        the version as an `int`

    - #### getDatabaseMinorVersion

          public int getDatabaseMinorVersion()

      Retrieves the DBMS minor version.
      Returns:
        the version as an `int`

    - #### getDatabaseProductName

          java.lang.String getDatabaseProductName()

      Retrieves the DBMS product name.
      Returns:
        the name as a `String`

    - #### getDatabaseProductVersion

          java.lang.String getDatabaseProductVersion()

      Retrieves the DBMS product version.
      Returns:
        the version as a `String`

    - #### getURL

          java.lang.String getURL()

      Retrieves the original connection URL.
      Returns:
        the connection url as a `String`

    - #### getRmHost

          public java.lang.String getRmHost()

      Retrieves the host and port for this connection.

      Used to identify same resource manager in XA transactions.

      Returns:
        the hostname and port as a `String`

    - #### setClosed

          void setClosed()

      Forces the closed status on the statement if an I/O error has occurred.

    - #### sendXaPacket

          byte[][] sendXaPacket(int[] args,
                              byte[] data)
                          throws java.sql.SQLException

      Invokes the `xp_jtdsxa` extended stored procedure on the server.

      Synchronized because it accesses the `baseTds`.
      Parameters:
        `args` - the arguments eg cmd, rmid, flags etc.
        `data` - option byte data eg open string xid etc.
      Returns:
        optional byte data eg OLE cookie
      Throws:
        `java.sql.SQLException` - if an error condition occurs

    - #### enlistConnection

          void enlistConnection(byte[] oleTranID)
                          throws java.sql.SQLException

      Enlists the current connection in a distributed transaction.
      Parameters:
        `oleTranID` - the OLE transaction cookie or null to delist
      Throws:
        `java.sql.SQLException` - if an error condition occurs

    - #### setXid

          void setXid(java.lang.Object xid)

      Sets the XA transaction ID when running in emulation mode.
      Parameters:
        `xid` - the XA Transaction ID

    - #### getXid

          java.lang.Object getXid()

      Gets the XA transaction ID when running in emulation mode.
      Returns:
        the transaction ID as an `Object`

    - #### setXaState

          void setXaState(int value)

      Sets the XA state variable.
      Parameters:
        `value` - the XA state value

    - #### getXaState

          int getXaState()

      Retrieves the XA state variable.
      Returns:
        the xa state variable as an `int`

    - #### isXaEmulation

          boolean isXaEmulation()

      Retrieves the XA Emulation flag.
      Returns:
        True if in XA emulation mode.

    - #### getMutex

          Semaphore getMutex()

      Retrieves the connection mutex and acquires an exclusive lock on the network connection.
      Returns:
        the mutex object as a `Semaphore`

    - #### releaseTds

          void releaseTds(TdsCore tds)
                    throws java.sql.SQLException

      Releases (either closes or caches) a `TdsCore`.
      Parameters:
        `tds` - the `TdsCore` instance to release
      Throws:
        `java.sql.SQLException` - if an error occurs while closing or cleaning up

    - #### getCachedTds

          TdsCore getCachedTds()

      Retrieves the cached `TdsCore` or `null` if nothing is cached and resets the cache (sets it to `null`).
      Returns:
        the value of `cachedTds`
      To do:
        Should probably synchronize on another object

    - #### getHoldability

          public int getHoldability()
                             throws java.sql.SQLException

      Specified by:
        `getHoldability` in interface `java.sql.Connection`
      Throws:
        `java.sql.SQLException`

    - #### getTransactionIsolation

          public int getTransactionIsolation()
                                      throws java.sql.SQLException

      Specified by:
        `getTransactionIsolation` in interface `java.sql.Connection`
      Throws:
        `java.sql.SQLException`

    - #### clearWarnings

          public void clearWarnings()
                             throws java.sql.SQLException

      Specified by:
        `clearWarnings` in interface `java.sql.Connection`
      Throws:
        `java.sql.SQLException`

    - #### close

          public void close()
                     throws java.sql.SQLException

      Releases this `Connection` object's database and JDBC resources immediately instead of waiting for them to be automatically released.

      Calling the method close on a `Connection` object that is already closed is a no-op.

      Note: A `Connection` object is automatically closed when it is garbage collected. Certain fatal errors also close a `Connection` object.

      Synchronized because it accesses the statement list and the `baseTds`.

      Specified by:
        `close` in interface `java.lang.AutoCloseable`
      Specified by:
        `close` in interface `java.sql.Connection`
      Throws:
        `java.sql.SQLException` - if a database access error occurs

    - #### commit

          public void commit()
                      throws java.sql.SQLException

      Specified by:
        `commit` in interface `java.sql.Connection`
      Throws:
        `java.sql.SQLException`

    - #### rollback

          public void rollback()
                        throws java.sql.SQLException

      Specified by:
        `rollback` in interface `java.sql.Connection`
      Throws:
        `java.sql.SQLException`

    - #### getAutoCommit

          public boolean getAutoCommit()
                                throws java.sql.SQLException

      Specified by:
        `getAutoCommit` in interface `java.sql.Connection`
      Throws:
        `java.sql.SQLException`

    - #### isClosed

          public boolean isClosed()
                           throws java.sql.SQLException

      Specified by:
        `isClosed` in interface `java.sql.Connection`
      Throws:
        `java.sql.SQLException`

    - #### isReadOnly

          public boolean isReadOnly()
                             throws java.sql.SQLException

      Specified by:
        `isReadOnly` in interface `java.sql.Connection`
      Throws:
        `java.sql.SQLException`

    - #### setHoldability

          public void setHoldability(int holdability)
                              throws java.sql.SQLException

      Specified by:
        `setHoldability` in interface `java.sql.Connection`
      Throws:
        `java.sql.SQLException`

    - #### setTransactionIsolation

          public void setTransactionIsolation(int level)
                                       throws java.sql.SQLException

      Specified by:
        `setTransactionIsolation` in interface `java.sql.Connection`
      Throws:
        `java.sql.SQLException`

    - #### setAutoCommit

          public void setAutoCommit(boolean autoCommit)
                             throws java.sql.SQLException

      Specified by:
        `setAutoCommit` in interface `java.sql.Connection`
      Throws:
        `java.sql.SQLException`

    - #### setReadOnly

          public void setReadOnly(boolean readOnly)
                           throws java.sql.SQLException

      Specified by:
        `setReadOnly` in interface `java.sql.Connection`
      Throws:
        `java.sql.SQLException`

    - #### getCatalog

          public java.lang.String getCatalog()
                                      throws java.sql.SQLException

      Specified by:
        `getCatalog` in interface `java.sql.Connection`
      Throws:
        `java.sql.SQLException`

    - #### setCatalog

          public void setCatalog(java.lang.String catalog)
                          throws java.sql.SQLException

      Specified by:
        `setCatalog` in interface `java.sql.Connection`
      Throws:
        `java.sql.SQLException`

    - #### getMetaData

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

      Specified by:
        `getMetaData` in interface `java.sql.Connection`
      Throws:
        `java.sql.SQLException`

    - #### getWarnings

          public java.sql.SQLWarning getWarnings()
                                          throws java.sql.SQLException

      Specified by:
        `getWarnings` in interface `java.sql.Connection`
      Throws:
        `java.sql.SQLException`

    - #### createStatement

          public java.sql.Statement createStatement()
                                             throws java.sql.SQLException

      Specified by:
        `createStatement` in interface `java.sql.Connection`
      Throws:
        `java.sql.SQLException`

    - #### createStatement

          public java.sql.Statement createStatement(int type,
                                           int concurrency)
                                             throws java.sql.SQLException

      Specified by:
        `createStatement` in interface `java.sql.Connection`
      Throws:
        `java.sql.SQLException`

    - #### createStatement

          public java.sql.Statement createStatement(int type,
                                           int concurrency,
                                           int holdability)
                                             throws java.sql.SQLException

      Specified by:
        `createStatement` in interface `java.sql.Connection`
      Throws:
        `java.sql.SQLException`

    - #### getTypeMap

          public java.util.Map getTypeMap()
                                   throws java.sql.SQLException

      Specified by:
        `getTypeMap` in interface `java.sql.Connection`
      Throws:
        `java.sql.SQLException`

    - #### setTypeMap

          public void setTypeMap(java.util.Map map)
                          throws java.sql.SQLException

      Specified by:
        `setTypeMap` in interface `java.sql.Connection`
      Throws:
        `java.sql.SQLException`

    - #### nativeSQL

          public java.lang.String nativeSQL(java.lang.String sql)
                                     throws java.sql.SQLException

      Specified by:
        `nativeSQL` in interface `java.sql.Connection`
      Throws:
        `java.sql.SQLException`

    - #### prepareCall

          public java.sql.CallableStatement prepareCall(java.lang.String sql)
                                                 throws java.sql.SQLException

      Specified by:
        `prepareCall` in interface `java.sql.Connection`
      Throws:
        `java.sql.SQLException`

    - #### prepareCall

          public java.sql.CallableStatement prepareCall(java.lang.String sql,
                                               int type,
                                               int concurrency)
                                                 throws java.sql.SQLException

      Specified by:
        `prepareCall` in interface `java.sql.Connection`
      Throws:
        `java.sql.SQLException`

    - #### prepareCall

          public java.sql.CallableStatement prepareCall(java.lang.String sql,
                                               int type,
                                               int concurrency,
                                               int holdability)
                                                 throws java.sql.SQLException

      Specified by:
        `prepareCall` in interface `java.sql.Connection`
      Throws:
        `java.sql.SQLException`

    - #### prepareStatement

          public java.sql.PreparedStatement prepareStatement(java.lang.String sql)
                                                      throws java.sql.SQLException

      Specified by:
        `prepareStatement` in interface `java.sql.Connection`
      Throws:
        `java.sql.SQLException`

    - #### prepareStatement

          public java.sql.PreparedStatement prepareStatement(java.lang.String sql,
                                                    int autoGeneratedKeys)
                                                      throws java.sql.SQLException

      Specified by:
        `prepareStatement` in interface `java.sql.Connection`
      Throws:
        `java.sql.SQLException`

    - #### prepareStatement

          public java.sql.PreparedStatement prepareStatement(java.lang.String sql,
                                                    int type,
                                                    int concurrency)
                                                      throws java.sql.SQLException

      Specified by:
        `prepareStatement` in interface `java.sql.Connection`
      Throws:
        `java.sql.SQLException`

    - #### prepareStatement

          public java.sql.PreparedStatement prepareStatement(java.lang.String sql,
                                                    int type,
                                                    int concurrency,
                                                    int holdability)
                                                      throws java.sql.SQLException

      Specified by:
        `prepareStatement` in interface `java.sql.Connection`
      Throws:
        `java.sql.SQLException`

    - #### prepareStatement

          public java.sql.PreparedStatement prepareStatement(java.lang.String sql,
                                                    int[] columnIndexes)
                                                      throws java.sql.SQLException

      Specified by:
        `prepareStatement` in interface `java.sql.Connection`
      Throws:
        `java.sql.SQLException`

    - #### prepareStatement

          public java.sql.PreparedStatement prepareStatement(java.lang.String sql,
                                                    java.lang.String[] columnNames)
                                                      throws java.sql.SQLException

      Specified by:
        `prepareStatement` in interface `java.sql.Connection`
      Throws:
        `java.sql.SQLException`

    - #### setSavepoint

          private void setSavepoint(SavepointImpl savepoint)
                             throws java.sql.SQLException

      Add a savepoint to the list maintained by this connection.
      Parameters:
        `savepoint` - The savepoint object to add.
      Throws:
        `java.sql.SQLException`

    - #### clearSavepoints

          private void clearSavepoints()

      Releases all savepoints. Used internally when committing or rolling back a transaction.

    - #### releaseSavepoint

          public void releaseSavepoint(java.sql.Savepoint savepoint)
                                throws java.sql.SQLException

      Specified by:
        `releaseSavepoint` in interface `java.sql.Connection`
      Throws:
        `java.sql.SQLException`

    - #### rollback

          public void rollback(java.sql.Savepoint savepoint)
                        throws java.sql.SQLException

      Specified by:
        `rollback` in interface `java.sql.Connection`
      Throws:
        `java.sql.SQLException`

    - #### setSavepoint

          public java.sql.Savepoint setSavepoint()
                                          throws java.sql.SQLException

      Specified by:
        `setSavepoint` in interface `java.sql.Connection`
      Throws:
        `java.sql.SQLException`

    - #### setSavepoint

          public java.sql.Savepoint setSavepoint(java.lang.String name)
                                          throws java.sql.SQLException

      Specified by:
        `setSavepoint` in interface `java.sql.Connection`
      Throws:
        `java.sql.SQLException`

    - #### getNextSavepointId

          private int getNextSavepointId()

      Returns the next savepoint identifier.
      Returns:
        the next savepoint identifier

    - #### addCachedProcedure

          void addCachedProcedure(java.lang.String key)

      Add a stored procedure to the savepoint cache.
      Parameters:
        `key` - The signature of the procedure to cache.

    - #### createArrayOf

          public java.sql.Array createArrayOf(java.lang.String typeName,
                                     java.lang.Object[] elements)
                                       throws java.sql.SQLException

      Specified by:
        `createArrayOf` in interface `java.sql.Connection`
      Throws:
        `java.sql.SQLException`

    - #### createBlob

          public java.sql.Blob createBlob()
                                   throws java.sql.SQLException

      Specified by:
        `createBlob` in interface `java.sql.Connection`
      Throws:
        `java.sql.SQLException`

    - #### createClob

          public java.sql.Clob createClob()
                                   throws java.sql.SQLException

      Specified by:
        `createClob` in interface `java.sql.Connection`
      Throws:
        `java.sql.SQLException`

    - #### createNClob

          public java.sql.NClob createNClob()
                                     throws java.sql.SQLException

      Specified by:
        `createNClob` in interface `java.sql.Connection`
      Throws:
        `java.sql.SQLException`

    - #### createSQLXML

          public java.sql.SQLXML createSQLXML()
                                       throws java.sql.SQLException

      Specified by:
        `createSQLXML` in interface `java.sql.Connection`
      Throws:
        `java.sql.SQLException`

    - #### createStruct

          public java.sql.Struct createStruct(java.lang.String typeName,
                                     java.lang.Object[] attributes)
                                       throws java.sql.SQLException

      Specified by:
        `createStruct` in interface `java.sql.Connection`
      Throws:
        `java.sql.SQLException`

    - #### getClientInfo

          public java.util.Properties getClientInfo()
                                             throws java.sql.SQLException

      Specified by:
        `getClientInfo` in interface `java.sql.Connection`
      Throws:
        `java.sql.SQLException`

    - #### getClientInfo

          public java.lang.String getClientInfo(java.lang.String name)
                                         throws java.sql.SQLException

      Specified by:
        `getClientInfo` in interface `java.sql.Connection`
      Throws:
        `java.sql.SQLException`

    - #### isValid

          public boolean isValid(int timeout)
                          throws java.sql.SQLException

      Specified by:
        `isValid` in interface `java.sql.Connection`
      Throws:
        `java.sql.SQLException`

    - #### setClientInfo

          public void setClientInfo(java.util.Properties properties)
                             throws java.sql.SQLClientInfoException

      Specified by:
        `setClientInfo` in interface `java.sql.Connection`
      Throws:
        `java.sql.SQLClientInfoException`

    - #### setClientInfo

          public void setClientInfo(java.lang.String name,
                           java.lang.String value)
                             throws java.sql.SQLClientInfoException

      Specified by:
        `setClientInfo` in interface `java.sql.Connection`
      Throws:
        `java.sql.SQLClientInfoException`

    - #### isWrapperFor

          public boolean isWrapperFor(java.lang.Class arg0)
                               throws java.sql.SQLException

      Specified by:
        `isWrapperFor` in interface `java.sql.Wrapper`
      Throws:
        `java.sql.SQLException`

    - #### unwrap

          public java.lang.Object unwrap(java.lang.Class arg0)
                                  throws java.sql.SQLException

      Specified by:
        `unwrap` in interface `java.sql.Wrapper`
      Throws:
        `java.sql.SQLException`

    - #### setSchema

          public void setSchema(java.lang.String schema)
                         throws java.sql.SQLException

      Specified by:
        `setSchema` in interface `java.sql.Connection`
      Throws:
        `java.sql.SQLException`

    - #### getSchema

          public java.lang.String getSchema()
                                     throws java.sql.SQLException

      Specified by:
        `getSchema` in interface `java.sql.Connection`
      Throws:
        `java.sql.SQLException`

    - #### abort

          public void abort(java.util.concurrent.Executor executor)
                     throws java.sql.SQLException

      Specified by:
        `abort` in interface `java.sql.Connection`
      Throws:
        `java.sql.SQLException`

    - #### setNetworkTimeout

          public void setNetworkTimeout(java.util.concurrent.Executor executor,
                               int milliseconds)
                                 throws java.sql.SQLException

      Specified by:
        `setNetworkTimeout` in interface `java.sql.Connection`
      Throws:
        `java.sql.SQLException`

    - #### getNetworkTimeout

          public int getNetworkTimeout()
                                throws java.sql.SQLException

      Specified by:
        `getNetworkTimeout` in interface `java.sql.Connection`
      Throws:
        `java.sql.SQLException`

Generated on June 8 2013