ObjectStreamException.java: New file.

* java/io/ObjectStreamException.java: New file.
	* java/io/OptionalDataException.java: New file.
	* java/io/StreamCorruptedException.java: New file.
	* java/math/BigDecimal.java: New file.
	* java/sql/CallableStatement.java: New file.
	* java/sql/Connection.java: New file.
	* java/sql/DataTruncation.java: New file.
	* java/sql/DatabaseMetaData.java: New file.
	* java/sql/Date.java: New file.
	* java/sql/Driver.java: New file.
	* java/sql/DriverManager.java: New file.
	* java/sql/DriverPropertyInfo.java: New file.
	* java/sql/PreparedStatement.java: New file.
	* java/sql/ResultSet.java: New file.
	* java/sql/ResultSetMetaData.java: New file.
	* java/sql/SQLException.java: New file.
	* java/sql/SQLWarning.java: New file.
	* java/sql/Statement.java: New file.
	* java/sql/Time.java: New file.
	* java/sql/Timestamp.java: New file.
	* java/sql/Types.java: New file.
	* Makefile.am: Added above new files.
	* Makefile.in: Rebuilt.

	* mauve-libgcj: Turned on java.math, java.sql and java.security tests.
	* java/net/MulticastSocket.java (MulticastSocket): Pass values a la
	DatagramSocket constructor instead of null.

java.sql is JDK 1.1 Compliant

From-SVN: r33077
This commit is contained in:
Warren Levy 2000-04-11 09:21:53 +00:00 committed by Warren Levy
parent 3a2b2c7a20
commit d0123c54ca
26 changed files with 7065 additions and 20 deletions

View file

@ -0,0 +1,299 @@
/* CallableStatement.java -- A statement for calling stored procedures.
Copyright (C) 1999 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
As a special exception, if you link this library with other files to
produce an executable, this library does not by itself cause the
resulting executable to be covered by the GNU General Public License.
This exception does not however invalidate any other reasons why the
executable file might be covered by the GNU General Public License. */
package java.sql;
import java.io.InputStream;
import java.io.Reader;
import java.math.BigDecimal;
import java.util.Calendar;
/**
* This interface provides a mechanism for calling stored procedures.
*
* @author Aaron M. Renn (arenn@urbanophile.com)
*/
public interface CallableStatement extends PreparedStatement
{
/*************************************************************************/
/**
* This method tests whether the value of the last parameter that was fetched
* was actually a SQL NULL value.
*
* @return <code>true</code> if the last parameter fetched was a NULL,
* <code>false</code> otherwise.
*
* @exception SQLException If an error occurs.
*/
public abstract boolean
wasNull() throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified parameter as a Java
* <code>String</code>.
*
* @param index The index of the parameter to return.
*
* @return The parameter value as a <code>String</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract String
getString(int index) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified parameter as a Java
* <code>Object</code>.
*
* @param index The index of the parameter to return.
*
* @return The parameter value as an <code>Object</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract Object
getObject(int index) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified parameter as a Java
* <code>boolean</code>.
*
* @param index The index of the parameter to return.
*
* @return The parameter value as a <code>boolean</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract boolean
getBoolean(int index) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified parameter as a Java
* <code>byte</code>.
*
* @param index The index of the parameter to return.
*
* @return The parameter value as a <code>byte</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract byte
getByte(int index) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified parameter as a Java
* <code>short</code>.
*
* @param index The index of the parameter to return.
*
* @return The parameter value as a <code>short</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract short
getShort(int index) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified parameter as a Java
* <code>int</code>.
*
* @param index The index of the parameter to return.
*
* @return The parameter value as a <code>int</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract int
getInt(int index) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified parameter as a Java
* <code>long</code>.
*
* @param index The index of the parameter to return.
*
* @return The parameter value as a <code>long</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract long
getLong(int index) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified parameter as a Java
* <code>float</code>.
*
* @param index The index of the parameter to return.
*
* @return The parameter value as a <code>float</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract float
getFloat(int index) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified parameter as a Java
* <code>double</code>.
*
* @param index The index of the parameter to return.
*
* @return The parameter value as a <code>double</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract double
getDouble(int index) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified parameter as a Java
* <code>BigDecimal</code>.
*
* @param index The index of the parameter to return.
* @param scale The number of digits to the right of the decimal to return.
*
* @return The parameter value as a <code>BigDecimal</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract BigDecimal
getBigDecimal(int index, int scale) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified parameter as a Java
* byte array.
*
* @param index The index of the parameter to return.
*
* @return The parameter value as a byte array
*
* @exception SQLException If an error occurs.
*/
public abstract byte[]
getBytes(int index) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified parameter as a Java
* <code>java.sql.Date</code>.
*
* @param index The index of the parameter to return.
*
* @return The parameter value as a <code>java.sql.Date</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract java.sql.Date
getDate(int index) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified parameter as a Java
* <code>java.sql.Time</code>.
*
* @param index The index of the parameter to return.
*
* @return The parameter value as a <code>java.sql.Time</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract java.sql.Time
getTime(int index) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified parameter as a Java
* <code>java.sql.Timestamp</code>.
*
* @param index The index of the parameter to return.
*
* @return The parameter value as a <code>java.sql.Timestamp</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract java.sql.Timestamp
getTimestamp(int index) throws SQLException;
/*************************************************************************/
/**
* This method registers the specified parameter as an output parameter
* of the specified SQL type.
*
* @param index The index of the parameter to register as output.
* @param type The SQL type value from <code>Types</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract void
registerOutParameter(int index, int type) throws SQLException;
/*************************************************************************/
/**
* This method registers the specified parameter as an output parameter
* of the specified SQL type and scale.
*
* @param index The index of the parameter to register as output.
* @param type The SQL type value from <code>Types</code>.
* @param scale The scale of the value that will be returned.
*
* @exception SQLException If an error occurs.
*/
public abstract void
registerOutParameter(int index, int type, int scale) throws SQLException;
} // interface CallableStatement

View file

@ -0,0 +1,350 @@
/* Connection.java -- Manage a database connection.
Copyright (C) 1999, 2000 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
As a special exception, if you link this library with other files to
produce an executable, this library does not by itself cause the
resulting executable to be covered by the GNU General Public License.
This exception does not however invalidate any other reasons why the
executable file might be covered by the GNU General Public License. */
package java.sql;
/**
* This interface provides methods for managing a connection to a database.
*
* @author Aaron M. Renn (arenn@urbanophile.com)
*/
public interface Connection
{
/**
* This transaction isolation level indicates that transactions are not
* supported.
*/
public static final int TRANSACTION_NONE = 0;
/**
* This transaction isolation level indicates that one transaction can
* read modifications by other transactions before the other transactions
* have committed their changes. This could result in invalid reads.
*/
public static final int TRANSACTION_READ_UNCOMMITTED = 1;
/**
* This transaction isolation leve indicates that only committed data from
* other transactions will be read. If a transaction reads a row, then
* another transaction commits a change to that row, the first transaction
* would retrieve the changed row on subsequent reads of the same row.
*/
public static final int TRANSACTION_READ_COMMITTED = 2;
/**
* This transaction isolation level indicates that only committed data from
* other transactions will be read. It also ensures that data read from
* a row will not be different on a subsequent read even if another
* transaction commits a change.
*/
public static final int TRANSACTION_REPEATABLE_READ = 4;
/**
* This transaction isolation level indicates that only committed data from
* other transactions will be read. It also ensures that data read from
* a row will not be different on a subsequent read even if another
* transaction commits a change. Additionally, rows modified by other
* transactions will not affect the result set returned during subsequent
* executions of the same WHERE clause in this transaction.
*/
public static final int TRANSACTION_SERIALIZABLE = 8;
/*************************************************************************/
/**
* This method creates a new SQL statement. The default result set type
* and concurrency will be used.
*
* @return A new <code>Statement</code> object.
*
* @exception SQLException If an error occurs.
*
* @see Statement
*/
public abstract Statement
createStatement() throws SQLException;
/*************************************************************************/
/**
* This method creates a new <code>PreparedStatement</code> for the specified
* SQL string. This method is designed for use with parameterized
* statements. The default result set type and concurrency will be used.
*
* @param The SQL statement to use in creating this
* <code>PreparedStatement</code>.
*
* @return A new <code>PreparedStatement</code>.
*
* @exception SQLException If an error occurs.
*
* @see PreparedStatement
*/
public abstract PreparedStatement
prepareStatement(String sql) throws SQLException;
/*************************************************************************/
/**
* This method creates a new <code>CallableStatement</code> for the
* specified SQL string. Thie method is designed to be used with
* stored procedures. The default result set type and concurrency
* will be used.
*
* @param The SQL statement to use in creating this
* <code>CallableStatement</code>.
*
* @return A new <code>CallableStatement</code>.
*
* @exception SQLException If an error occurs.
*
* @see CallableStatement
*/
public abstract CallableStatement
prepareCall(String sql) throws SQLException;
/*************************************************************************/
/**
* This method converts the specified generic SQL statement into the
* native grammer of the database this object is connected to.
*
* @param The JDBC generic SQL statement.
*
* @return The native SQL statement.
*
* @exception SQLException If an error occurs.
*/
public abstract String
nativeSQL(String sql) throws SQLException;
/*************************************************************************/
/**
* This method tests whether or not auto commit mode is currently enabled.
* In auto commit mode, every SQL statement is committed its own transaction.
* Otherwise a transaction must be explicitly committed or rolled back.
*
* @return <code>true</code> if auto commit mode is enabled,
* <code>false</code> otherwise.
*
* @exception SQLException If an error occurs.
*
* @see commit
* @see rollback
*/
public abstract boolean
getAutoCommit() throws SQLException;
/*************************************************************************/
/**
* This method turns auto commit mode on or off. In auto commit mode,
* every SQL statement is committed its own transaction. Otherwise a
* transaction must be explicitly committed or rolled back.
*
* @param autoCommit <code>true</code> to enable auto commit mode,
* <code>false</code> to disable it.
*
* @exception SQLException If an error occurs.
*
* @see commit
* @see rollback
*/
public abstract void
setAutoCommit(boolean autoCommit) throws SQLException;
/*************************************************************************/
/**
* This method commits any SQL statements executed on this connection since
* the last commit or rollback.
*
* @exception SQLException If an error occurs.
*/
public abstract void
commit() throws SQLException;
/*************************************************************************/
/**
* This method rolls back any SQL statements executed on this connection
* since the last commit or rollback.
*
* @exception SQLException If an error occurs.
*/
public abstract void
rollback() throws SQLException;
/*************************************************************************/
/**
* This method immediately closes this database connection.
*
* @exception SQLException If an error occurs.
*/
public abstract void
close() throws SQLException;
/*************************************************************************/
/**
* This method tests whether or not this connection has been closed.
*
* @return <code>true</code> if the connection is closed, <code>false</code>
* otherwise.
*
* @exception SQLException If an error occurs.
*/
public abstract boolean
isClosed() throws SQLException;
/*************************************************************************/
/**
* This method returns the meta data for this database connection.
*
* @return The meta data for this database.
*
* @exception SQLException If an error occurs.
*
* @see DatabaseMetaData
*/
public abstract DatabaseMetaData
getMetaData() throws SQLException;
/*************************************************************************/
/**
* This method tests whether or not this connection is in read only mode.
*
* @return <code>true</code> if the connection is read only <code>false</code>
* otherwise.
*
* @exception SQLException If an error occurs.
*/
public abstract boolean
isReadOnly() throws SQLException;
/*************************************************************************/
/**
* This method turns read only mode on or off. It may not be called while
* a transaction is in progress.
*
* @param readOnly <code>true</code> if this connection is read only,
* <code>false</code> otherwise.
*
* @exception SQLException If an error occurs.
*/
public abstract void
setReadOnly(boolean readOnly) throws SQLException;
/*************************************************************************/
/**
* This method returns the name of the catalog in use by this connection,
* if any.
*
* @return The name of the catalog, or <code>null</code> if one does not
* exist or catalogs are not supported by this database.
*
* @exception SQLException If an error occurs.
*/
public abstract String
getCatalog() throws SQLException;
/*************************************************************************/
/**
* This method sets the name of the catalog in use by this connection.
* Note that this method does nothing if catalogs are not supported by
* this database.
*
* @param catalog The name of the catalog to use for this connection.
*
* @exception SQLException If an error occurs.
*/
public abstract void
setCatalog(String catalog) throws SQLException;
/*************************************************************************/
/**
* This method returns the current transaction isolation mode. This will
* be one of the constants defined in this interface.
*
* @return The transaction isolation level.
*
* @exception SQLException If an error occurs.
*/
public abstract int
getTransactionIsolation() throws SQLException;
/*************************************************************************/
/**
* This method sets the transaction isolation level using one of the
* constants defined in this interface.
*
* @param level The transaction isolation level to change to; must be
* one of the TRANSACTION_* isolation values with the exception of
* TRANSACTION_NONE; some databases may not support other values.
*
* @exception SQLException If an error occurs.
*/
public abstract void
setTransactionIsolation(int level) throws SQLException;
/*************************************************************************/
/**
* This method returns the first warning that occurred on this connection,
* if any. If there were any subsequence warnings, they will be chained
* to the first one.
*
* @return The first <code>SQLWarning</code> that occurred, or
* <code>null</code> if there have been no warnings.
*
* @exception SQLException If an error occurs.
*/
public abstract SQLWarning
getWarnings() throws SQLException;
/*************************************************************************/
/**
* This method clears all warnings that have occurred on this connection.
*
* @exception SQLException If an error occurs.
*/
public abstract void
clearWarnings() throws SQLException;
} // interface Connection

View file

@ -0,0 +1,185 @@
/* DataTruncation.java -- Warning when data has been truncated.
Copyright (C) 1999 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
As a special exception, if you link this library with other files to
produce an executable, this library does not by itself cause the
resulting executable to be covered by the GNU General Public License.
This exception does not however invalidate any other reasons why the
executable file might be covered by the GNU General Public License. */
package java.sql;
/**
* This exception is thrown when a piece of data is unexpectedly
* truncated in JDBC.
*
* @author Aaron M. Renn (arenn@urbanophile.com)
*/
public class DataTruncation extends SQLWarning implements java.io.Serializable
{
/*************************************************************************/
/*
* Instance Variables
*/
/**
* The original size of the data.
* @serialized
*/
private int dataSize;
/**
* The index of the parameter or column whose value was truncated.
* @serialized
*/
private int index;
/**
* Indicates whether or not a parameter value was truncated.
* @serialized
*/
private boolean parameter;
/**
* Indicates whether or not a data column value was truncated.
* @serialized
*/
private boolean read;
/**
* This is the size of the data after truncation.
* @serialized
*/
private int transferSize;
/*************************************************************************/
/*
* Constructors
*/
/**
* This method initializes a new instance of <code>DataTruncation</code>
* with the specified values. The descriptive error message for this
* exception will be "Data truncation", the SQL state will be "01004"
* and the vendor specific error code will be set to 0.
*
* @param index The index of the parameter or column that was truncated.
* @param parameter <code>true</code> if a parameter was truncated,
* <code>false</code> otherwise.
* @param read <code>true</code> if a data column was truncated,
* <code>false</code> otherwise.
* @param dataSize The original size of the data.
* @param transferSize The size of the data after truncation.
*/
public
DataTruncation(int index, boolean parameter, boolean read, int dataSize,
int transferSize)
{
super("Data truncation", "01004");
this.index = index;
this.parameter = parameter;
this.read = read;
this.dataSize = dataSize;
this.transferSize = transferSize;
}
/*************************************************************************/
/*
* Instance Methods
*/
/**
* This method returns the index of the column or parameter that was
* truncated.
*
* @return The index of the column or parameter that was truncated.
*/
public int
getIndex()
{
return(index);
}
/*************************************************************************/
/**
* This method determines whether or not it was a parameter that was
* truncated.
*
* @return <code>true</code> if a parameter was truncated, <code>false</code>
* otherwise.
*/
public boolean
getParameter()
{
return(parameter);
}
/*************************************************************************/
/**
* This method determines whether or not it was a column that was
* truncated.
*
* @return <code>true</code> if a column was truncated, <code>false</code>
* otherwise.
*/
public boolean
getRead()
{
return(read);
}
/*************************************************************************/
/**
* This method returns the original size of the parameter or column that
* was truncated.
*
* @return The original size of the parameter or column that was truncated.
*/
public int
getDataSize()
{
return(dataSize);
}
/*************************************************************************/
/**
* This method returns the size of the parameter or column after it was
* truncated.
*
* @return The size of the parameter or column after it was truncated.
*/
public int
getTransferSize()
{
return(transferSize);
}
} // class DataTruncation

File diff suppressed because it is too large Load diff

133
libjava/java/sql/Date.java Normal file
View file

@ -0,0 +1,133 @@
/* Date.java -- Wrapper around java.util.Date
Copyright (C) 1999 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
As a special exception, if you link this library with other files to
produce an executable, this library does not by itself cause the
resulting executable to be covered by the GNU General Public License.
This exception does not however invalidate any other reasons why the
executable file might be covered by the GNU General Public License. */
package java.sql;
import java.text.SimpleDateFormat;
/**
* This class is a wrapper around java.util.Date to allow the JDBC
* driver to identify the value as a SQL Date.
*
* @author Aaron M. Renn (arenn@urbanophile.com)
*/
public class Date extends java.util.Date implements java.io.Serializable
{
/*
* Class Variables
*/
/**
* Used for parsing and formatting this date.
*/
private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
/*************************************************************************/
/*
* Class Methods
*/
/**
* This method returns a new instance of this class by parsing a
* date in JDBC format into a Java date.
*
* @param str The string to parse.
*
* @return The resulting <code>java.sql.Date</code> value.
*/
public static Date
valueOf(String str)
{
try
{
java.util.Date d = (java.util.Date)sdf.parseObject(str);
return(new Date(d.getTime()));
}
catch(Exception e)
{
return(null);
}
}
/*************************************************************************/
/*
* Constructors
*/
/**
* This method initializes a new instance of this class with the
* specified year, month, and day.
*
* @param year The year of this date minue 1900.
* @param month The month of this date (0-11).
* @param day The day of this date (1-31).
*
* @deprecated
*/
public
Date(int year, int month, int day)
{
super(year, month, day);
}
/*************************************************************************/
/**
* This method initializes a new instance of this class with the
* specified time value representing the number of seconds since
* Jan 1, 1970 at 12:00 midnight GMT.
*
* @param time The time value to intialize this date to.
*/
public
Date(long date)
{
super(date);
}
/*************************************************************************/
/*
* Instance Methods
*/
/**
* This method returns this date in JDBC format.
*
* @return This date as a string.
*/
public String
toString()
{
return(sdf.format(this));
}
} // class Date

View file

@ -0,0 +1,137 @@
/* Driver.java -- A JDBC driver
Copyright (C) 1999, 2000 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
As a special exception, if you link this library with other files to
produce an executable, this library does not by itself cause the
resulting executable to be covered by the GNU General Public License.
This exception does not however invalidate any other reasons why the
executable file might be covered by the GNU General Public License. */
package java.sql;
import java.util.Properties;
/**
* This interface specifies a mechanism for accessing a JDBC database
* driver. When the class implementing this method is loaded, it should
* register an instance of itself with the <code>DriverManager</code> in
* a static initializer.
* <p>
* Because the <code>DriverManager</code> might attempt to use several
* drivers to find one that can connect to the requested database,
* this driver should not cause large numbers of classes and code to
* be loaded. If another driver is the one that ends up performing the
* request, any loading done by this driver would be wasted.
*
* @author Aaron M. Renn (arenn@urbanophile.com)
*/
public interface Driver
{
/**
* This method returns the major version number of the driver.
*
* @return The major version number of the driver.
*/
public abstract int
getMajorVersion();
/*************************************************************************/
/**
* This method returns the minor version number of the driver.
*
* @return The minor version number of the driver.
*/
public abstract int
getMinorVersion();
/*************************************************************************/
/**
* This method tests whether or not the driver is JDBC compliant. This
* method should only return <code>true</code> if the driver has been
* certified as JDBC compliant.
*
* @return <code>true</code> if the driver has been certified JDBC compliant,
* <code>false</code> otherwise.
*/
public abstract boolean
jdbcCompliant();
/*************************************************************************/
/**
* This method returns an array of possible properties that could be
* used to connect to the specified database.
*
* @param url The URL string of the database to connect to.
* @param properties The list of properties the caller is planning to use
* to connect to the database.
*
* @return A list of possible additional properties for a connection to this
* database. This list may be empty.
*
* @exception SQLException If an error occurs.
*/
public abstract DriverPropertyInfo[]
getPropertyInfo(String url, Properties properties) throws SQLException;
/*************************************************************************/
/**
* This method tests whether or not the driver believes it can connect to
* the specified database. The driver should only test whether it
* understands and accepts the URL. It should not necessarily attempt to
* probe the database for a connection.
*
* @param The database URL string.
*
* @return <code>true</code> if the drivers can connect to the database,
* <code>false</code> otherwise.
*
* @exception SQLException If an error occurs.
*/
public abstract boolean
acceptsURL(String url) throws SQLException;
/*************************************************************************/
/**
* This method connects to the specified database using the connection
* properties supplied. If the driver does not understand the database
* URL, it should return <code>null</code> instead of throwing an
* exception since the <code>DriverManager</code> will probe a driver
* in this manner.
*
* @param url The URL string for this connection.
* @param properties The list of database connection properties.
*
* @return A <code>Connection</code> object for the newly established
* connection, or <code>null</code> if the URL is not understood.
*
* @exception SQLException If an error occurs.
*/
public abstract Connection
connect(String url, Properties properties) throws SQLException;
} // interface Driver

View file

@ -0,0 +1,336 @@
/* DriverManager.java -- Manage JDBC drivers
Copyright (C) 1999 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
As a special exception, if you link this library with other files to
produce an executable, this library does not by itself cause the
resulting executable to be covered by the GNU General Public License.
This exception does not however invalidate any other reasons why the
executable file might be covered by the GNU General Public License. */
package java.sql;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.util.Enumeration;
import java.util.Properties;
import java.util.StringTokenizer;
import java.util.Vector;
/**
* This class manages the JDBC drivers in the system. It maintains a
* registry of drivers and locates the appropriate driver to handle a
* JDBC database URL.
* <p>
* On startup, <code>DriverManager</code> loads all the managers specified
* by the system property <code>jdbc.drivers</code>. The value of this
* property should be a colon separated list of fully qualified driver
* class names. Additional drivers can be loaded at any time by
* simply loading the driver class with <code>class.forName(String)</code>.
* The driver should automatically register itself in a static
* initializer.
* <p>
* The methods in this class are all <code>static</code>. This class
* cannot be instantiated.
*
* @author Aaron M. Renn (arenn@urbanophile.com)
*/
public class DriverManager
{
/*
* Class Variables
*/
/**
* This is the log stream for JDBC drivers.
*/
private static PrintStream log_stream;
/**
* This is the log writer for JDBC drivers.
*/
private static PrintWriter log_writer;
/**
* This is the login timeout used by JDBC drivers.
*/
private static int login_timeout;
/**
* This is the list of JDBC drivers that are loaded.
*/
private static Vector drivers;
// Hmm, seems like we might want to do a Hashtable and lookup by something,
// but what would it be?
// Load all drivers on startup
static
{
drivers = new Vector();
String driver_string = System.getProperty("jdbc.drivers");
if (driver_string != null)
{
StringTokenizer st = new StringTokenizer(driver_string);
while (st.hasMoreTokens())
{
String driver_classname = st.nextToken();
try
{
Class.forName(driver_classname); // The driver registers itself
}
catch (Exception e) { ; } // Ignore not founds
}
}
}
/*************************************************************************/
/*
* Class Methods
*/
/**
* This method returns the login timeout in use by JDBC drivers systemwide.
*
* @return The login timeout.
*/
public static int
getLoginTimeout()
{
return(login_timeout);
}
/*************************************************************************/
/**
* This method set the login timeout used by JDBC drivers. This is a
* system-wide parameter that applies to all drivers.
*
* @param login_timeout The new login timeout value.
*/
public static void
setLoginTimeout(int login_timeout)
{
DriverManager.login_timeout = login_timeout;
}
/*************************************************************************/
/**
* This method returns the log stream in use by JDBC.
*
* @return The log stream in use by JDBC.
*
* @deprecated Use <code>getLogWriter()</code> instead.
*/
public static PrintStream
getLogStream()
{
return(log_stream);
}
/*************************************************************************/
/**
* This method sets the log stream in use by JDBC.
*
* @param log_stream The log stream in use by JDBC.
*
* @deprecated Use <code>setLogWriter</code> instead.
*/
public static void
setLogStream(PrintStream log_stream)
{
DriverManager.log_stream = log_stream;
}
/*************************************************************************/
/**
* This method prints the specified line to the log stream.
*
* @param str The string to write to the log stream.
*/
public static void
println(String str)
{
if (log_stream != null) // Watch for user not using logging
log_stream.println(str);
}
/*************************************************************************/
/**
* This method registers a new driver with the manager. This is normally
* called by the driver itself in a static initializer.
*
* @param driver The new <code>Driver</code> to add.
*/
public static void
registerDriver(Driver driver)
{
if (!drivers.contains(driver))
drivers.addElement(driver);
}
/*************************************************************************/
/**
* This method de-registers a driver from the manager.
*
* @param driver The <code>Driver</code> to unregister.
*/
public static void
deregisterDriver(Driver driver)
{
if (drivers.contains(driver))
drivers.removeElement(driver);
}
/*************************************************************************/
/**
* This method returns a list of all the currently loaded JDBC drivers which
* the current caller has access to.
*
* @return An <code>Enumeration</code> of all currently loaded JDBC drivers.
*/
public static Enumeration
getDrivers()
{
return(drivers.elements());
}
/*************************************************************************/
/**
* This method returns a driver that can connect to the specified
* JDBC URL string. This will be selected from among drivers loaded
* at initialization time and those drivers manually loaded by the
* same class loader as the caller.
*
* @param url The JDBC URL string to find a driver for.
*
* @return A <code>Driver</code> that can connect to the specified
* URL, or <code>null</code> if a suitable driver cannot be found.
*
* @exception SQLException If an error occurs.
*/
public static Driver
getDriver(String url) throws SQLException
{
// FIXME: Limit driver search to the appropriate subset of loaded drivers.
Enumeration e = drivers.elements();
while(e.hasMoreElements())
{
Driver d = (Driver)e.nextElement();
if (d.acceptsURL(url))
return(d);
}
return(null);
}
/*************************************************************************/
/**
* This method attempts to return a connection to the specified
* JDBC URL string.
*
* @param url The JDBC URL string to connect to.
*
* @return A <code>Connection</code> to that URL.
*
* @exception SQLException If an error occurs.
*/
public static Connection
getConnection(String url) throws SQLException
{
return(getConnection(url, new Properties()));
}
/*************************************************************************/
/**
* This method attempts to return a connection to the specified
* JDBC URL string using the specified username and password.
*
* @param url The JDBC URL string to connect to.
* @param user The username to connect with.
* @param password The password to connect with.
*
* @return A <code>Connection</code> to that URL.
*
* @exception SQLException If an error occurs.
*/
public static Connection
getConnection(String url, String user, String password) throws SQLException
{
Properties p = new Properties();
p.setProperty("user", user);
p.setProperty("password", password);
return(getConnection(url, p));
}
/*************************************************************************/
/**
* This method attempts to return a connection to the specified
* JDBC URL string using the specified connection properties.
*
* @param url The JDBC URL string to connect to.
* @param properties The connection properties.
*
* @return A <code>Connection</code> to that URL.
*
* @exception SQLException If an error occurs.
*/
public static Connection
getConnection(String url, Properties properties) throws SQLException
{
Driver d = getDriver(url);
if (d == null)
throw new SQLException("Driver not found for URL: " + url);
return(d.connect(url, properties));
}
/*************************************************************************/
/*
* Constructors
*/
// Keep bozos from trying to instantiate us.
private
DriverManager()
{
;
}
} // class DriverManager

View file

@ -0,0 +1,91 @@
/* DriverPropertyInfo.java -- Property information about drivers.
Copyright (C) 1999 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
As a special exception, if you link this library with other files to
produce an executable, this library does not by itself cause the
resulting executable to be covered by the GNU General Public License.
This exception does not however invalidate any other reasons why the
executable file might be covered by the GNU General Public License. */
package java.sql;
/**
* This class holds a driver property that can be used for querying or
* setting driver configuration parameters.
*
* @author Aaron M. Renn (arenn@urbanophile.com)
*/
public class DriverPropertyInfo
{
/*
* Instance Variables
*/
/**
* The name of the property.
*/
public String name;
/**
* This is the value of the property.
*/
public String value;
/**
* A description of the property, possibly <code>null</code>.
*/
public String description;
/**
* A flag indicating whether or not a value for this property is required
* in order to connect to the database.
*/
public boolean required;
/**
* If values are restricted to certain choices, this is the list of valid
* ones. Otherwise it is <code>null</code>.
*/
public String[] choices;
/*************************************************************************/
/*
* Constructors
*/
/**
* This method initializes a new instance of <code>DriverPropertyInfo</code>
* with the specified name and value. All other fields are defaulted.
*
* @param name The name of the property.
* @param value The value to assign to the property.
*/
public
DriverPropertyInfo(String name, String value)
{
this.name = name;
this.value = value;
}
} // DriverPropertyInfo

View file

@ -0,0 +1,387 @@
/* PreparedStatement.java -- Interface for pre-compiled statements.
Copyright (C) 1999, 2000 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
As a special exception, if you link this library with other files to
produce an executable, this library does not by itself cause the
resulting executable to be covered by the GNU General Public License.
This exception does not however invalidate any other reasons why the
executable file might be covered by the GNU General Public License. */
package java.sql;
import java.io.InputStream;
import java.io.Reader;
import java.math.BigDecimal;
/**
* This interface provides a mechanism for executing pre-compiled
* statements. This provides greater efficiency when calling the same
* statement multiple times. Parameters are allowed in a statement,
* providings for maximum reusability.
*
* @author Aaron M. Renn (arenn@urbanophile.com)
*/
public interface PreparedStatement extends Statement
{
/**
* This method populates the specified parameter with a SQL NULL value
* for the specified type.
*
* @param index The index of the parameter to set.
* @param type The SQL type identifier of the parameter from <code>Types</code>
*
* @exception SQLException If an error occurs.
*/
public abstract void
setNull(int index, int type) throws SQLException;
/*************************************************************************/
/**
* This method sets the specified parameter from the given Java
* <code>boolean</code> value.
*
* @param index The index of the parameter value to set.
* @param value The value of the parameter.
*
* @exception SQLException If an error occurs.
*/
public abstract void
setBoolean(int index, boolean value) throws SQLException;
/*************************************************************************/
/**
* This method sets the specified parameter from the given Java
* <code>byte</code> value.
*
* @param index The index of the parameter value to set.
* @param value The value of the parameter.
*
* @exception SQLException If an error occurs.
*/
public abstract void
setByte(int index, byte value) throws SQLException;
/*************************************************************************/
/**
* This method sets the specified parameter from the given Java
* <code>short</code> value.
*
* @param index The index of the parameter value to set.
* @param value The value of the parameter.
*
* @exception SQLException If an error occurs.
*/
public abstract void
setShort(int index, short value) throws SQLException;
/*************************************************************************/
/**
* This method sets the specified parameter from the given Java
* <code>int</code> value.
*
* @param index The index of the parameter value to set.
* @param value The value of the parameter.
*
* @exception SQLException If an error occurs.
*/
public abstract void
setInt(int index, int value) throws SQLException;
/*************************************************************************/
/**
* This method sets the specified parameter from the given Java
* <code>long</code> value.
*
* @param index The index of the parameter value to set.
* @param value The value of the parameter.
*
* @exception SQLException If an error occurs.
*/
public abstract void
setLong(int index, long value) throws SQLException;
/*************************************************************************/
/**
* This method sets the specified parameter from the given Java
* <code>float</code> value.
*
* @param index The index of the parameter value to set.
* @param value The value of the parameter.
*
* @exception SQLException If an error occurs.
*/
public abstract void
setFloat(int index, float value) throws SQLException;
/*************************************************************************/
/**
* This method sets the specified parameter from the given Java
* <code>double</code> value.
*
* @param index The index of the parameter value to set.
* @param value The value of the parameter.
*
* @exception SQLException If an error occurs.
*/
public abstract void
setDouble(int index, double value) throws SQLException;
/*************************************************************************/
/**
* This method sets the specified parameter from the given Java
* <code>String</code> value.
*
* @param index The index of the parameter value to set.
* @param value The value of the parameter.
*
* @exception SQLException If an error occurs.
*/
public abstract void
setString(int index, String value) throws SQLException;
/*************************************************************************/
/**
* This method sets the specified parameter from the given Java
* <code>byte</code> array value.
*
* @param index The index of the parameter value to set.
* @param value The value of the parameter.
*
* @exception SQLException If an error occurs.
*/
public abstract void
setBytes(int index, byte[] value) throws SQLException;
/*************************************************************************/
/**
* This method sets the specified parameter from the given Java
* <code>java.math.BigDecimal</code> value.
*
* @param index The index of the parameter value to set.
* @param value The value of the parameter.
*
* @exception SQLException If an error occurs.
*/
public abstract void
setBigDecimal(int index, java.math.BigDecimal value) throws SQLException;
/*************************************************************************/
/**
* This method sets the specified parameter from the given Java
* <code>java.sql.Date</code> value.
*
* @param index The index of the parameter value to set.
* @param value The value of the parameter.
*
* @exception SQLException If an error occurs.
*/
public abstract void
setDate(int index, java.sql.Date value) throws SQLException;
/*************************************************************************/
/**
* This method sets the specified parameter from the given Java
* <code>java.sql.Time</code> value.
*
* @param index The index of the parameter value to set.
* @param value The value of the parameter.
*
* @exception SQLException If an error occurs.
*/
public abstract void
setTime(int index, java.sql.Time value) throws SQLException;
/*************************************************************************/
/**
* This method sets the specified parameter from the given Java
* <code>java.sql.Timestamp</code> value.
*
* @param index The index of the parameter value to set.
* @param value The value of the parameter.
*
* @exception SQLException If an error occurs.
*/
public abstract void
setTimestamp(int index, java.sql.Timestamp value) throws SQLException;
/*************************************************************************/
/**
* This method sets the specified parameter from the given Java
* ASCII <code>InputStream</code> value.
*
* @param index The index of the parameter value to set.
* @param value The value of the parameter.
* @param length The number of bytes in the stream.
*
* @exception SQLException If an error occurs.
*/
public abstract void
setAsciiStream(int index, InputStream value, int length) throws SQLException;
/*************************************************************************/
/**
* This method sets the specified parameter from the given Java
* Unicode UTF-8 <code>InputStream</code> value.
*
* @param index The index of the parameter value to set.
* @param value The value of the parameter.
* @param length The number of bytes in the stream.
*
* @exception SQLException If an error occurs.
*/
public abstract void
setUnicodeStream(int index, InputStream value, int length) throws SQLException;
/*************************************************************************/
/**
* This method sets the specified parameter from the given Java
* binary <code>InputStream</code> value.
*
* @param index The index of the parameter value to set.
* @param value The value of the parameter.
* @param length The number of bytes in the stream.
*
* @exception SQLException If an error occurs.
*/
public abstract void
setBinaryStream(int index, InputStream value, int length) throws SQLException;
/*************************************************************************/
/**
* This method sets the specified parameter from the given Java
* <code>Object</code> value. The default object type to SQL type mapping
* will be used.
*
* @param index The index of the parameter value to set.
* @param value The value of the parameter.
*
* @exception SQLException If an error occurs.
*/
public abstract void
setObject(int index, Object value) throws SQLException;
/*************************************************************************/
/**
* This method sets the specified parameter from the given Java
* <code>Object</code> value. The specified SQL object type will be used.
*
* @param index The index of the parameter value to set.
* @param value The value of the parameter.
* @param type The SQL type to use for the parameter, from <code>Types</code>
*
* @exception SQLException If an error occurs.
*
* @see Types
*/
public abstract void
setObject(int index, Object value, int type) throws SQLException;
/*************************************************************************/
/**
* This method sets the specified parameter from the given Java
* <code>Object</code> value. The specified SQL object type will be used.
*
* @param index The index of the parameter value to set.
* @param value The value of the parameter.
* @param type The SQL type to use for the parameter, from <code>Types</code>
* @param scale The scale of the value, for numeric values only.
*
* @exception SQLException If an error occurs.
*
* @see Types
*/
public abstract void
setObject(int index, Object value, int type, int scale) throws SQLException;
/*************************************************************************/
/**
* This method clears all of the input parameter that have been
* set on this statement.
*
* @exception SQLException If an error occurs.
*/
public abstract void
clearParameters() throws SQLException;
/*************************************************************************/
/**
* This method executes a prepared SQL query.
* 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 The result of the SQL statement.
*
* @exception SQLException If an error occurs.
*/
public abstract boolean
execute() throws SQLException;
/*************************************************************************/
/**
* This method executes a prepared SQL query and returns its ResultSet.
*
* @return The ResultSet of the SQL statement.
*
* @exception SQLException If an error occurs.
*/
public abstract ResultSet
executeQuery() throws SQLException;
/*************************************************************************/
/**
* This method executes an SQL INSERT, UPDATE or DELETE statement. SQL
* statements that return nothing such as SQL DDL statements can be executed.
*
* @return The result is either the row count for INSERT, UPDATE or DELETE
* statements; or 0 for SQL statements that return nothing.
*
* @exception SQLException If an error occurs.
*/
public abstract int
executeUpdate() throws SQLException;
} // interface PreparedStatement

View file

@ -0,0 +1,682 @@
/* ResultSet.java -- A SQL statement result set.
Copyright (C) 1999 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
As a special exception, if you link this library with other files to
produce an executable, this library does not by itself cause the
resulting executable to be covered by the GNU General Public License.
This exception does not however invalidate any other reasons why the
executable file might be covered by the GNU General Public License. */
package java.sql;
import java.io.InputStream;
import java.io.Reader;
import java.math.BigDecimal;
/**
* This interface provides access to the data set returned by a SQL
* statement. An instance of this interface is returned by the various
* execution methods in the <code>Statement</code.
* <p>
* This class models a cursor, which can be stepped through one row at a
* time. Methods are provided for accessing columns by column name or by
* index.
* <p>
* Note that a result set is invalidated if the statement that returned
* it is closed.
*
* @author Aaron M. Renn (arenn@urbanophile.com)
*/
public interface ResultSet
{
/**
* This method advances to the next row in the result set. Any streams
* open on the current row are closed automatically.
*
* @return <code>true</code> if the next row exists, <code>false</code>
* otherwise.
*
* @exception SQLException If an error occurs.
*/
public abstract boolean
next() throws SQLException;
/*************************************************************************/
/**
* This method closes the result set and frees any associated resources.
*
* @exception SQLException If an error occurs.
*/
public abstract void
close() throws SQLException;
/*************************************************************************/
/**
* This method tests whether the value of the last column that was fetched
* was actually a SQL NULL value.
*
* @return <code>true</code> if the last column fetched was a NULL,
* <code>false</code> otherwise.
*
* @exception SQLException If an error occurs.
*/
public abstract boolean
wasNull() throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified column as a Java
* <code>String</code>.
*
* @param index The index of the column to return.
*
* @return The column value as a <code>String</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract String
getString(int index) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified column as a Java
* <code>Object</code>.
*
* @param index The index of the column to return.
*
* @return The column value as an <code>Object</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract Object
getObject(int index) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified column as a Java
* <code>boolean</code>.
*
* @param index The index of the column to return.
*
* @return The column value as a <code>boolean</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract boolean
getBoolean(int index) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified column as a Java
* <code>byte</code>.
*
* @param index The index of the column to return.
*
* @return The column value as a <code>byte</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract byte
getByte(int index) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified column as a Java
* <code>short</code>.
*
* @param index The index of the column to return.
*
* @return The column value as a <code>short</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract short
getShort(int index) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified column as a Java
* <code>int</code>.
*
* @param index The index of the column to return.
*
* @return The column value as a <code>int</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract int
getInt(int index) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified column as a Java
* <code>long</code>.
*
* @param index The index of the column to return.
*
* @return The column value as a <code>long</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract long
getLong(int index) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified column as a Java
* <code>float</code>.
*
* @param index The index of the column to return.
*
* @return The column value as a <code>float</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract float
getFloat(int index) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified column as a Java
* <code>double</code>.
*
* @param index The index of the column to return.
*
* @return The column value as a <code>double</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract double
getDouble(int index) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified column as a Java
* <code>BigDecimal</code>.
*
* @param index The index of the column to return.
* @param scale The number of digits to the right of the decimal to return.
*
* @return The column value as a <code>BigDecimal</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract BigDecimal
getBigDecimal(int index, int scale) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified column as a Java
* byte array.
*
* @param index The index of the column to return.
*
* @return The column value as a byte array
*
* @exception SQLException If an error occurs.
*/
public abstract byte[]
getBytes(int index) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified column as a Java
* <code>java.sql.Date</code>.
*
* @param index The index of the column to return.
*
* @return The column value as a <code>java.sql.Date</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract java.sql.Date
getDate(int index) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified column as a Java
* <code>java.sql.Time</code>.
*
* @param index The index of the column to return.
*
* @return The column value as a <code>java.sql.Time</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract java.sql.Time
getTime(int index) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified column as a Java
* <code>java.sql.Timestamp</code>.
*
* @param index The index of the column to return.
*
* @return The column value as a <code>java.sql.Timestamp</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract java.sql.Timestamp
getTimestamp(int index) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified column as an ASCII
* stream. Note that all the data from this stream must be read before
* fetching the value of any other column. Please also be aware that
* calling <code>next()</code> or <code>close()</code> on this result set
* will close this stream as well.
*
* @param index The index of the column to return.
*
* @return The column value as an ASCII <code>InputStream</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract InputStream
getAsciiStream(int index) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified column as a Unicode UTF-8
* stream. Note that all the data from this stream must be read before
* fetching the value of any other column. Please also be aware that
* calling <code>next()</code> or <code>close()</code> on this result set
* will close this stream as well.
*
* @param index The index of the column to return.
*
* @return The column value as a Unicode UTF-8 <code>InputStream</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract InputStream
getUnicodeStream(int index) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified column as a raw byte
* stream. Note that all the data from this stream must be read before
* fetching the value of any other column. Please also be aware that
* calling <code>next()</code> or <code>close()</code> on this result set
* will close this stream as well.
*
* @param index The index of the column to return.
*
* @return The column value as a raw byte <code>InputStream</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract InputStream
getBinaryStream(int index) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified column as a Java
* <code>String</code>.
*
* @param column The name of the column to return.
*
* @return The column value as a <code>String</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract String
getString(String column) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified column as a Java
* <code>Object</code>.
*
* @param column The name of the column to return.
*
* @return The column value as an <code>Object</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract Object
getObject(String column) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified column as a Java
* <code>boolean</code>.
*
* @param column The name of the column to return.
*
* @return The column value as a <code>boolean</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract boolean
getBoolean(String column) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified column as a Java
* <code>byte</code>.
*
* @param column The name of the column to return.
*
* @return The column value as a <code>byte</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract byte
getByte(String column) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified column as a Java
* <code>short</code>.
*
* @param column The name of the column to return.
*
* @return The column value as a <code>short</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract short
getShort(String column) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified column as a Java
* <code>int</code>.
*
* @param column The name of the column to return.
*
* @return The column value as a <code>int</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract int
getInt(String column) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified column as a Java
* <code>long</code>.
*
* @param column The name of the column to return.
*
* @return The column value as a <code>long</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract long
getLong(String column) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified column as a Java
* <code>float</code>.
*
* @param column The name of the column to return.
*
* @return The column value as a <code>float</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract float
getFloat(String column) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified column as a Java
* <code>double</code>.
*
* @param column The name of the column to return.
*
* @return The column value as a <code>double</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract double
getDouble(String column) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified column as a Java
* <code>BigDecimal</code>.
*
* @param column The name of the column to return.
* @param scale The number of digits to the right of the decimal to return.
*
* @return The column value as a <code>BigDecimal</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract BigDecimal
getBigDecimal(String column, int scale) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified column as a Java
* byte array.
*
* @param column The name of the column to return.
*
* @return The column value as a byte array
*
* @exception SQLException If an error occurs.
*/
public abstract byte[]
getBytes(String column) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified column as a Java
* <code>java.sql.Date</code>.
*
* @param column The name of the column to return.
*
* @return The column value as a <code>java.sql.Date</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract java.sql.Date
getDate(String column) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified column as a Java
* <code>java.sql.Time</code>.
*
* @param column The name of the column to return.
*
* @return The column value as a <code>java.sql.Time</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract java.sql.Time
getTime(String column) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified column as a Java
* <code>java.sql.Timestamp</code>.
*
* @param column The name of the column to return.
*
* @return The column value as a <code>java.sql.Timestamp</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract java.sql.Timestamp
getTimestamp(String column) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified column as an ASCII
* stream. Note that all the data from this stream must be read before
* fetching the value of any other column. Please also be aware that
* calling <code>next()</code> or <code>close()</code> on this result set
* will close this stream as well.
*
* @param column The name of the column to return.
*
* @return The column value as an ASCII <code>InputStream</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract InputStream
getAsciiStream(String column) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified column as a Unicode UTF-8
* stream. Note that all the data from this stream must be read before
* fetching the value of any other column. Please also be aware that
* calling <code>next()</code> or <code>close()</code> on this result set
* will close this stream as well.
*
* @param column The name of the column to return.
*
* @return The column value as a Unicode UTF-8 <code>InputStream</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract InputStream
getUnicodeStream(String column) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified column as a raw byte
* stream. Note that all the data from this stream must be read before
* fetching the value of any other column. Please also be aware that
* calling <code>next()</code> or <code>close()</code> on this result set
* will close this stream as well.
*
* @param column The name of the column to return.
*
* @return The column value as a raw byte <code>InputStream</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract InputStream
getBinaryStream(String column) throws SQLException;
/*************************************************************************/
/**
* This method returns the first SQL warning associated with this result
* set. Any additional warnings will be chained to this one.
*
* @return The first SQLWarning for this result set, or <code>null</code> if
* there are no warnings.
*
* @exception SQLException If an error occurs.
*/
public abstract SQLWarning
getWarnings() throws SQLException;
/*************************************************************************/
/**
* This method clears all warnings associated with this result set.
*
* @exception SQLException If an error occurs.
*/
public abstract void
clearWarnings() throws SQLException;
/*************************************************************************/
/**
* This method returns the name of the database cursor used by this
* result set.
*
* @return The name of the database cursor used by this result set.
*
* @exception SQLException If an error occurs.
*/
public abstract String
getCursorName() throws SQLException;
/*************************************************************************/
/**
* This method returns data about the columns returned as part of the
* result set as a <code>ResultSetMetaData</code> instance.
*
* @return The <code>ResultSetMetaData</code> instance for this result set.
*
* @exception SQLException If an error occurs.
*/
public abstract ResultSetMetaData
getMetaData() throws SQLException;
/*************************************************************************/
/**
* This method returns the column index of the specified named column.
*
* @param column The name of the column.
*
* @return The index of the column.
*
* @exception SQLException If an error occurs.
*/
public abstract int
findColumn(String column) throws SQLException;
} // interface ResultSet

View file

@ -0,0 +1,362 @@
/* ResultSetMetaData.java -- Returns information about the ResultSet
Copyright (C) 1999 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
As a special exception, if you link this library with other files to
produce an executable, this library does not by itself cause the
resulting executable to be covered by the GNU General Public License.
This exception does not however invalidate any other reasons why the
executable file might be covered by the GNU General Public License. */
package java.sql;
/**
* This interface provides a mechanism for obtaining information about
* the columns that are present in a <code>ResultSet</code>.
* <p>
* Note that in this class column indexes start at 1, not 0.
*
* @author Aaron M. Renn (arenn@urbanophile.com)
*/
public interface ResultSetMetaData
{
/**
* The column does not allow NULL's.
*/
public static final int columnNoNulls = 0;
/**
* The column allows NULL's.
*/
public static final int columnNullable = 1;
/**
* It is unknown whether or not the column allows NULL's.
*/
public static final int columnNullableUnknown = 2;
/*************************************************************************/
/**
* This method returns the number of columns in the result set.
*
* @return The number of columns in the result set.
*
* @exception SQLException If an error occurs.
*/
public abstract int
getColumnCount() throws SQLException;
/*************************************************************************/
/**
* This method test whether or not the column is an auto-increment column.
* Auto-increment columns are read-only.
*
* @param index The index of the column to test.
*
* @return <code>true</code> if the column is auto-increment, <code>false</code>
* otherwise.
*
* @exception SQLException If an error occurs.
*/
public abstract boolean
isAutoIncrement(int index) throws SQLException;
/*************************************************************************/
/**
* This method tests whether or not a column is case sensitive in its values.
*
* @param index The index of the column to test.
*
* @return <code>true</code> if the column value is case sensitive,
* <code>false</code> otherwise.
*
* @exception SQLException If an error occurs.
*/
public abstract boolean
isCaseSensitive(int index) throws SQLException;
/*************************************************************************/
/**
* This method tests whether not the specified column can be used in
* a WHERE clause.
*
* @param index The index of the column to test.
*
* @return <code>true</code> if the column may be used in a WHERE clause,
* <code>false</code> otherwise.
*
* @exception SQLException If an error occurs.
*/
public abstract boolean
isSearchable(int index) throws SQLException;
/*************************************************************************/
/**
* This method tests whether or not the column stores a monetary value.
*
* @param index The index of the column to test.
*
* @return <code>true</code> if the column contains a monetary value,
* <code>false</code> otherwise.
*
* @exception SQLException If an error occurs.
*/
public abstract boolean
isCurrency(int index) throws SQLException;
/*************************************************************************/
/**
* This method returns a value indicating whether or not the specified
* column may contain a NULL value.
*
* @param index The index of the column to test.
*
* @return A constant indicating whether or not the column can contain NULL,
* which will be one of <code>columnNoNulls</code>,
* <code>columnNullable</code>, or <code>columnNullableUnknown</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract int
isNullable(int index) throws SQLException;
/*************************************************************************/
/**
* This method tests whether or not the value of the specified column
* is signed or unsigned.
*
* @param index The index of the column to test.
*
* @return <code>true</code> if the column value is signed, <code>false</code>
* otherwise.
*
* @exception SQLException If an error occurs.
*/
public abstract boolean
isSigned(int index) throws SQLException;
/*************************************************************************/
/**
* This method returns the maximum number of characters that can be used
* to display a value in this column.
*
* @param index The index of the column to check.
*
* @return The maximum number of characters that can be used to display a
* value for this column.
*
* @exception SQLException If an error occurs.
*/
public abstract int
getColumnDisplaySize(int index) throws SQLException;
/*************************************************************************/
/**
* This method returns a string that should be used as a caption for this
* column for user display purposes.
*
* @param index The index of the column to check.
*
* @return A display string for the column.
*
* @exception SQLException If an error occurs.
*/
public abstract String
getColumnLabel(int index) throws SQLException;
/*************************************************************************/
/**
* This method returns the name of the specified column.
*
* @param index The index of the column to return the name of.
*
* @return The name of the column.
*
* @exception SQLException If an error occurs.
*/
public abstract String
getColumnName(int index) throws SQLException;
/*************************************************************************/
/**
* This method returns the name of the schema that contains the specified
* column.
*
* @param index The index of the column to check the schema name for.
*
* @return The name of the schema that contains the column.
*
* @exception SQLException If an error occurs.
*/
public abstract String
getSchemaName(int index) throws SQLException;
/*************************************************************************/
/**
* This method returns the precision of the specified column, which is the
* number of decimal digits it contains.
*
* @param index The index of the column to check the precision on.
*
* @return The precision of the specified column.
*
* @exception SQLException If an error occurs.
*/
public abstract int
getPrecision(int index) throws SQLException;
/*************************************************************************/
/**
* This method returns the scale of the specified column, which is the
* number of digits to the right of the decimal point.
*
* @param index The index column to check the scale of.
*
* @return The scale of the column.
*
* @exception SQLException If an error occurs.
*/
public abstract int
getScale(int index) throws SQLException;
/*************************************************************************/
/**
* This method returns the name of the table containing the specified
* column.
*
* @param index The index of the column to check the table name for.
*
* @return The name of the table containing the column.
*
* @exception SQLException If an error occurs.
*/
public abstract String
getTableName(int index) throws SQLException;
/*************************************************************************/
/**
* This method returns the name of the catalog containing the specified
* column.
*
* @param index The index of the column to check the catalog name for.
*
* @return The name of the catalog containing the column.
*
* @exception SQLException If an error occurs.
*/
public abstract String
getCatalogName(int index) throws SQLException;
/*************************************************************************/
/**
* This method returns the SQL type of the specified column. This will
* be one of the constants from <code>Types</code>.
*
* @param index The index of the column to check the SQL type of.
*
* @return The SQL type for this column.
*
* @exception SQLException If an error occurs.
*
* @see Types
*/
public abstract int
getColumnType(int index) throws SQLException;
/*************************************************************************/
/**
* This method returns the name of the SQL type for this column.
*
* @param index The index of the column to check the SQL type name for.
*
* @return The name of the SQL type for this column.
*
* @exception SQLException If an error occurs.
*/
public abstract String
getColumnTypeName(int index) throws SQLException;
/*************************************************************************/
/**
* This method tests whether or not the specified column is read only.
*
* @param index The index of the column to check.
*
* @return <code>true</code> if the column is read only, <code>false</code>
* otherwise.
*
* @exception SQLException If an error occurs.
*/
public abstract boolean
isReadOnly(int index) throws SQLException;
/*************************************************************************/
/**
* This method tests whether or not the column may be writable. This
* does not guarantee that a write will be successful.
*
* @param index The index of the column to check for writability.
*
* @return <code>true</code> if the column may be writable,
* <code>false</code> otherwise.
*
* @exception SQLException If an error occurs.
*/
public abstract boolean
isWritable(int index) throws SQLException;
/*************************************************************************/
/**
* This method tests whether or not the column is writable. This
* does guarantee that a write will be successful.
*
* @param index The index of the column to check for writability.
*
* @return <code>true</code> if the column is writable,
* <code>false</code> otherwise.
*
* @exception SQLException If an error occurs.
*/
public abstract boolean
isDefinitelyWritable(int index) throws SQLException;
} // interface ResultSetMetaData

View file

