📄 resultset.java
字号:
} return null; // SQL NULL } /** * Get the value of a column in the current row as a * java.sql.Timestamp object * * @param columnIndex the first column is 1, the second is 2... * @return the column value; null if SQL NULL * @exception SQLException if a database access error occurs */ public Timestamp getTimestamp(int columnIndex) throws SQLException { String s = getString(columnIndex); if(s==null) return null; SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:sszzz"); try { return new Timestamp(df.parse(s).getTime()); } catch(ParseException e) { throw new PSQLException("postgresql.res.badtimestamp",new Integer(e.getErrorOffset()),s); } } /** * A column value can be retrieved as a stream of ASCII characters * and then read in chunks from the stream. This method is * particular suitable for retrieving large LONGVARCHAR values. * The JDBC driver will do any necessary conversion from the * database format into ASCII. * * <p><B>Note:</B> All the data in the returned stream must be read * prior to getting the value of any other column. The next call * to a get method implicitly closes the stream. Also, a stream * may return 0 for available() whether there is data available * or not. * *<p> We implement an ASCII stream as a Binary stream - we should really * do the data conversion, but I cannot be bothered to implement this * right now. * * @param columnIndex the first column is 1, the second is 2, ... * @return a Java InputStream that delivers the database column * value as a stream of one byte ASCII characters. If the * value is SQL NULL then the result is null * @exception SQLException if a database access error occurs * @see getBinaryStream */ public InputStream getAsciiStream(int columnIndex) throws SQLException { return getBinaryStream(columnIndex); } /** * A column value can also be retrieved as a stream of Unicode * characters. We implement this as a binary stream. * * ** DEPRECATED IN JDBC 2 ** * * @param columnIndex the first column is 1, the second is 2... * @return a Java InputStream that delivers the database column value * as a stream of two byte Unicode characters. If the value is * SQL NULL, then the result is null * @exception SQLException if a database access error occurs * @see getAsciiStream * @see getBinaryStream * @deprecated */ public InputStream getUnicodeStream(int columnIndex) throws SQLException { return getBinaryStream(columnIndex); } /** * A column value can also be retrieved as a binary strea. This * method is suitable for retrieving LONGVARBINARY values. * * @param columnIndex the first column is 1, the second is 2... * @return a Java InputStream that delivers the database column value * as a stream of bytes. If the value is SQL NULL, then the result * is null * @exception SQLException if a database access error occurs * @see getAsciiStream * @see getUnicodeStream */ public InputStream getBinaryStream(int columnIndex) throws SQLException { byte b[] = getBytes(columnIndex); if (b != null) return new ByteArrayInputStream(b); return null; // SQL NULL } /** * The following routines simply convert the columnName into * a columnIndex and then call the appropriate routine above. * * @param columnName is the SQL name of the column * @return the column value * @exception SQLException if a database access error occurs */ public String getString(String columnName) throws SQLException { return getString(findColumn(columnName)); } public boolean getBoolean(String columnName) throws SQLException { return getBoolean(findColumn(columnName)); } public byte getByte(String columnName) throws SQLException { return getByte(findColumn(columnName)); } public short getShort(String columnName) throws SQLException { return getShort(findColumn(columnName)); } public int getInt(String columnName) throws SQLException { return getInt(findColumn(columnName)); } public long getLong(String columnName) throws SQLException { return getLong(findColumn(columnName)); } public float getFloat(String columnName) throws SQLException { return getFloat(findColumn(columnName)); } public double getDouble(String columnName) throws SQLException { return getDouble(findColumn(columnName)); } /** * @deprecated */ public BigDecimal getBigDecimal(String columnName, int scale) throws SQLException { return getBigDecimal(findColumn(columnName), scale); } public byte[] getBytes(String columnName) throws SQLException { return getBytes(findColumn(columnName)); } public java.sql.Date getDate(String columnName) throws SQLException { return getDate(findColumn(columnName)); } public Time getTime(String columnName) throws SQLException { return getTime(findColumn(columnName)); } public Timestamp getTimestamp(String columnName) throws SQLException { return getTimestamp(findColumn(columnName)); } public InputStream getAsciiStream(String columnName) throws SQLException { return getAsciiStream(findColumn(columnName)); } /** * * ** DEPRECATED IN JDBC 2 ** * * @deprecated */ public InputStream getUnicodeStream(String columnName) throws SQLException { return getUnicodeStream(findColumn(columnName)); } public InputStream getBinaryStream(String columnName) throws SQLException { return getBinaryStream(findColumn(columnName)); } /** * The first warning reported by calls on this ResultSet is * returned. Subsequent ResultSet warnings will be chained * to this SQLWarning. * * <p>The warning chain is automatically cleared each time a new * row is read. * * <p><B>Note:</B> This warning chain only covers warnings caused by * ResultSet methods. Any warnings caused by statement methods * (such as reading OUT parameters) will be chained on the * Statement object. * * @return the first SQLWarning or null; * @exception SQLException if a database access error occurs. */ public SQLWarning getWarnings() throws SQLException { return warnings; } /** * After this call, getWarnings returns null until a new warning * is reported for this ResultSet * * @exception SQLException if a database access error occurs */ public void clearWarnings() throws SQLException { warnings = null; } /** * Get the name of the SQL cursor used by this ResultSet * * <p>In SQL, a result table is retrieved though a cursor that is * named. The current row of a result can be updated or deleted * using a positioned update/delete statement that references * the cursor name. * * <p>JDBC supports this SQL feature by providing the name of the * SQL cursor used by a ResultSet. The current row of a ResulSet * is also the current row of this SQL cursor. * * <p><B>Note:</B> If positioned update is not supported, a SQLException * is thrown. * * @return the ResultSet's SQL cursor name. * @exception SQLException if a database access error occurs */ public String getCursorName() throws SQLException { return connection.getCursorName(); } /** * The numbers, types and properties of a ResultSet's columns are * provided by the getMetaData method * * @return a description of the ResultSet's columns * @exception SQLException if a database access error occurs */ public java.sql.ResultSetMetaData getMetaData() throws SQLException { return new ResultSetMetaData(rows, fields); } /** * Get the value of a column in the current row as a Java object * * <p>This method will return the value of the given column as a * Java object. The type of the Java object will be the default * Java Object type corresponding to the column's SQL type, following * the mapping specified in the JDBC specification. * * <p>This method may also be used to read database specific abstract * data types. * * @param columnIndex the first column is 1, the second is 2... * @return a Object holding the column value * @exception SQLException if a database access error occurs */ public Object getObject(int columnIndex) throws SQLException { Field field; if (columnIndex < 1 || columnIndex > fields.length) throw new PSQLException("postgresql.res.colrange"); field = fields[columnIndex - 1]; // some fields can be null, mainly from those returned by MetaData methods if(field==null) { wasNullFlag=true; return null; } switch (field.getSQLType()) { case Types.BIT: return new Boolean(getBoolean(columnIndex)); case Types.SMALLINT: return new Integer(getInt(columnIndex)); case Types.INTEGER: return new Integer(getInt(columnIndex)); case Types.BIGINT: return new Long(getLong(columnIndex)); case Types.NUMERIC: return getBigDecimal(columnIndex, 0); case Types.REAL: return new Float(getFloat(columnIndex)); case Types.DOUBLE: return new Double(getDouble(columnIndex)); case Types.CHAR: case Types.VARCHAR: return getString(columnIndex); case Types.DATE: return getDate(columnIndex); case Types.TIME: return getTime(columnIndex); case Types.TIMESTAMP: return getTimestamp(columnIndex); default: return connection.getObject(field.getTypeName(), getString(columnIndex)); } } /** * Get the value of a column in the current row as a Java object * *<p> This method will return the value of the given column as a * Java object. The type of the Java object will be the default * Java Object type corresponding to the column's SQL type, following * the mapping specified in the JDBC specification. * * <p>This method may also be used to read database specific abstract * data types. * * @param columnName is the SQL name of the column * @return a Object holding the column value * @exception SQLException if a database access error occurs */ public Object getObject(String columnName) throws SQLException { return getObject(findColumn(columnName)); } /** * Map a ResultSet column name to a ResultSet column index * * @param columnName the name of the column * @return the column index * @exception SQLException if a database access error occurs */ public int findColumn(String columnName) throws SQLException { int i; for (i = 0 ; i < fields.length; ++i) if (fields[i].name.equalsIgnoreCase(columnName)) return (i+1); throw new PSQLException ("postgresql.res.colname",columnName); } // ** JDBC 2 Extensions ** public boolean absolute(int index) throws SQLException { if (index < 0 || index > rows.size()) return false; this_row = (byte [][])rows.elementAt(index); return true; } public void afterLast() throws SQLException { throw postgresql.Driver.notImplemented(); } public void beforeFirst() throws SQLException { throw postgresql.Driver.notImplemented(); } public void cancelRowUpdates() throws SQLException { throw postgresql.Driver.notImplemented(); } public void deleteRow() throws SQLException { throw postgresql.Driver.notImplemented(); } public boolean first() throws SQLException { if (rows.size() <= 0) return false; current_row = 0; this_row = (byte [][])rows.elementAt(current_row); return true; } public Array getArray(String colName) throws SQLException { return getArray(findColumn(colName)); } public Array getArray(int i) throws SQLException { throw postgresql.Driver.notImplemented(); } public java.math.BigDecimal getBigDecimal(int columnIndex) throws SQLException { throw postgresql.Driver.notImplemented(); } public java.math.BigDecimal getBigDecimal(String columnName) throws SQLException { return getBigDecimal(findColumn(columnName)); } public Blob getBlob(String columnName) throws SQLException { return getBlob(findColumn(columnName)); } public Blob getBlob(int i) throws SQLException
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -