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 ResultSet
x
- the data object to convertjdbcType
- the required type constant from
java.sql.Types
java.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 analyseint
static 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.SQLException
static 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 listString
static 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.SQLException
static 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 TimeZonelong
public 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
ResultSet
static 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 packetSize
Generated on June 8 2013