📄 preparedstatement.java
字号:
public void setLong(int parameterIndex, long x) throws java.sql.SQLException
{
set(parameterIndex, (new Long(x)).toString());
}
/**
* Set a parameter to a Java float value. The driver converts this
* to a SQL FLOAT value when it sends it to the database.
*
* @param parameterIndex the first parameter is 1...
* @param x the parameter value
* @exception java.sql.SQLException if a database access error occurs
*/
public void setFloat(int parameterIndex, float x) throws java.sql.SQLException
{
set(parameterIndex, (new Float(x)).toString());
}
/**
* Set a parameter to a Java double value. The driver converts this
* to a SQL DOUBLE value when it sends it to the database
*
* @param parameterIndex the first parameter is 1...
* @param x the parameter value
* @exception java.sql.SQLException if a database access error occurs
*/
public void setDouble(int parameterIndex, double x) throws java.sql.SQLException
{
set(parameterIndex, _DoubleFormatter.format(x));
// - Fix for large doubles by Steve Ferguson
}
/**
* Set a parameter to a java.lang.BigDecimal value. The driver
* converts this to a SQL NUMERIC value when it sends it to the
* database.
*
* @param parameterIndex the first parameter is 1...
* @param x the parameter value
* @exception java.sql.SQLException if a database access error occurs
*/
public void setBigDecimal(int parameterIndex, BigDecimal X) throws java.sql.SQLException
{
if (X == null) {
setNull(parameterIndex, java.sql.Types.DECIMAL);
}
else {
set(parameterIndex, X.toString());
}
}
/**
* Set a parameter to a Java String value. The driver converts this
* to a SQL VARCHAR or LONGVARCHAR value (depending on the arguments
* size relative to the driver's limits on VARCHARs) when it sends it
* to the database.
*
* @param parameterIndex the first parameter is 1...
* @param x the parameter value
* @exception java.sql.SQLException if a database access error occurs
*/
public void setString(int parameterIndex, String X) throws java.sql.SQLException
{
// if the passed string is null, then set this column to null
if(X == null) {
set(parameterIndex, "null");
}
else {
StringBuffer B = new StringBuffer();
int i;
B.append('\'');
for (i = 0 ; i < X.length() ; ++i) {
char c = X.charAt(i);
if (c == '\\' || c == '\'' || c == '"') {
B.append((char)'\\');
}
B.append(c);
}
B.append('\'');
set(parameterIndex, B.toString());
}
}
/**
* Set a parameter to a Java array of bytes. The driver converts this
* to a SQL VARBINARY or LONGVARBINARY (depending on the argument's
* size relative to the driver's limits on VARBINARYs) when it sends
* it to the database.
*
*
* @param parameterIndex the first parameter is 1...
* @param x the parameter value
* @exception java.sql.SQLException if a database access error occurs
*/
public void setBytes(int parameterIndex, byte x[]) throws java.sql.SQLException
{
if (x == null) {
setNull(parameterIndex, java.sql.Types.BINARY);
}
else {
ByteArrayInputStream BIn = new ByteArrayInputStream(x);
setBinaryStream(parameterIndex, BIn, x.length);
}
}
/**
* Set a parameter to a java.sql.Date value. The driver converts this
* to a SQL DATE value when it sends it to the database.
*
* @param parameterIndex the first parameter is 1...
* @param x the parameter value
* @exception java.sql.SQLException if a database access error occurs
*/
public void setDate(int parameterIndex, java.sql.Date X) throws java.sql.SQLException
{
if (X == null) {
setNull(parameterIndex, java.sql.Types.DATE);
}
else {
SimpleDateFormat DF = new SimpleDateFormat("''yyyy-MM-dd''");
set(parameterIndex, DF.format(X));
}
}
/**
* Set a parameter to a java.sql.Time value. The driver converts
* this to a SQL TIME value when it sends it to the database.
*
* @param parameterIndex the first parameter is 1...));
* @param x the parameter value
* @exception java.sql.SQLException if a database access error occurs
*/
public void setTime(int parameterIndex, Time X) throws java.sql.SQLException
{
if (X == null) {
setNull(parameterIndex, java.sql.Types.TIME);
}
else {
set(parameterIndex, "'" + X.toString() + "'");
}
}
/**
* Set a parameter to a java.sql.Timestamp value. The driver converts
* this to a SQL TIMESTAMP value when it sends it to the database.
*
* @param parameterIndex the first parameter is 1...
* @param x the parameter value
* @exception java.sql.SQLException if a database access error occurs
*/
public void setTimestamp(int parameterIndex, Timestamp X) throws java.sql.SQLException
{
if (X == null) {
setNull(parameterIndex, java.sql.Types.TIMESTAMP);
}
else {
EscapeProcessor EP = new EscapeProcessor();
String TimestampString = EP.escapeSQL("{ts '" + X.toString() + "'}");
set(parameterIndex, TimestampString);
}
}
/**
* When a very large ASCII value is input to a LONGVARCHAR parameter,
* it may be more practical to send it via a java.io.InputStream.
* JDBC will read the data from the stream as needed, until it reaches
* end-of-file. The JDBC driver will do any necessary conversion from
* ASCII to the database char format.
*
* <P><B>Note:</B> This stream object can either be a standard Java
* stream object or your own subclass that implements the standard
* interface.
*
* @param parameterIndex the first parameter is 1...
* @param x the parameter value
* @param length the number of bytes in the stream
* @exception java.sql.SQLException if a database access error occurs
*/
public void setAsciiStream(int parameterIndex, InputStream X, int length) throws java.sql.SQLException
{
if (X == null) {
setNull(parameterIndex, java.sql.Types.VARCHAR);
}
else {
setBinaryStream(parameterIndex, X, length);
}
}
/**
* When a very large Unicode value is input to a LONGVARCHAR parameter,
* it may be more practical to send it via a java.io.InputStream.
* JDBC will read the data from the stream as needed, until it reaches
* end-of-file. The JDBC driver will do any necessary conversion from
* UNICODE to the database char format.
*
* <P><B>Note:</B> This stream object can either be a standard Java
* stream object or your own subclass that implements the standard
* interface.
*
* @param parameterIndex the first parameter is 1...
* @param x the parameter value
* @exception java.sql.SQLException if a database access error occurs
*/
public void setUnicodeStream(int parameterIndex, InputStream X, int length) throws java.sql.SQLException
{
if (X == null) {
setNull(parameterIndex, java.sql.Types.VARCHAR);
}
else {
setBinaryStream(parameterIndex, X, length);
}
}
/**
* When a very large binary value is input to a LONGVARBINARY parameter,
* it may be more practical to send it via a java.io.InputStream.
* JDBC will read the data from the stream as needed, until it reaches
* end-of-file.
*
* <P><B>Note:</B> This stream object can either be a standard Java
* stream object or your own subclass that implements the standard
* interface.
*
* @param parameterIndex the first parameter is 1...
* @param x the parameter value
* @exception java.sql.SQLException if a database access error occurs
*/
public void setBinaryStream(int parameterIndex, InputStream X, int length) throws java.sql.SQLException
{
if (X == null) {
setNull(parameterIndex, java.sql.Types.BINARY);
}
else {
if (parameterIndex < 1 ||
parameterIndex > _TemplateStrings.length) {
throw new java.sql.SQLException("Parameter index out of range (" + parameterIndex + " > " + _TemplateStrings.length + ")", "S1009");
}
_ParameterStreams[parameterIndex - 1] = X;
_IsStream[parameterIndex - 1] = true;
}
}
/**
* In general, parameter values remain in force for repeated used of a
* Statement. Setting a parameter value automatically clears its
* previous value. However, in coms cases, it is useful to immediately
* release the resources used by the current parameter values; this
* can be done by calling clearParameters
*
* @exception java.sql.SQLException if a database access error occurs
*/
public void clearParameters() throws java.sql.SQLException
{
for (int i = 0 ; i < _ParameterStrings.length ; i++) {
_ParameterStrings[i] = null;
_ParameterStreams[i] = null;
_IsStream[i] = false;
}
}
/**
* Set the value of a parameter using an object; use the java.lang
* equivalent objects for integral values.
*
* <P>The given Java object will be converted to the targetSqlType before
* being sent to the database.
*
* <P>note that this method may be used to pass database-specific
* abstract data types. This is done by using a Driver-specific
* Java type and using a targetSqlType of java.sql.Types.OTHER
*
* @param parameterIndex the first parameter is 1...
* @param x the object containing the input parameter value
* @param targetSqlType The SQL type to be send to the database
* @param scale For java.sql.Types.DECIMAL or java.sql.Types.NUMERIC
* types this is the number of digits after the decimal. For
* all other types this value will be ignored.
* @exception java.sql.SQLException if a database access error occurs
*/
public void setObject(int parameterIndex, Object X, int targetSqlType, int scale) throws java.sql.SQLException
{
if (X == null) {
setNull(parameterIndex, java.sql.Types.OTHER);
}
else try {
switch (targetSqlType)
{
case Types.TINYINT:
case Types.SMALLINT:
case Types.INTEGER:
case Types.BIGINT:
case Types.REAL:
case Types.FLOAT:
case Types.DOUBLE:
case Types.DECIMAL:
case Types.NUMERIC:
Number X_as_number;
if (X instanceof Boolean)
X_as_number=((Boolean)X).booleanValue() ? new Integer(1) : new Integer(0);
else if (X instanceof String)
switch (targetSqlType) {
case Types.TINYINT:
case Types.SMALLINT:
case Types.INTEGER:
X_as_number=Integer.valueOf((String)X);
break;
case Types.BIGINT:
X_as_number=Long.valueOf((String)X);
break;
case Types.REAL:
X_as_number=Float.valueOf((String)X);
break;
case Types.FLOAT:
case Types.DOUBLE:
X_as_number=Double.valueOf((String)X);
break;
case Types.DECIMAL:
case Types.NUMERIC:
default:
X_as_number=new java.math.BigDecimal((String)X);
}
else
X_as_number=(Number)X;
switch (targetSqlType) {
case Types.TINYINT:
case Types.SMALLINT:
case Types.INTEGER:
setInt(parameterIndex, X_as_number.intValue());
break;
case Types.BIGINT:
setLong(parameterIndex, X_as_number.longValue());
break;
case Types.REAL:
setFloat(parameterIndex, X_as_number.floatValue());
break;
case Types.FLOAT:
case Types.DOUBLE:
setDouble(parameterIndex, X_as_number.doubleValue());
break;
case Types.DECIMAL:
case Types.NUMERIC:
default:
if (X_as_number instanceof java.math.BigDecimal)
setBigDecimal(parameterIndex, (java.math.BigDecimal)X_as_number);
else if (X_as_number instanceof java.math.BigInteger)
setBigDecimal(parameterIndex, new java.math.BigDecimal((java.math.BigInteger)X_as_number,scale));
else
setBigDecimal(parameterIndex, new java.math.BigDecimal(X_as_number.doubleValue()));
break;
}
break;
case Types.CHAR:
case Types.VARCHAR:
case Types.LONGVARCHAR:
setString(parameterIndex, X.toString());
break;
case Types.BINARY:
case Types.VARBINARY:
case Types.LONGVARBINARY:
if (X instanceof String)
setBytes(parameterIndex, ((String)X).getBytes());
else
setBytes(parameterIndex, (byte[])X);
break;
case Types.DATE:
case Types.TIMESTAMP:
java.util.Date X_as_date;
if (X instanceof String) {
ParsePosition pp=new ParsePosition(0);
java.text.DateFormat sdf=new java.text.SimpleDateFormat(getDateTimePattern((String)X,false));
X_as_date=sdf.parse((String)X,pp);
} else
X_as_date=(java.util.Date)X;
switch(targetSqlType) {
case Types.DATE:
if (X_as_date instanceof java.sql.Date)
setDate(parameterIndex,(java.sql.Date)X_as_date);
else
setDate(parameterIndex,new java.sql.Date(X_as_date.getTime()));
break;
case Types.TIMESTAMP:
if (X_as_date instanceof java.sql.Timestamp)
setTimestamp(parameterIndex,(java.sql.Timestamp)X_as_date);
else
setTimestamp(parameterIndex,new java.sql.Timestamp(X_as_date.getTime()));
break;
}
break;
case Types.TIME:
if (X instanceof String) {
java.text.DateFormat sdf=new java.text.SimpleDateFormat(getDateTimePattern((String)X,true));
setTime(parameterIndex,new java.sql.Time(sdf.parse((String)X).getTime()));
} else
setTime(parameterIndex,(java.sql.Time)X);
break;
case Types.OTHER:
try {
ByteArrayOutputStream BytesOut = new ByteArrayOutputStream();
ObjectOutputStream ObjectOut = new ObjectOutputStream(BytesOut);
ObjectOut.writeObject(X);
ObjectOut.flush();
ObjectOut.close();
BytesOut.flush();
BytesOut.close();
byte[] buf = BytesOut.toByteArray();
ByteArrayInputStream BytesIn = new ByteArrayInputStream(buf);
setBinaryStream(parameterIndex, BytesIn, -1);
}
catch (Exception E) {
throw new java.sql.SQLException("Invalid argument value: " + E.getClass().getName(), "S1009");
}
break;
default:
throw new java.sql.SQLException("Unknown Types value", "S1000");
}
} catch (Exception ex) {
if (ex instanceof java.sql.SQLException) throw (java.sql.SQLException)ex;
else throw new java.sql.SQLException("Cannot convert "+X.getClass().toString()+" to SQL type requested", "S1000");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -