⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 resultset.java

📁 关系型数据库 Postgresql 6.5.2
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package postgresql.jdbc1;// IMPORTANT NOTE: This file implements the JDBC 1 version of the driver.// If you make any modifications to this file, you must make sure that the// changes are also made (if relevent) to the related JDBC 2 class in the// postgresql.jdbc2 package.import java.lang.*;import java.io.*;import java.math.*;import java.text.*;import java.util.*;import java.sql.*;import postgresql.Field;import postgresql.largeobject.*;import postgresql.util.*;/** * A ResultSet provides access to a table of data generated by executing a * Statement.  The table rows are retrieved in sequence.  Within a row its * column values can be accessed in any order. * * <P>A ResultSet maintains a cursor pointing to its current row of data.   * Initially the cursor is positioned before the first row.  The 'next' * method moves the cursor to the next row. * * <P>The getXXX methods retrieve column values for the current row.  You can * retrieve values either using the index number of the column, or by using * the name of the column.  In general using the column index will be more * efficient.  Columns are numbered from 1. * * <P>For maximum portability, ResultSet columns within each row should be read * in left-to-right order and each column should be read only once. * *<P> For the getXXX methods, the JDBC driver attempts to convert the * underlying data to the specified Java type and returns a suitable Java * value.  See the JDBC specification for allowable mappings from SQL types * to Java types with the ResultSet getXXX methods. * * <P>Column names used as input to getXXX methods are case insenstive.  When * performing a getXXX using a column name, if several columns have the same * name, then the value of the first matching column will be returned.  The * column name option is designed to be used when column names are used in the * SQL Query.  For columns that are NOT explicitly named in the query, it is * best to use column numbers.  If column names were used there is no way for * the programmer to guarentee that they actually refer to the intended * columns. * * <P>A ResultSet is automatically closed by the Statement that generated it  * when that Statement is closed, re-executed, or is used to retrieve the  * next result from a sequence of multiple results. * * <P>The number, types and properties of a ResultSet's columns are provided by * the ResultSetMetaData object returned by the getMetaData method. * * @see ResultSetMetaData * @see java.sql.ResultSet */public class ResultSet extends postgresql.ResultSet implements java.sql.ResultSet {  /**   * Create a new ResultSet - Note that we create ResultSets to   * represent the results of everything.   *   * @param fields an array of Field objects (basically, the   *	ResultSet MetaData)   * @param tuples Vector of the actual data   * @param status the status string returned from the back end   * @param updateCount the number of rows affected by the operation   * @param cursor the positioned update/delete cursor name   */  public ResultSet(Connection conn, Field[] fields, Vector tuples, String status, int updateCount)  {      super(conn,fields,tuples,status,updateCount);  }    /**   * A ResultSet is initially positioned before its first row,   * the first call to next makes the first row the current row;   * the second call makes the second row the current row, etc.   *   * <p>If an input stream from the previous row is open, it is   * implicitly closed.  The ResultSet's warning chain is cleared   * when a new row is read   *   * @return true if the new current is valid; false if there are no   *	more rows   * @exception SQLException if a database access error occurs   */  public boolean next() throws SQLException  {    if (++current_row >= rows.size())      return false;    this_row = (byte [][])rows.elementAt(current_row);    return true;  }    /**   * In some cases, it is desirable to immediately release a ResultSet   * database and JDBC resources instead of waiting for this to happen   * when it is automatically closed.  The close method provides this   * immediate release.   *   * <p><B>Note:</B> A ResultSet is automatically closed by the Statement   * the Statement that generated it when that Statement is closed,   * re-executed, or is used to retrieve the next result from a sequence   * of multiple results.  A ResultSet is also automatically closed    * when it is garbage collected.   *   * @exception SQLException if a database access error occurs   */  public void close() throws SQLException  {    // No-op  }    /**   * A column may have the value of SQL NULL; wasNull() reports whether   * the last column read had this special value.  Note that you must   * first call getXXX on a column to try to read its value and then   * call wasNull() to find if the value was SQL NULL   *   * @return true if the last column read was SQL NULL   * @exception SQLException if a database access error occurred   */  public boolean wasNull() throws SQLException  {    return wasNullFlag;  }    /**   * Get the value of a column in the current row as a Java String   *   * @param columnIndex the first column is 1, the second is 2...   * @return the column value, null for SQL NULL   * @exception SQLException if a database access error occurs   */  public String getString(int columnIndex) throws SQLException  {    //byte[] bytes = getBytes(columnIndex);    //    //if (bytes == null)    //return null;    //return new String(bytes);    if (columnIndex < 1 || columnIndex > fields.length)      throw new PSQLException("postgresql.res.colrange");    wasNullFlag = (this_row[columnIndex - 1] == null);    if(wasNullFlag)      return null;    return new String(this_row[columnIndex - 1]);  }    /**   * Get the value of a column in the current row as a Java boolean   *   * @param columnIndex the first column is 1, the second is 2...   * @return the column value, false for SQL NULL   * @exception SQLException if a database access error occurs   */  public boolean getBoolean(int columnIndex) throws SQLException  {    String s = getString(columnIndex);        if (s != null)      {	int c = s.charAt(0);	return ((c == 't') || (c == 'T'));      }    return false;		// SQL NULL  }    /**   * Get the value of a column in the current row as a Java byte.   *   * @param columnIndex the first column is 1, the second is 2,...   * @return the column value; 0 if SQL NULL   * @exception SQLException if a database access error occurs   */  public byte getByte(int columnIndex) throws SQLException  {    String s = getString(columnIndex);        if (s != null)      {	try	  {	    return Byte.parseByte(s);	  } catch (NumberFormatException e) {	    throw new PSQLException("postgresql.res.badbyte",s);	  }      }    return 0;		// SQL NULL  }    /**   * Get the value of a column in the current row as a Java short.   *   * @param columnIndex the first column is 1, the second is 2,...   * @return the column value; 0 if SQL NULL   * @exception SQLException if a database access error occurs   */  public short getShort(int columnIndex) throws SQLException  {    String s = getString(columnIndex);        if (s != null)      {	try	  {	    return Short.parseShort(s);	  } catch (NumberFormatException e) {	    throw new PSQLException("postgresql.res.badshort",s);	  }      }    return 0;		// SQL NULL  }    /**   * Get the value of a column in the current row as a Java int.   *   * @param columnIndex the first column is 1, the second is 2,...   * @return the column value; 0 if SQL NULL   * @exception SQLException if a database access error occurs   */  public int getInt(int columnIndex) throws SQLException  {    String s = getString(columnIndex);        if (s != null)      {	try	  {	    return Integer.parseInt(s);	  } catch (NumberFormatException e) {	    throw new PSQLException ("postgresql.badint",s);	  }      }    return 0;		// SQL NULL  }    /**   * Get the value of a column in the current row as a Java long.   *   * @param columnIndex the first column is 1, the second is 2,...   * @return the column value; 0 if SQL NULL   * @exception SQLException if a database access error occurs   */  public long getLong(int columnIndex) throws SQLException  {    String s = getString(columnIndex);        if (s != null)      {	try	  {	    return Long.parseLong(s);	  } catch (NumberFormatException e) {	    throw new PSQLException ("postgresql.res.badlong",s);	  }      }    return 0;		// SQL NULL  }    /**   * Get the value of a column in the current row as a Java float.   *   * @param columnIndex the first column is 1, the second is 2,...   * @return the column value; 0 if SQL NULL   * @exception SQLException if a database access error occurs   */  public float getFloat(int columnIndex) throws SQLException  {    String s = getString(columnIndex);        if (s != null)      {	try	  {	    return Float.valueOf(s).floatValue();	  } catch (NumberFormatException e) {	    throw new PSQLException ("postgresql.res.badfloat",s);	  }      }    return 0;		// SQL NULL  }    /**   * Get the value of a column in the current row as a Java double.   *   * @param columnIndex the first column is 1, the second is 2,...   * @return the column value; 0 if SQL NULL   * @exception SQLException if a database access error occurs   */  public double getDouble(int columnIndex) throws SQLException  {    String s = getString(columnIndex);        if (s != null)      {	try	  {	    return Double.valueOf(s).doubleValue();	  } catch (NumberFormatException e) {	    throw new PSQLException ("postgresql.res.baddouble",s);	  }      }    return 0;		// SQL NULL  }    /**   * Get the value of a column in the current row as a    * java.lang.BigDecimal object   *   * @param columnIndex  the first column is 1, the second is 2...   * @param scale the number of digits to the right of the decimal   * @return the column value; if the value is SQL NULL, null   * @exception SQLException if a database access error occurs   */  public BigDecimal getBigDecimal(int columnIndex, int scale) throws SQLException  {    String s = getString(columnIndex);    BigDecimal val;        if (s != null)      {	try	  {	    val = new BigDecimal(s);	  } catch (NumberFormatException e) {	    throw new PSQLException ("postgresql.res.badbigdec",s);	  }	  try	    {	      return val.setScale(scale);	    } catch (ArithmeticException e) {		throw new PSQLException ("postgresql.res.badbigdec",s);	    }      }    return null;		// SQL NULL  }    /**   * Get the value of a column in the current row as a Java byte array.   *   * <p>In normal use, the bytes represent the raw values returned by the   * backend. However, if the column is an OID, then it is assumed to   * refer to a Large Object, and that object is returned as a byte array.   *   * <p><b>Be warned</b> If the large object is huge, then you may run out   * of memory.   *   * @param columnIndex the first column is 1, the second is 2, ...   * @return the column value; if the value is SQL NULL, the result   *	is null   * @exception SQLException if a database access error occurs   */  public byte[] getBytes(int columnIndex) throws SQLException  {    if (columnIndex < 1 || columnIndex > fields.length)      throw new PSQLException("postgresql.res.colrange");    wasNullFlag = (this_row[columnIndex - 1] == null);        // Handle OID's as BLOBS    if(!wasNullFlag)      if( fields[columnIndex - 1].getOID() == 26) {	LargeObjectManager lom = connection.getLargeObjectAPI();	LargeObject lob = lom.open(getInt(columnIndex));	byte buf[] = lob.read(lob.size());	lob.close();	return buf;      }        return this_row[columnIndex - 1];  }    /**   * Get the value of a column in the current row as a java.sql.Date   * 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 java.sql.Date getDate(int columnIndex) throws SQLException  {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -