/************************************************************************* /* 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 DriverManager in * a static initializer. *

* Because the DriverManager 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 true if the driver has been * certified as JDBC compliant. * * @return true if the driver has been certified JDBC compliant, * false 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 true if the drivers can connect to the database, * false 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 null instead of throwing an * exception since the DriverManager 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 Connection object for the newly established * connection, or null if the URL is not understood. * * @exception SQLException If an error occurs. */ public abstract Connection connect(String url, Properties properties) throws SQLException; } // interface Driver