📄 preparedstatement.java
字号:
* 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 SQLException if a database access error occurs */ public void setTime(int parameterIndex, Time x) throws SQLException { 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 SQLException if a database access error occurs */ public void setTimestamp(int parameterIndex, Timestamp x) throws SQLException { set(parameterIndex, "'" + x.toString() + "'"); } /** * 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 SQLException if a database access error occurs */ public void setAsciiStream(int parameterIndex, InputStream x, int length) throws SQLException { 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. * * ** DEPRECIATED IN JDBC 2 ** * * <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 SQLException if a database access error occurs * @deprecated */ public void setUnicodeStream(int parameterIndex, InputStream x, int length) throws SQLException { 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 SQLException if a database access error occurs */ public void setBinaryStream(int parameterIndex, InputStream x, int length) throws SQLException { throw new PSQLException("postgresql.prep.is"); } /** * 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 SQLException if a database access error occurs */ public void clearParameters() throws SQLException { int i; for (i = 0 ; i < inStrings.length ; i++) inStrings[i] = null; } /** * 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 SQLException if a database access error occurs */ public void setObject(int parameterIndex, Object x, int targetSqlType, int scale) throws SQLException { 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: if (x instanceof Boolean) set(parameterIndex, ((Boolean)x).booleanValue() ? "1" : "0"); else set(parameterIndex, x.toString()); break; case Types.CHAR: case Types.VARCHAR: case Types.LONGVARCHAR: setString(parameterIndex, x.toString()); break; case Types.DATE: setDate(parameterIndex, (java.sql.Date)x); break; case Types.TIME: setTime(parameterIndex, (Time)x); break; case Types.TIMESTAMP: setTimestamp(parameterIndex, (Timestamp)x); break; case Types.OTHER: setString(parameterIndex, ((PGobject)x).getValue()); break; default: throw new PSQLException("postgresql.prep.type"); } } public void setObject(int parameterIndex, Object x, int targetSqlType) throws SQLException { setObject(parameterIndex, x, targetSqlType, 0); } /** * This stores an Object into a parameter. * <p>New for 6.4, if the object is not recognised, but it is * Serializable, then the object is serialised using the * postgresql.util.Serialize class. */ public void setObject(int parameterIndex, Object x) throws SQLException { if (x instanceof String) setString(parameterIndex, (String)x); else if (x instanceof BigDecimal) setBigDecimal(parameterIndex, (BigDecimal)x); else if (x instanceof Short) setShort(parameterIndex, ((Short)x).shortValue()); else if (x instanceof Integer) setInt(parameterIndex, ((Integer)x).intValue()); else if (x instanceof Long) setLong(parameterIndex, ((Long)x).longValue()); else if (x instanceof Float) setFloat(parameterIndex, ((Float)x).floatValue()); else if (x instanceof Double) setDouble(parameterIndex, ((Double)x).doubleValue()); else if (x instanceof byte[]) setBytes(parameterIndex, (byte[])x); else if (x instanceof java.sql.Date) setDate(parameterIndex, (java.sql.Date)x); else if (x instanceof Time) setTime(parameterIndex, (Time)x); else if (x instanceof Timestamp) setTimestamp(parameterIndex, (Timestamp)x); else if (x instanceof Boolean) setBoolean(parameterIndex, ((Boolean)x).booleanValue()); else if (x instanceof PGobject) setString(parameterIndex, ((PGobject)x).getValue()); else setLong(parameterIndex, connection.putObject(x)); } /** * Some prepared statements return multiple results; the execute method * handles these complex statements as well as the simpler form of * statements handled by executeQuery and executeUpdate * * @return true if the next result is a ResultSet; false if it is an * update count or there are no more results * @exception SQLException if a database access error occurs */ public boolean execute() throws SQLException { StringBuffer s = new StringBuffer(); int i; for (i = 0 ; i < inStrings.length ; ++i) { if (inStrings[i] == null) throw new PSQLException("postgresql.prep.param",new Integer(i + 1)); s.append (templateStrings[i]); s.append (inStrings[i]); } s.append(templateStrings[inStrings.length]); return super.execute(s.toString()); // in Statement class } /** * Returns the SQL statement with the current template values * substituted. */ public String toString() { StringBuffer s = new StringBuffer(); int i; for (i = 0 ; i < inStrings.length ; ++i) { if (inStrings[i] == null) s.append( '?' ); else s.append (templateStrings[i]); s.append (inStrings[i]); } s.append(templateStrings[inStrings.length]); return s.toString(); } // ************************************************************** // END OF PUBLIC INTERFACE // ************************************************************** /** * There are a lot of setXXX classes which all basically do * the same thing. We need a method which actually does the * set for us. * * @param paramIndex the index into the inString * @param s a string to be stored * @exception SQLException if something goes wrong */ private void set(int paramIndex, String s) throws SQLException { if (paramIndex < 1 || paramIndex > inStrings.length) throw new PSQLException("postgresql.prep.range"); inStrings[paramIndex - 1] = s; } // ** JDBC 2 Extensions ** public void addBatch() throws SQLException { throw postgresql.Driver.notImplemented(); } public java.sql.ResultSetMetaData getMetaData() throws SQLException { throw postgresql.Driver.notImplemented(); } public void setArray(int i,Array x) throws SQLException { throw postgresql.Driver.notImplemented(); } public void setBlob(int i,Blob x) throws SQLException { throw postgresql.Driver.notImplemented(); } public void setCharacterStream(int i,java.io.Reader x,int length) throws SQLException { throw postgresql.Driver.notImplemented(); } public void setClob(int i,Clob x) throws SQLException { throw postgresql.Driver.notImplemented(); } public void setNull(int i,int t,String s) throws SQLException { throw postgresql.Driver.notImplemented(); } public void setRef(int i,Ref x) throws SQLException { throw postgresql.Driver.notImplemented(); } public void setDate(int i,java.sql.Date d,java.util.Calendar cal) throws SQLException { throw postgresql.Driver.notImplemented(); } public void setTime(int i,Time t,java.util.Calendar cal) throws SQLException { throw postgresql.Driver.notImplemented(); } public void setTimestamp(int i,Timestamp t,java.util.Calendar cal) throws SQLException { throw postgresql.Driver.notImplemented(); } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -