summaryrefslogtreecommitdiff
path: root/java/sql
diff options
context:
space:
mode:
authorAaron M. Renn <arenn@urbanophile.com>1999-01-14 05:02:27 +0000
committerAaron M. Renn <arenn@urbanophile.com>1999-01-14 05:02:27 +0000
commit13fc7a95bc6a470b4ae5754ba395f70da4f8ff9d (patch)
tree652fdeea21d7a6838107cf3f6ba39abadafe9d4b /java/sql
parent9658be76a86a57892c914ef52072e9538a60ca39 (diff)
downloadclasspath-13fc7a95bc6a470b4ae5754ba395f70da4f8ff9d.tar.gz
Initial Checkin
Diffstat (limited to 'java/sql')
-rw-r--r--java/sql/Array.java220
-rw-r--r--java/sql/Blob.java114
-rw-r--r--java/sql/Clob.java130
-rw-r--r--java/sql/Connection.java445
-rw-r--r--java/sql/Driver.java131
5 files changed, 1040 insertions, 0 deletions
diff --git a/java/sql/Array.java b/java/sql/Array.java
new file mode 100644
index 000000000..e25d8210b
--- /dev/null
+++ b/java/sql/Array.java
@@ -0,0 +1,220 @@
+/*************************************************************************
+/* Array.java -- Interface for accessing SQL array object
+/*
+/* Copyright (c) 1999 Free Software Foundation, Inc.
+/* Written by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This library is free software; you can redistribute it and/or modify
+/* it under the terms of the GNU Library General Public License as published
+/* by the Free Software Foundation, either version 2 of the License, or
+/* (at your option) any later verion.
+/*
+/* This library 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 Library General Public License for more details.
+/*
+/* You should have received a copy of the GNU Library General Public License
+/* along with this library; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+package java.sql;
+
+import java.util.Map;
+
+/**
+ * This interface provides methods for accessing SQL array types
+ *
+ * @author Aaron M. Renn (arenn@urbanophile.com)
+ */
+public abstract interface Array
+{
+
+/**
+ * This method returns the name of the SQL type of the elements in this
+ * array. This name is database specific.
+ *
+ * @param The name of the SQL type of the elements in this array.
+ *
+ * @exception SQLException If an error occurs.
+ */
+public abstract String
+getBaseTypeName() throws SQLException;
+
+/*************************************************************************/
+
+/**
+ * This method returns the JDBC type identifier of the elements in this
+ * array. This will be one of the values defined in the <code>Types</code>
+ * class.
+ *
+ * @return The JDBC type of the elements in this array.
+ *
+ * @exception SQLException If an error occurs.
+ *
+ * @see Types
+ */
+public abstract int
+getBaseType() throws SQLException;
+
+/*************************************************************************/
+
+/**
+ * This method returns the contents of this array. This object returned
+ * will be an array of Java objects of the appropriate types.
+ *
+ * @return The contents of the array as an array of Java objects.
+ *
+ * @exception SQLException If an error occurs.
+ */
+public abstract Object
+getArray() throws SQLException;
+
+/*************************************************************************/
+
+/**
+ * This method returns the contents of this array. The specified
+ * <code>Map</code> will be used to override selected mappings between
+ * SQL types and Java classes.
+ *
+ * @param map A mapping of SQL types to Java classes.
+ *
+ * @return The contents of the array as an array of Java objects.
+ *
+ * @exception SQLException If an error occurs.
+ */
+public abstract Object
+getArray(Map map) throws SQLException;
+
+/*************************************************************************/
+
+/**
+ * This method returns a portion of this array starting at index
+ * <code>offset</code> into the array and continuing for <code>length</code>
+ * elements. Fewer than the requested number of elements will be
+ * returned if the array does not contain the requested number of elements.
+ * The object returned will be an array of Java objects of
+ * the appropriate types.
+ *
+ * @param offset The offset into this array to start returning elements from.
+ * @param count The requested number of elements to return.
+ *
+ * @return The requested portion of the array.
+ *
+ * @exception SQLException If an error occurs.
+ */
+public abstract Object
+getArray(long offset, int count) throws SQLException;
+
+/*************************************************************************/
+
+/**
+ * This method returns a portion of this array starting at index
+ * <code>offset</code> into the array and continuing for <code>length</code>
+ * elements. Fewer than the requested number of elements will be
+ * returned if the array does not contain the requested number of elements.
+ * The object returned will be an array of Java objects. The specified
+ * <code>Map</code> will be used for overriding selected SQL type to
+ * Java class mappings.
+ *
+ * @param offset The offset into this array to start returning elements from.
+ * @param count The requested number of elements to return.
+ * @param map A mapping of SQL types to Java classes.
+ *
+ * @return The requested portion of the array.
+ *
+ * @exception SQLException If an error occurs.
+ */
+public abstract Object
+getArray(long index, int count, Map map) throws SQLException;
+
+/*************************************************************************/
+
+/**
+ * This method returns the elements in the array as a <code>ResultSet</code>.
+ * Each row of the result set will have two columns. The first will be
+ * the index into the array of that row's contents. The second will be
+ * the actual value of that array element.
+ *
+ * @return The elements of this array as a <code>ResultSet</code>.
+ *
+ * @exception SQLException If an error occurs.
+ *
+ * @see ResultSet
+ */
+public abstract ResultSet
+getResultSet() throws SQLException;
+
+/*************************************************************************/
+
+/**
+ * This method returns the elements in the array as a <code>ResultSet</code>.
+ * Each row of the result set will have two columns. The first will be
+ * the index into the array of that row's contents. The second will be
+ * the actual value of that array element. The specified <code>Map</code>
+ * will be used to override selected default mappings of SQL types to
+ * Java classes.
+ *
+ * @param map A mapping of SQL types to Java classes.
+ *
+ * @return The elements of this array as a <code>ResultSet</code>.
+ *
+ * @exception SQLException If an error occurs.
+ *
+ * @see ResultSet
+ */
+public abstract ResultSet
+getResultSet(Map map) throws SQLException;
+
+/*************************************************************************/
+
+/**
+ * This method returns a portion of the array as a <code>ResultSet</code>.
+ * The returned portion will start at index <code>offset</code> into the
+ * array and up to <code>length</code> elements will be returned.
+ * <p>
+ * Each row of the result set will have two columns. The first will be
+ * the index into the array of that row's contents. The second will be
+ * the actual value of that array element.
+ *
+ * @param offset The index into the array to start returning elements from.
+ * @param length The requested number of elements to return.
+ *
+ * @return The requested elements of this array as a <code>ResultSet</code>.
+ *
+ * @exception SQLException If an error occurs.
+ *
+ * @see ResultSet
+ */
+public abstract ResultSet
+getResultSet(long index, int count) throws SQLException;
+
+/*************************************************************************/
+
+/**
+ * This method returns a portion of the array as a <code>ResultSet</code>.
+ * The returned portion will start at index <code>offset</code> into the
+ * array and up to <code>length</code> elements will be returned.
+ * <p>
+ * Each row of the result set will have two columns. The first will be
+ * the index into the array of that row's contents. The second will be
+ * the actual value of that array element. The specified <code>Map</code>
+ * will be used to override selected default mappings of SQL types to
+ * Java classes.
+ *
+ * @param offset The index into the array to start returning elements from.
+ * @param length The requested number of elements to return.
+ * @param map A mapping of SQL types to Java classes.
+ *
+ * @return The requested elements of this array as a <code>ResultSet</code>.
+ *
+ * @exception SQLException If an error occurs.
+ *
+ * @see ResultSet
+ */
+public abstract ResultSet
+getResultSet(long index, int count, Map map) throws SQLException;
+
+} // interface Array
+
diff --git a/java/sql/Blob.java b/java/sql/Blob.java
new file mode 100644
index 000000000..07ab6f11a
--- /dev/null
+++ b/java/sql/Blob.java
@@ -0,0 +1,114 @@
+/*************************************************************************
+/* Blob.java -- Access a SQL Binary Large OBject.
+/*
+/* Copyright (c) 1999 Free Software Foundation, Inc.
+/* Written by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This library is free software; you can redistribute it and/or modify
+/* it under the terms of the GNU Library General Public License as published
+/* by the Free Software Foundation, either version 2 of the License, or
+/* (at your option) any later verion.
+/*
+/* This library 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 Library General Public License for more details.
+/*
+/* You should have received a copy of the GNU Library General Public License
+/* along with this library; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+package java.sql;
+
+import java.io.InputStream;
+
+/**
+ * This interface specified methods for accessing a SQL BLOB (Binary
+ * Large OBject) type.
+ *
+ * @author Aaron M. Renn (arenn@urbanophile.com)
+ */
+public abstract interface Blob
+{
+
+/*************************************************************************/
+
+/**
+ * This method returns the number of bytes in the BLOB.
+ *
+ * @return The number of bytes in the BLOB.
+ *
+ * @exception SQLException If an error occurs.
+ */
+public abstract long
+length() throws SQLException;
+
+/*************************************************************************/
+
+/**
+ * This method returns up to the requested bytes of this BLOB as a
+ * <code>byte</code> array.
+ *
+ * @param offset The index into the BLOB to start returning bytes from.
+ * @param length The requested number of bytes to return.
+ *
+ * @return The requested bytes from the BLOB.
+ *
+ * @exception SQLException If an error occurs.
+ */
+public abstract byte[]
+getBytes(long offset, int length) throws SQLException;
+
+/*************************************************************************/
+
+/**
+ * This method returns a stream that will read the bytes of the BLOB.
+ *
+ * @return A stream that will read the bytes of the BLOB.
+ *
+ * @exception SQLException If an error occurs.
+ */
+public abstract InputStream
+getBinaryStream() throws SQLException;
+
+/*************************************************************************/
+
+/**
+ * This method returns the index into the BLOB at which the first instance
+ * of the specified bytes occur. The searching starts at the specified
+ * index into the BLOB.
+ *
+ * @param pattern The byte pattern to search for.
+ * @param offset The index into the BLOB to starting searching for the pattern.
+ *
+ * @return The offset at which the pattern is first found, or -1 if the
+ * pattern is not found.
+ *
+ * @exception SQLException If an error occurs.
+ */
+public abstract long
+position(byte[] pattern, long offset) throws SQLException;
+
+/*************************************************************************/
+
+/**
+ * This method returns the index into the BLOB at which the first instance
+ * of the specified pattern occurs. The searching starts at the specified
+ * index into this BLOB. The bytes in the specified <code>Blob</code> are
+ * used as the search pattern.
+ *
+ * @param pattern The <code>Blob</code> containing the byte pattern to
+ * search for.
+ * @param offset The index into the BLOB to starting searching for the pattern.
+ *
+ * @return The offset at which the pattern is first found, or -1 if the
+ * pattern is not found.
+ *
+ * @exception SQLException If an error occurs.
+ */
+public abstract long
+position(Blob pattern, long offset) throws SQLException;
+
+} // interface Blob
+
diff --git a/java/sql/Clob.java b/java/sql/Clob.java
new file mode 100644
index 000000000..0ad2dabe8
--- /dev/null
+++ b/java/sql/Clob.java
@@ -0,0 +1,130 @@
+/*************************************************************************
+/* Clob.java -- Access Character Large OBjects
+/*
+/* Copyright (c) 1999 Free Software Foundation, Inc.
+/* Written by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This library is free software; you can redistribute it and/or modify
+/* it under the terms of the GNU Library General Public License as published
+/* by the Free Software Foundation, either version 2 of the License, or
+/* (at your option) any later verion.
+/*
+/* This library 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 Library General Public License for more details.
+/*
+/* You should have received a copy of the GNU Library General Public License
+/* along with this library; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+package java.sql;
+
+import java.io.InputStream;
+import java.io.Reader;
+
+/**
+ * This interface contains methods for accessing a SQL CLOB (Character
+ * Large OBject) type.
+ *
+ * @author Aaron M. Renn (arenn@urbanophile.com)
+ */
+public abstract interface Clob
+{
+
+/**
+ * This method returns the number of characters in the CLOB.
+ *
+ * @return The number of characters in the CLOB.
+ *
+ * @exception SQLException If an error occurs.
+ */
+public abstract long
+length() throws SQLException;
+
+/*************************************************************************/
+
+/**
+ * This method returns the specified portion of the CLOB as a
+ * <code>String</code>.
+ *
+ * @param offset The index into the CLOB (index values start at 1) to
+ * start returning characters from.
+ * @param length The requested number of characters to return.
+ *
+ * @return The requested CLOB section, as a <code>String</code>.
+ *
+ * @exception SQLException If an error occurs.
+ */
+public abstract String
+getSubString(long offset, int length) throws SQLException;
+
+/*************************************************************************/
+
+/**
+ * This method returns a byte stream that reads the contents of the
+ * CLOB as a series of ASCII bytes.
+ *
+ * @return A stream to read the CLOB's contents.
+ *
+ * @exception SQLException If an error occurs.
+ */
+public abstract InputStream
+getAsciiStream() throws SQLException;
+
+/*************************************************************************/
+
+/**
+ * This method returns a character stream that reads the contents of the
+ * CLOB.
+ *
+ * @return A character stream to read the CLOB's contents.
+ *
+ * @exception SQLException If an error occurs.
+ */
+public abstract Reader
+getCharacterStream() throws SQLException;
+
+/*************************************************************************/
+
+/**
+ * This method returns the index into the CLOB of the first occurrence of
+ * the specified character pattern (supplied by the caller as a
+ * <code>String</code>). The search begins at the specified index.
+ *
+ * @param pattern The character pattern to search for, passed as a
+ * <code>String</code>.
+ * @param offset. The index into the CLOB to start search (indexes start
+ * at 1).
+ *
+ * @return The index at which the pattern was found (indexes start at 1),
+ * or -1 if the pattern was not found.
+ *
+ * @exception SQLException If an error occurs.
+ */
+public abstract long
+position(String pattern, long offset) throws SQLException;
+
+/*************************************************************************/
+
+/**
+ * This method returns the index into the CLOB of the first occurrence of
+ * the specified character pattern (supplied by the caller as a
+ * <code>Clob</code>). The search begins at the specified index.
+ *
+ * @param pattern The character pattern to search for, passed as a
+ * <code>Clob</code>.
+ * @param offset. The index into the CLOB to start search (indexes start
+ * at 1).
+ *
+ * @return The index at which the pattern was found (indexes start at 1),
+ * or -1 if the pattern was not found.
+ *
+ * @exception SQLException If an error occurs.
+ */
+public abstract long
+position(Clob pattern, long offset) throws SQLException;
+
+} // interface Clob
+
diff --git a/java/sql/Connection.java b/java/sql/Connection.java
new file mode 100644
index 000000000..3c326663b
--- /dev/null
+++ b/java/sql/Connection.java
@@ -0,0 +1,445 @@
+/*************************************************************************
+/* Connection.java -- Manage a database connection.
+/*
+/* Copyright (c) 1999 Free Software Foundation, Inc.
+/* Written by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This library is free software; you can redistribute it and/or modify
+/* it under the terms of the GNU Library General Public License as published
+/* by the Free Software Foundation, either version 2 of the License, or
+/* (at your option) any later verion.
+/*
+/* This library 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 Library General Public License for more details.
+/*
+/* You should have received a copy of the GNU Library General Public License
+/* along with this library; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+package java.sql;
+
+import java.util.Map;
+
+/**
+ * This interface provides methods for managing a connection to a database.
+ *
+ * @author Aaron M. Renn (arenn@urbanophile.com)
+ */
+public abstract 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_SERIALIZEABLE = 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 SQL statement with the specified type and
+ * concurrency. Valid values for these parameters are specified in the
+ * <code>ResultSet</code> class.
+ *
+ * @param resultSetType The type of result set to use for this statement.
+ * @param resultSetConcurrency. The type of concurrency to be used in
+ * the result set for this statement.
+ *
+ * @return A new <code>Statement</code> object.
+ *
+ * @exception SQLException If an error occurs.
+ *
+ * @see Statement
+ * @see ResultSet
+ */
+public abstract Statement
+createStatement(int resultSetType, int resultSetConcurrency)
+ 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>PreparedStatement</code> for the specified
+ * SQL string. This method is designed for use with parameterized
+ * statements. The specified result set type and concurrency will be used.
+ * Valid values for these parameters are specified in the
+ * <code>ResultSet</code> class.
+ *
+ * @param The SQL statement to use in creating this
+ * <code>PreparedStatement</code>.
+ * @param resultSetType The type of result set to use for this statement.
+ * @param resultSetConcurrency. The type of concurrency to be used in
+ * the result set for this statement.
+ *
+ * @return A new <code>PreparedStatement</code>.
+ *
+ * @exception SQLException If an error occurs.
+ *
+ * @see PreparedStatement
+ * @see ResultSet
+ */
+public abstract PreparedStatement
+prepareStatement(String sql, int resultSetType, int resultSetConcurrency)
+ 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 creates a new <code>CallableStatement</code> for the
+ * specified SQL string. Thie method is designed to be used with
+ * stored procedures. The specified result set type and concurrency
+ * will be used. Valid values for these parameters are specified in the
+ * <code>ResultSet</code> class.
+ *
+ * @param The SQL statement to use in creating this
+ * <code>PreparedStatement</code>.
+ * @param resultSetType The type of result set to use for this statement.
+ * @param resultSetConcurrency. The type of concurrency to be used in
+ * the result set for this statement.
+ *
+ * @return A new <code>CallableStatement</code>.
+ *
+ * @exception SQLException If an error occurs.
+ *
+ * @see CallableStatement
+ * @see ResultSet
+ */
+public abstract CallableStatement
+prepareCall(String sql, int resultSetType, int resultSetConcurrency)
+ 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 returns the current transaction isolation mode. This must
+ * be one of the constants defined in this interface.
+ *
+ * @param level The transaction isolation level.
+ *
+ * @exception SQLException If an error occurs.
+ */
+public abstract void
+getTransactionIsolation(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;
+
+/*************************************************************************/
+
+/**
+ * This method returns the mapping of SQL types to Java classes
+ * currently in use by this connection. This mapping will have no
+ * entries unless they have been manually added.
+ *
+ * @return The SQL type to Java class mapping.
+ *
+ * @exception SQLException If an error occurs.
+ */
+public abstract Map
+getTypeMap() throws SQLException;
+
+/*************************************************************************/
+
+/**
+ * This method sets the mapping table for SQL types to Java classes.
+ * Any entries in this map override the defaults.
+ *
+ * @param map The new SQL mapping table.
+ *
+ * @exception SQLException If an error occurs.
+ */
+public abstract void
+setTypeMap(Map map) throws SQLException;
+
+} // interface Connection
+
diff --git a/java/sql/Driver.java b/java/sql/Driver.java
new file mode 100644
index 000000000..21a89478a
--- /dev/null
+++ b/java/sql/Driver.java
@@ -0,0 +1,131 @@
+/*************************************************************************
+/* Driver.java -- A JDBC driver
+/*
+/* Copyright (c) 1999 Free Software Foundation, Inc.
+/* Written by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This library is free software; you can redistribute it and/or modify
+/* it under the terms of the GNU Library General Public License as published
+/* by the Free Software Foundation, either version 2 of the License, or
+/* (at your option) any later verion.
+/*
+/* This library 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 Library General Public License for more details.
+/*
+/* You should have received a copy of the GNU Library General Public License
+/* along with this library; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+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 abstract interface Driver
+{
+
+/**
+ * This method returns the major version number of the driver.
+ *
+ * @return The major version number of the driver.
+ */
+public abstract int
+getMajorVersionNumber();
+
+/*************************************************************************/
+
+/**
+ * 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
+