public class Support
extends java.lang.Object
Implementation notes:
| Modifier and Type | Field and Description |
|---|---|
private static java.math.BigDecimal |
BIG_DECIMAL_ONE |
private static java.math.BigDecimal |
BIG_DECIMAL_ZERO |
private static java.sql.Date |
DATE_ZERO |
private static java.lang.Double |
DOUBLE_ONE |
private static java.lang.Double |
DOUBLE_ZERO |
private static java.lang.Float |
FLOAT_ONE |
private static java.lang.Float |
FLOAT_ZERO |
private static char[] |
hex
Hex constants to use in conversion routines.
|
private static java.lang.Integer |
INTEGER_ONE |
private static java.lang.Integer |
INTEGER_ZERO |
private static java.lang.Long |
LONG_ONE |
private static java.lang.Long |
LONG_ZERO |
private static java.math.BigInteger |
MAX_VALUE_28 |
private static java.math.BigInteger |
MAX_VALUE_38 |
private static java.math.BigDecimal |
MAX_VALUE_LONG_BD |
private static java.math.BigInteger |
MAX_VALUE_LONG_BI |
private static java.math.BigDecimal |
MIN_VALUE_LONG_BD |
private static java.math.BigInteger |
MIN_VALUE_LONG_BI |
private static java.sql.Time |
TIME_ZERO |
private static java.util.HashMap |
typeMap
Convert java clases to java.sql.Type constant.
|
| Modifier | Constructor and Description |
|---|---|
private |
Support() |
| Modifier and Type | Method and Description |
|---|---|
(package private) static int |
calculateNamedPipeBufferSize(int tdsVersion,
int packetSize)
Calculate the buffer size to use when buffering the
InputStream
for named pipes. |
(package private) static java.lang.Object |
castNumeric(java.lang.Object orig,
int sourceType,
int targetType) |
(package private) static java.lang.Object |
convert(java.lang.Object callerReference,
java.lang.Object x,
int jdbcType,
java.lang.String charSet)
Convert an existing data object to the specified JDBC type.
|
static java.lang.Object |
convertLOB(java.lang.Object value)
Converts a LOB to the equivalent Java type, i.e.
|
static int |
convertLOBType(int type)
Converts a LOB type constant to the equivalent Java type constant, i.e.
|
(package private) static void |
embedData(java.lang.StringBuilder buf,
java.lang.Object value,
boolean isUnicode,
JtdsConnection connection)
Embed the data object as a string literal in the buffer supplied.
|
(package private) static byte[] |
encodeString(java.lang.String cs,
java.lang.String value)
Encode a string into a byte array using the specified character set.
|
(package private) static java.lang.String |
getClassName(int jdbcType)
Retrieve the fully qualified java class name for the
supplied JDBC Types constant.
|
private static JtdsConnection |
getConnection(java.lang.Object callerReference)
Returns the connection for a given
ResultSet,
Statement or Connection object. |
(package private) static int |
getJdbcType(java.lang.Class typeClass)
Get the JDBC type constant which matches the supplied
Class. |
(package private) static int |
getJdbcType(java.lang.Object value)
Get the JDBC type constant which matches the supplied Object type.
|
(package private) static java.lang.String |
getJdbcTypeName(int jdbcType)
Get a String describing the supplied JDBC type constant.
|
(package private) static java.lang.String |
getParameterDefinitions(ParamInfo[] parameters)
Constructs a parameter definition string for use with
sp_executesql, sp_prepare, sp_prepexec, sp_cursoropen,
sp_cursorprepare and sp_cursorprepexec.
|
(package private) static java.lang.String |
getStatementKey(java.lang.String sql,
ParamInfo[] params,
int serverType,
java.lang.String catalog,
boolean autoCommit,
boolean cursor)
Generates a unique statement key for a given SQL statement.
|
static boolean |
isWindowsOS()
Checks the
os.name system property to see if it starts
with "windows". |
static java.lang.Throwable |
linkException(java.lang.Exception exception,
java.lang.Throwable cause)
Link the original cause to an
Exception. |
static java.sql.SQLException |
linkException(java.sql.SQLException sqle,
java.lang.Throwable cause)
Link the original cause to an
SQLException. |
static java.sql.SQLWarning |
linkException(java.sql.SQLWarning sqle,
java.lang.Throwable cause)
Link the original cause to an
SQLWarning. |
(package private) static java.math.BigDecimal |
normalizeBigDecimal(java.math.BigDecimal value,
int maxPrecision)
Normalize a BigDecimal value so that it fits within the
available precision.
|
(package private) static java.lang.String |
substituteParameters(java.lang.String sql,
ParamInfo[] list,
JtdsConnection connection)
Substitute actual data for the parameter markers to simulate
parameter substitution in a PreparedStatement.
|
(package private) static java.lang.String |
substituteParamMarkers(java.lang.String sql,
ParamInfo[] list)
Update the SQL string and replace the ?
|
static long |
timeFromZone(java.util.Date value,
java.util.Calendar target)
Convert a timestamp from a different Timezone.
|
static long |
timeToZone(java.util.Date value,
java.util.Calendar target)
Convert a timestamp to a different Timezone.
|
static java.lang.String |
toHex(byte[] bytes)
Convert a byte[] object to a hex string.
|
private static final java.lang.Integer INTEGER_ZERO
private static final java.lang.Integer INTEGER_ONE
private static final java.lang.Long LONG_ZERO
private static final java.lang.Long LONG_ONE
private static final java.lang.Float FLOAT_ZERO
private static final java.lang.Float FLOAT_ONE
private static final java.lang.Double DOUBLE_ZERO
private static final java.lang.Double DOUBLE_ONE
private static final java.math.BigDecimal BIG_DECIMAL_ZERO
private static final java.math.BigDecimal BIG_DECIMAL_ONE
private static final java.sql.Date DATE_ZERO
private static final java.sql.Time TIME_ZERO
private static final java.math.BigInteger MIN_VALUE_LONG_BI
private static final java.math.BigInteger MAX_VALUE_LONG_BI
private static final java.math.BigDecimal MIN_VALUE_LONG_BD
private static final java.math.BigDecimal MAX_VALUE_LONG_BD
private static final java.math.BigInteger MAX_VALUE_28
private static final java.math.BigInteger MAX_VALUE_38
private static final java.util.HashMap typeMap
private static final char[] hex
public static java.lang.String toHex(byte[] bytes)
bytes - The byte array to convert.String.static java.math.BigDecimal normalizeBigDecimal(java.math.BigDecimal value,
int maxPrecision)
throws java.sql.SQLException
value - The decimal value to normalize.maxPrecision - The decimal precision supported by the server
(assumed to be a value of either 28 or 38).BigDecimal.java.sql.SQLException - If the number is too big.static java.lang.Object castNumeric(java.lang.Object orig,
int sourceType,
int targetType)
static java.lang.Object convert(java.lang.Object callerReference,
java.lang.Object x,
int jdbcType,
java.lang.String charSet)
throws java.sql.SQLException
callerReference - an object reference to the caller of this method;
must be a Connection,
Statement or ResultSetx - the data object to convertjdbcType - the required type constant from
java.sql.Typesjava.sql.SQLException - if the conversion is not supported or failsstatic int getJdbcType(java.lang.Object value)
value - The object to analyse.int.static int getJdbcType(java.lang.Class typeClass)
Class.typeClass - the Class to analyseintstatic java.lang.String getJdbcTypeName(int jdbcType)
jdbcType - The constant to be decoded.String.static java.lang.String getClassName(int jdbcType)
jdbcType - The JDBC Types constant.String.static void embedData(java.lang.StringBuilder buf,
java.lang.Object value,
boolean isUnicode,
JtdsConnection connection)
throws java.sql.SQLException
buf - The buffer in which the data will be embedded.value - The data object.isUnicode - Set to true if Unicode strings should be used, else false.connection - The JtdsConnection object.java.sql.SQLExceptionstatic java.lang.String getStatementKey(java.lang.String sql,
ParamInfo[] params,
int serverType,
java.lang.String catalog,
boolean autoCommit,
boolean cursor)
sql - the sql statement to generate the key forparams - the statement parametersserverType - the type of server to generate the key forcatalog - the catalog is required for uniqueness on Microsoft
SQL ServerautoCommit - true if in auto commit modecursor - true if this is a prepared cursorstatic java.lang.String getParameterDefinitions(ParamInfo[] parameters)
parameters - Parameters to construct the definition forstatic java.lang.String substituteParamMarkers(java.lang.String sql,
ParamInfo[] list)
sql - the SQL containing markers to substitutelist - the parameter listStringstatic java.lang.String substituteParameters(java.lang.String sql,
ParamInfo[] list,
JtdsConnection connection)
throws java.sql.SQLException
sql - The SQL containing parameter markers to substitute.list - The parameter descriptors.connection - The current connection.java.sql.SQLExceptionstatic byte[] encodeString(java.lang.String cs,
java.lang.String value)
cs - The Charset name.value - The value to encode.byte[].public static java.sql.SQLWarning linkException(java.sql.SQLWarning sqle,
java.lang.Throwable cause)
SQLWarning.
This convenience method calls linkException(Exception, Throwable)
and casts the result for cleaner code elsewhere.
sqle - The SQLWarning to enhance.cause - The Throwable to link.SQLWarning object.public static java.sql.SQLException linkException(java.sql.SQLException sqle,
java.lang.Throwable cause)
SQLException.
This convenience method calls linkException(Exception, Throwable)
and casts the result for cleaner code elsewhere.
sqle - The SQLException to enhance.cause - The Throwable to link.SQLException object.public static java.lang.Throwable linkException(java.lang.Exception exception,
java.lang.Throwable cause)
Exception.
If running under JVM 1.4+ the Throwable.initCause(Throwable)
method will be invoked to chain the exception, else the exception is
logged via the Logger class.
Modeled after the code written by Brian Heineman.
exception - The Exception to enhance.cause - The Throwable to link.Exception object.public static long timeToZone(java.util.Date value,
java.util.Calendar target)
value - the timestamp valuetarget - the Calendar containing the TimeZonelongpublic static long timeFromZone(java.util.Date value,
java.util.Calendar target)
value - the timestamp value.target - the Calendar containing the TimeZone.long.public static java.lang.Object convertLOB(java.lang.Object value)
throws java.sql.SQLException
Clob to
String and Blob to byte[]. If the
value passed is not a LOB object, it is left unchanged and no exception
is thrown; the idea is to transparently convert only LOBs.value - an object that may be a LOBjava.sql.SQLException - if an error occurs while reading the LOB contentspublic static int convertLOBType(int type)
Types.CLOB to Types.LONGVARCHAR and
Types.BLOB to Types.LONGVARBINARY. If the
type passed is not that of a LOB, it is left unchanged and no exception
is thrown; the idea is to transparently convert only LOB types.type - a Types constant defining a JDBC type, possibly a
LOBpublic static boolean isWindowsOS()
os.name system property to see if it starts
with "windows".true if os.name starts with "windows",
else false.private static JtdsConnection getConnection(java.lang.Object callerReference)
ResultSet,
Statement or Connection object.callerReference - an object reference to the caller of this method;
must be a Connection, Statement or
ResultSetstatic int calculateNamedPipeBufferSize(int tdsVersion,
int packetSize)
InputStream
for named pipes.
The buffer size is tied directly to the packet size because each request
to the SmbNamedPipe will send a request for a particular
size of packet. In other words, if you only request 1 byte, the
SmbNamedPipe will send a request out and only ask for 1 byte
back. Buffering the expected packet size ensures that all of the data
will be returned in the buffer without wasting any space.tdsVersion - the TDS version for the connectionpacketSize - requested packet size for the connectionpacketSize == 0,
else packetSizeGenerated on June 8 2013