@ -0,0 +1,199 @@
/* SQLException.java -- General SQL exception
Copyright (C) 1999 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
As a special exception, if you link this library with other files to
produce an executable, this library does not by itself cause the
resulting executable to be covered by the GNU General Public License.
This exception does not however invalidate any other reasons why the
executable file might be covered by the GNU General Public License. */
package java.sql;
/**
* This exception is thrown when a database error occurs.
*
* @author Aaron M. Renn (arenn@urbanophile.com)
*/
public class SQLException extends Exception implements java.io.Serializable
{
/*************************************************************************/
/*
* Instance Variables
*/
/**
* This is the next exception in the chain
* @serialized
*/
private SQLException next;
/**
* This is the state of the SQL statement at the time of the error.
* @serialized
*/
private String SQLState;
/**
* The vendor error code for this error
* @serialized
*/
private int vendorCode;
/*************************************************************************/
/*
* Constructors
*/
/**
* This method initializes a new instance of <code>SQLException</code>
* that does not have a descriptive messages and SQL state, and which
* has a vendor error code of 0.
*/
public
SQLException()
{
this(null, null, 0);
}
/*************************************************************************/
/**
* This method initializes a new instance of <code>SQLException</code>
* with the specified descriptive error message. The SQL state of this
* instance will be <code>null</code> and the vendor error code will be 0.
*
* @param message A string describing the nature of the error.
*/
public
SQLException(String message)
{
this(message, null, 0);
}
/*************************************************************************/
/**
* This method initializes a new instance of <code>SQLException</code>
* with the specified descriptive error message and SQL state string.
* The vendor error code of this instance will be 0.
*
* @param message A string describing the nature of the error.
* @param SQLState A string containing the SQL state of the error.
*/
public
SQLException(String message, String SQLState)
{
this(message, SQLState, 0);
}
/*************************************************************************/
/**
* This method initializes a nwe instance of <code>SQLException</code>
* with the specified descriptive error message, SQL state string, and
* vendor code.
*
* @param message A string describing the nature of the error.
* @param SQLState A string containing the SQL state of the error.
* @param vendorCode The vendor error code associated with this error.
*/
public
SQLException(String message, String SQLState, int vendorCode)
{
super(message);
this.SQLState = SQLState;
this.vendorCode = vendorCode;
}
/*************************************************************************/
/*
* Instance Methods
*/
/**
* This method returns the SQLState information associated with this
* error. The value returned is a <code>String</code> which is formatted
* using the XOPEN SQL state conventions.
*
* @return The SQL state, which may be <code>null</code>.
*/
public String
getSQLState()
{
return(SQLState);
}
/*************************************************************************/
/**
* This method returns the vendor specific error code associated with
* this error.
*
* @return The vendor specific error code associated with this error.
*/
public int
getErrorCode()
{
return(vendorCode);
}
/*************************************************************************/
/**
* This method returns the exception that is chained to this object.
*
* @return The exception chained to this object, which may be
* <code>null</code>.
*/
public SQLException
getNextException()
{
return(next);
}
/*************************************************************************/
/**
* This method adds a new exception to the end of the chain of exceptions
* that are chained to this object.
*
* @param e The exception to add to the end of the chain.
*/
public void
setNextException(SQLException e)
{
if (e == null)
return;
SQLException list_entry = this;
while (list_entry.getNextException() != null)
list_entry = list_entry.getNextException();
list_entry.next = e;
}
} // class SQLException

View file

@ -0,0 +1,136 @@
/* SQLWarning.java -- Database access warnings.
Copyright (C) 1999 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
As a special exception, if you link this library with other files to
produce an executable, this library does not by itself cause the
resulting executable to be covered by the GNU General Public License.
This exception does not however invalidate any other reasons why the
executable file might be covered by the GNU General Public License. */
package java.sql;
/**
* This exception is thrown when a database warning occurs.
*
* @author Aaron M. Renn (arenn@urbanophile.com)
*/
public class SQLWarning extends SQLException implements java.io.Serializable
{
/*************************************************************************/
/*
* Constructors
*/
/**
* This method initializes a new instance of <code>SQLWxception</code>
* that does not have a descriptive messages and SQL state, and which
* has a vendor error code of 0.
*/
public
SQLWarning()
{
this(null, null, 0);
}
/*************************************************************************/
/**
* This method initializes a new instance of <code>SQLWarning</code>
* with the specified descriptive error message. The SQL state of this
* instance will be <code>null</code> and the vendor error code will be 0.
*
* @param message A string describing the nature of the error.
*/
public
SQLWarning(String message)
{
this(message, null, 0);
}
/*************************************************************************/
/**
* This method initializes a new instance of <code>SQLWarning</code>
* with the specified descriptive error message and SQL state string.
* The vendor error code of this instance will be 0.
*
* @param message A string describing the nature of the error.
* @param SQLState A string containing the SQL state of the error.
*/
public
SQLWarning(String message, String SQLState)
{
this(message, SQLState, 0);
}
/*************************************************************************/
/**
* This method initializes a nwe instance of <code>SQLWarning</code>
* with the specified descriptive error message, SQL state string, and
* vendor code.
*
* @param message A string describing the nature of the error.
* @param SQLState A string containing the SQL state of the error.
* @param vendorCode The vendor error code associated with this error.
*/
public
SQLWarning(String message, String SQLState, int vendorCode)
{
super(message, SQLState, vendorCode);
}
/*************************************************************************/
/*
* Instance Methods
*/
/**
* This method returns the exception that is chained to this object.
*
* @return The exception chained to this object, which may be
* <code>null</code>.
*/
public SQLWarning
getNextWarning()
{
return((SQLWarning)super.getNextException());
}
/*************************************************************************/
/**
* This method adds a new exception to the end of the chain of exceptions
* that are chained to this object.
*
* @param e The exception to add to the end of the chain.
*/
public void
setNextWarning(SQLWarning e)
{
super.setNextException(e);
}
} // class SQLWarning

View file

@ -0,0 +1,277 @@
/* Statement.java -- Interface for executing SQL statements.
Copyright (C) 1999 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
As a special exception, if you link this library with other files to
produce an executable, this library does not by itself cause the
resulting executable to be covered by the GNU General Public License.
This exception does not however invalidate any other reasons why the
executable file might be covered by the GNU General Public License. */
package java.sql;
/**
* This interface provides a mechanism for executing SQL statements.
*
* @author Aaron M. Renn (arenn@urbanophile.com)
*/
public interface Statement
{
/**
* This method executes the specified SQL SELECT statement and returns a
* (possibly empty) <code>ResultSet</code> with the results of the query.
*
* @param sql The SQL statement to execute.
*
* @return The result set of the SQL statement.
*
* @exception SQLException If an error occurs.
*/
public abstract ResultSet
executeQuery(String sql) throws SQLException;
/*************************************************************************/
/**
* This method executes the specified SQL INSERT, UPDATE, or DELETE statement
* and returns the number of rows affected, which may be 0.
*
* @param sql The SQL statement to execute.
*
* @return The number of rows affected by the SQL statement.
*
* @exception SQLException If an error occurs.
*/
public abstract int
executeUpdate(String sql) throws SQLException;
/*************************************************************************/
/**
* This method closes the statement and frees any associated resources.
*
* @exception SQLException If an error occurs.
*/
public abstract void
close() throws SQLException;
/*************************************************************************/
/**
* This method returns the maximum length of any column value in bytes.
*
* @return The maximum length of any column value in bytes.
*
* @exception SQLException If an error occurs.
*/
public abstract int
getMaxFieldSize() throws SQLException;
/*************************************************************************/
/**
* This method sets the limit for the maximum length of any column in bytes.
*
* @param maxsize The new maximum length of any column in bytes.
*
* @exception SQLException If an error occurs.
*/
public abstract void
setMaxFieldSize(int maxsize) throws SQLException;
/*************************************************************************/
/**
* This method returns the maximum possible number of rows in a result set.
*
* @return The maximum possible number of rows in a result set.
*
* @exception SQLException If an error occurs.
*/
public abstract int
getMaxRows() throws SQLException;
/*************************************************************************/
/**
* This method sets the maximum number of rows that can be present in a
* result set.
*
* @param maxrows The maximum possible number of rows in a result set.
*
* @exception SQLException If an error occurs.
*/
public abstract void
setMaxRows(int maxrows) throws SQLException;
/*************************************************************************/
/**
* This method sets the local escape processing mode on or off. The
* default value is on.
*
* @param escape <code>true</code> to enable local escape processing,
* <code>false</code> to disable it.
*
* @exception SQLException If an error occurs.
*/
public abstract void
setEscapeProcessing(boolean esacpe) throws SQLException;
/*************************************************************************/
/**
* The method returns the number of seconds a statement may be in process
* before timing out. A value of 0 means there is no timeout.
*
* @return The SQL statement timeout in seconds.
*
* @exception SQLException If an error occurs.
*/
public abstract int
getQueryTimeout() throws SQLException;
/*************************************************************************/
/**
* This method sets the number of seconds a statement may be in process
* before timing out. A value of 0 means there is no timeout.
*
* @param timeout The new SQL statement timeout value.
*
* @exception SQLException If an error occurs.
*/
public abstract void
setQueryTimeout(int timeout) throws SQLException;
/*************************************************************************/
/**
* This method cancels an outstanding statement, if the database supports
* that operation.
*
* @exception SQLException If an error occurs.
*/
public abstract void
cancel() throws SQLException;
/*************************************************************************/
/**
* This method returns the first SQL warning attached to this statement.
* Subsequent warnings will be chained to this one.
*
* @return The first SQL warning for this statement.
*
* @exception SQLException If an error occurs.
*/
public abstract SQLWarning
getWarnings() throws SQLException;
/*************************************************************************/
/**
* This method clears any SQL warnings that have been attached to this
* statement.
*
* @exception SQLException If an error occurs.
*/
public abstract void
clearWarnings() throws SQLException;
/*************************************************************************/
/**
* This method sets the cursor name that will be used by the result set.
*
* @param name The cursor name to use for this statement.
*
* @exception SQLException If an error occurs.
*/
public abstract void
setCursorName(String name) throws SQLException;
/*************************************************************************/
/**
* This method executes an arbitrary SQL statement of any time. The
* methods <code>getResultSet</code>, <code>getMoreResults</code> and
* <code>getUpdateCount</code> retrieve the results.
*
* @return <code>true</code> if a result set was returned, <code>false</code>
* if an update count was returned.
*
* @exception SQLException If an error occurs.
*/
public abstract boolean
execute(String sql) throws SQLException;
/*************************************************************************/
/**
* This method returns the result set of the SQL statement that was
* executed. This should be called only once per result set returned.
*
* @return The result set of the query, or <code>null</code> if there was
* no result set (for example, if the statement was an UPDATE).
*
* @exception SQLException If an error occurs.
*
* @see execute
*/
public abstract ResultSet
getResultSet() throws SQLException;
/*************************************************************************/
/**
* This method returns the update count of the SQL statement that was
* executed. This should be called only once per executed SQL statement.
*
* @return The update count of the query, or -1 if there was no update
* count (for example, if the statement was a SELECT).
*
* @exception SQLException If an error occurs.
*
* @see execute
*/
public abstract int
getUpdateCount() throws SQLException;
/*************************************************************************/
/**
* This method advances the result set pointer to the next result set,
* which can then be retrieved using <code>getResultSet</code>
*
* @return <code>true</code> if there is another result set,
* <code>false</code> otherwise (for example, the next result is an
* update count).
*
* @exception SQLException If an error occurs.
*
* @see execute
*/
public abstract boolean
getMoreResults() throws SQLException;
} // interface Statement

