/*************************************************************************
/* 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