137
libjava/java/sql/Time.java Normal file
View file

@ -0,0 +1,137 @@
/* Time.java -- Wrapper around java.util.Date
Copyright (C) 1999 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
As a special exception, if you link this library with other files to
produce an executable, this library does not by itself cause the
resulting executable to be covered by the GNU General Public License.
This exception does not however invalidate any other reasons why the
executable file might be covered by the GNU General Public License. */
package java.sql;
import java.text.SimpleDateFormat;
/**
* This class is a wrapper around java.util.Date to allow the JDBC
* driver to identify the value as a SQL Time.
*
* @author Aaron M. Renn (arenn@urbanophile.com)
*/
public class Time extends java.util.Date implements java.io.Serializable
{
/*
* Class Variables
*/
/**
* Used for parsing and formatting this date.
*/
private static SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
/*************************************************************************/
/*
* Class Methods
*/
/**
* This method returns a new instance of this class by parsing a
* date in JDBC format into a Java date.
*
* @param str The string to parse.
*
* @return The resulting <code>java.sql.Time</code> value.
*/
public static Time
valueOf(String str)
{
try
{
java.util.Date d = (java.util.Date)sdf.parseObject(str);
return(new Time(d.getTime()));
}
catch(Exception e)
{
return(null);
}
}
/*************************************************************************/
/*
* Constructors
*/
/**
* This method initializes a new instance of this class with the
* specified year, month, and day.
*
* @param hour The hour for this Time (0-23)
* @param minute The minute for this time (0-59)
* @param second The second for this time (0-59)
*
* @deprecated
*/
public
Time(int hour, int minute, int second)
{
super(System.currentTimeMillis());
setHours(hour);
setMinutes(minute);
setSeconds(second);
}
/*************************************************************************/
/**
* This method initializes a new instance of this class with the
* specified time value representing the number of seconds since
* Jan 1, 1970 at 12:00 midnight GMT.
*
* @param time The time value to intialize this <code>Time</code> to.
*/
public
Time(long date)
{
super(date);
}
/*************************************************************************/
/*
* Instance Methods
*/
/**
* This method returns this date in JDBC format.
*
* @return This date as a string.
*/
public String
toString()
{
return(sdf.format(this));
}
} // class Time

View file

@ -0,0 +1,285 @@
/* Time.java -- Wrapper around java.util.Date
Copyright (C) 1999 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
As a special exception, if you link this library with other files to
produce an executable, this library does not by itself cause the
resulting executable to be covered by the GNU General Public License.
This exception does not however invalidate any other reasons why the
executable file might be covered by the GNU General Public License. */
package java.sql;
import java.text.SimpleDateFormat;
/**
* This class is a wrapper around java.util.Date to allow the JDBC
* driver to identify the value as a SQL Timestamp. Note that this
* class also adds an additional field for nano-seconds, and so
* is not completely identical to <code>java.util.Date</code> as
* the <code>java.sql.Date</code> and <code>java.sql.Time</code>
* classes are.
*
* @author Aaron M. Renn (arenn@urbanophile.com)
*/
public class Timestamp extends java.util.Date implements java.io.Serializable
{
/*
* Class Variables
*/
/**
* Used for parsing and formatting this date.
*/
// Millisecond will have to be close enough for now.
private static SimpleDateFormat parse_sdf =
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSS");
private static SimpleDateFormat format_sdf =
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
/*************************************************************************/
/*
* Instance Variables
*/
/**
* @serial The nanosecond value for this object
*/
private int nanos;
/*************************************************************************/
/*
* Class Methods
*/
/**
* This method returns a new instance of this class by parsing a
* date in JDBC format into a Java date.
*
* @param str The string to parse.
*
* @return The resulting <code>java.sql.Timestamp</code> value.
*/
public static Timestamp
valueOf(String str)
{
try
{
Date d = (Date)parse_sdf.parseObject(str);
return(new Timestamp(d.getTime()));
}
catch(Exception e)
{
return(null);
}
}
/*************************************************************************/
/*
* Constructors
*/
/**
* This method initializes a new instance of this class with the
* specified year, month, and day.
*
* @param year The year for this Timestamp (year - 1900)
* @param month The month for this Timestamp (0-11)
* @param day The day for this Timestamp (1-31)
* @param hour The hour for this Timestamp (0-23)
* @param minute The minute for this Timestamp (0-59)
* @param second The second for this Timestamp (0-59)
* @param nanos The nanosecond value for this Timestamp (0 to 999,999,9999)
*
* @deprecated
*/
public
Timestamp(int year, int month, int day, int hour, int minute, int second,
int nanos)
{
super(year, month, day, hour, minute, second);
this.nanos = nanos;
}
/*************************************************************************/
/**
* This method initializes a new instance of this class with the
* specified time value representing the number of seconds since
* Jan 1, 1970 at 12:00 midnight GMT.
*
* @param time The time value to intialize this <code>Time</code> to.
*/
public
Timestamp(long date)
{
super(date);
}
/*************************************************************************/
/*
* Instance Methods
*/
/**
* This method returns this date in JDBC format.
*
* @return This date as a string.
*/
public String
toString()
{
return(format_sdf.format(this) + "." + getNanos());
}
/*************************************************************************/
/**
* This method returns the nanosecond value for this object.
*
* @return The nanosecond value for this object.
*/
public int
getNanos()
{
return(nanos);
}
/*************************************************************************/
/**
* This method sets the nanosecond value for this object.
*
* @param nanos The nanosecond value for this object.
*/
public void
setNanos(int nanos)
{
this.nanos = nanos;
}
/*************************************************************************/
/**
* This methods tests whether this object is earlier than the specified
* object.
*
* @param ts The other <code>Timestamp</code> to test against.
*
* @return <code>true</code> if this object is earlier than the other object,
* <code>false</code> otherwise.
*/
public boolean
before(Timestamp ts)
{
if (ts.getTime() > getTime())
return(true);
if (ts.getNanos() > getNanos())
return(true);
return(false);
}
/*************************************************************************/
/**
* This methods tests whether this object is later than the specified
* object.
*
* @param ts The other <code>Timestamp</code> to test against.
*
* @return <code>true</code> if this object is later than the other object,
* <code>false</code> otherwise.
*/
public boolean
after(Timestamp ts)
{
if (ts.getTime() < getTime())
return(true);
if (ts.getNanos() < getNanos())
return(true);
return(false);
}
/*************************************************************************/
/**
* This method these the specified <code>Object</code> for equality
* against this object. This will be true if an only if the specified
* object is an instance of <code>Timestamp</code> and has the same
* time value fields.
*
* @param obj The object to test against for equality.
*
* @return <code>true</code> if the specified object is equal to this
* object, <code>false</code> otherwise.
*/
public boolean
equals(Object obj)
{
if (obj == null)
return(false);
if (!(obj instanceof Timestamp))
return(false);
return(equals((Timestamp)obj));
}
/*************************************************************************/
/**
* This method tests the specified timestamp for equality against this
* object. This will be true if and only if the specified object is
* not <code>null</code> and contains all the same time value fields
* as this object.
*
* @param ts The <code>Timestamp</code> to test against for equality.
*
* @return <code>true</code> if the specified object is equal to this
* object, <code>false</code> otherwise.
*/
public boolean
equals(Timestamp ts)
{
if (ts == null)
return(false);
if (ts.getTime() != getTime())
return(false);
if (ts.getNanos() != getNanos())
return(false);
return(true);
}
} // class Timestamp

View file

@ -0,0 +1,64 @@
/* Types.java -- SQL type constants
Copyright (C) 1999 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
As a special exception, if you link this library with other files to
produce an executable, this library does not by itself cause the
resulting executable to be covered by the GNU General Public License.
This exception does not however invalidate any other reasons why the
executable file might be covered by the GNU General Public License. */
package java.sql;
/**
* This class contains constants that are used to identify SQL data types.
*
* @author Aaron M. Renn (arenn@urbanophile.com)
*/
public class Types
{
// These should be self explanatory. People need a SQL book, not
// Javadoc comments for these.
public static final int BIT = -7;
public static final int TINYINT = -6;
public static final int SMALLINT = 5;
public static final int INTEGER = 4;
public static final int BIGINT = -5;
public static final int FLOAT = 6;
public static final int REAL = 7;
public static final int DOUBLE = 8;
public static final int NUMERIC = 2;
public static final int DECIMAL = 3;
public static final int CHAR = 1;
public static final int VARCHAR = 12;
public static final int LONGVARCHAR = -1;
public static final int DATE = 91;
public static final int TIME = 92;
public static final int TIMESTAMP = 93;
public static final int BINARY = -2;
public static final int VARBINARY = -3;
public static final int LONGVARBINARY = -4;
public static final int NULL = 0;
public static final int OTHER = 1111;
} // class Types