# DriverManager

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Summary:[Methods](https://developer.android.com/reference/java/sql/DriverManager#pubmethods)\|[Inherited Methods](https://developer.android.com/reference/java/sql/DriverManager#inhmethods)  

# DriverManager

`
public


class
DriverManager
`  
`

extends `[Object](https://developer.android.com/reference/java/lang/Object)`


``


`

|---|------------------------|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) ||
| ↳ | java.sql.DriverManager |

<br />

*** ** * ** ***

<br />

The basic service for managing a set of JDBC drivers.  
**NOTE:** The`DataSource`interface, new in the JDBC 2.0 API, provides another way to connect to a data source. The use of a`DataSource`object is the preferred means of connecting to a data source.

As part of its initialization, the`DriverManager`class will attempt to load the driver classes referenced in the "jdbc.drivers" system property. This allows a user to customize the JDBC Drivers used by their applications. For example in your \~/.hotjava/properties file you might specify:  

     jdbc.drivers=foo.bah.Driver:wombat.sql.Driver:bad.taste.ourDriver
     
The`DriverManager`methods`getConnection`and`getDrivers`have been enhanced to support the Java Standard Edition[Service Provider](https://docs.oracle.com/javase/8/docs/technotes/guides/jar/jar.html#Service%20Provider)mechanism. JDBC 4.0 Drivers must include the file`META-INF/services/java.sql.Driver`. This file contains the name of the JDBC drivers implementation of`java.sql.Driver`. For example, to load the`my.sql.Driver`class, the`META-INF/services/java.sql.Driver`file would contain the entry:  

     my.sql.Driver
     
Applications no longer need to explictly load JDBC drivers using`Class.forName()`. Existing programs which currently load JDBC drivers using`Class.forName()`will continue to work without modification.

When the method`getConnection`is called, the`DriverManager`will attempt to locate a suitable driver from amongst those loaded at initialization and those loaded explicitly using the same classloader as the current applet or application.

Starting with the Java 2 SDK, Standard Edition, version 1.3, a logging stream can be set only if the proper permission has been granted. Normally this will be done with the tool PolicyTool, which can be used to grant`permission
java.sql.SQLPermission "setLog"`.  
**See also:**

- [Driver](https://developer.android.com/reference/java/sql/Driver)
- [Connection](https://developer.android.com/reference/java/sql/Connection)

## Summary

|                                                                                                                                                                                                                                                                                                       ### Public methods                                                                                                                                                                                                                                                                                                       ||
|---------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ` static void`                                                                                                                                                | ` `[deregisterDriver](https://developer.android.com/reference/java/sql/DriverManager#deregisterDriver(java.sql.Driver))`(`[Driver](https://developer.android.com/reference/java/sql/Driver)` driver) ` Drops a driver from the`DriverManager`'s list.                                                                                                                                                                                                           |
| ` static `[Connection](https://developer.android.com/reference/java/sql/Connection)                                                                           | ` `[getConnection](https://developer.android.com/reference/java/sql/DriverManager#getConnection(java.lang.String))`(`[String](https://developer.android.com/reference/java/lang/String)` url) ` Attempts to establish a connection to the given database URL.                                                                                                                                                                                                   |
| ` static `[Connection](https://developer.android.com/reference/java/sql/Connection)                                                                           | ` `[getConnection](https://developer.android.com/reference/java/sql/DriverManager#getConnection(java.lang.String,%20java.lang.String,%20java.lang.String))`(`[String](https://developer.android.com/reference/java/lang/String)` url, `[String](https://developer.android.com/reference/java/lang/String)` user, `[String](https://developer.android.com/reference/java/lang/String)` password) ` Attempts to establish a connection to the given database URL. |
| ` static `[Connection](https://developer.android.com/reference/java/sql/Connection)                                                                           | ` `[getConnection](https://developer.android.com/reference/java/sql/DriverManager#getConnection(java.lang.String,%20java.util.Properties))`(`[String](https://developer.android.com/reference/java/lang/String)` url, `[Properties](https://developer.android.com/reference/java/util/Properties)` info) ` Attempts to establish a connection to the given database URL.                                                                                        |
| ` static `[Driver](https://developer.android.com/reference/java/sql/Driver)                                                                                   | ` `[getDriver](https://developer.android.com/reference/java/sql/DriverManager#getDriver(java.lang.String))`(`[String](https://developer.android.com/reference/java/lang/String)` url) ` Attempts to locate a driver that understands the given URL.                                                                                                                                                                                                             |
| ` static `[Enumeration](https://developer.android.com/reference/java/util/Enumeration)`<`[Driver](https://developer.android.com/reference/java/sql/Driver)`>` | ` `[getDrivers](https://developer.android.com/reference/java/sql/DriverManager#getDrivers())`() ` Retrieves an Enumeration with all of the currently loaded JDBC drivers to which the current caller has access.                                                                                                                                                                                                                                                |
| ` static `[PrintStream](https://developer.android.com/reference/java/io/PrintStream)                                                                          | ` `[getLogStream](https://developer.android.com/reference/java/sql/DriverManager#getLogStream())`() ` *This method was deprecated in API level 15. Use`getLogWriter`instead.*                                                                                                                                                                                                                                                                                   |
| ` static `[PrintWriter](https://developer.android.com/reference/java/io/PrintWriter)                                                                          | ` `[getLogWriter](https://developer.android.com/reference/java/sql/DriverManager#getLogWriter())`() ` Retrieves the log writer.                                                                                                                                                                                                                                                                                                                                 |
| ` static int`                                                                                                                                                 | ` `[getLoginTimeout](https://developer.android.com/reference/java/sql/DriverManager#getLoginTimeout())`() ` Gets the maximum time in seconds that a driver can wait when attempting to log in to a database.                                                                                                                                                                                                                                                    |
| ` static void`                                                                                                                                                | ` `[println](https://developer.android.com/reference/java/sql/DriverManager#println(java.lang.String))`(`[String](https://developer.android.com/reference/java/lang/String)` message) ` Prints a message to the current JDBC log stream.                                                                                                                                                                                                                        |
| ` static void`                                                                                                                                                | ` `[registerDriver](https://developer.android.com/reference/java/sql/DriverManager#registerDriver(java.sql.Driver))`(`[Driver](https://developer.android.com/reference/java/sql/Driver)` driver) ` Registers the given driver with the`DriverManager`.                                                                                                                                                                                                          |
| ` static void`                                                                                                                                                | ` `[setLogStream](https://developer.android.com/reference/java/sql/DriverManager#setLogStream(java.io.PrintStream))`(`[PrintStream](https://developer.android.com/reference/java/io/PrintStream)` out) ` *This method was deprecated in API level 15. Use`setLogWriter`instead.*                                                                                                                                                                                |
| ` static void`                                                                                                                                                | ` `[setLogWriter](https://developer.android.com/reference/java/sql/DriverManager#setLogWriter(java.io.PrintWriter))`(`[PrintWriter](https://developer.android.com/reference/java/io/PrintWriter)` out) ` Sets the logging/tracing`PrintWriter`object that is used by the`DriverManager`and all drivers.                                                                                                                                                         |
| ` static void`                                                                                                                                                | ` `[setLoginTimeout](https://developer.android.com/reference/java/sql/DriverManager#setLoginTimeout(int))`(int seconds) ` Sets the maximum time in seconds that a driver will wait while attempting to connect to a database.                                                                                                                                                                                                                                   |

| ### Inherited methods |
|-----------------------|---|
| From class` `[java.lang.Object](https://developer.android.com/reference/java/lang/Object)` ` |--------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | ` `[Object](https://developer.android.com/reference/java/lang/Object)          | ` `[clone](https://developer.android.com/reference/java/lang/Object#clone())`() ` Creates and returns a copy of this object.                                                                                                                                                      | | ` boolean`                                                                     | ` `[equals](https://developer.android.com/reference/java/lang/Object#equals(java.lang.Object))`(`[Object](https://developer.android.com/reference/java/lang/Object)` obj) ` Indicates whether some other object is "equal to" this one.                                           | | ` void`                                                                        | ` `[finalize](https://developer.android.com/reference/java/lang/Object#finalize())`() ` Called by the garbage collector on an object when garbage collection determines that there are no more references to the object.                                                          | | ` final `[Class](https://developer.android.com/reference/java/lang/Class)`<?>` | ` `[getClass](https://developer.android.com/reference/java/lang/Object#getClass())`() ` Returns the runtime class of this`Object`.                                                                                                                                                | | ` int`                                                                         | ` `[hashCode](https://developer.android.com/reference/java/lang/Object#hashCode())`() ` Returns a hash code value for the object.                                                                                                                                                 | | ` final void`                                                                  | ` `[notify](https://developer.android.com/reference/java/lang/Object#notify())`() ` Wakes up a single thread that is waiting on this object's monitor.                                                                                                                            | | ` final void`                                                                  | ` `[notifyAll](https://developer.android.com/reference/java/lang/Object#notifyAll())`() ` Wakes up all threads that are waiting on this object's monitor.                                                                                                                         | | ` `[String](https://developer.android.com/reference/java/lang/String)          | ` `[toString](https://developer.android.com/reference/java/lang/Object#toString())`() ` Returns a string representation of the object.                                                                                                                                            | | ` final void`                                                                  | ` `[wait](https://developer.android.com/reference/java/lang/Object#wait(long,%20int))`(long timeoutMillis, int nanos) ` Causes the current thread to wait until it is awakened, typically by being*notified* or*interrupted*, or until a certain amount of real time has elapsed. | | ` final void`                                                                  | ` `[wait](https://developer.android.com/reference/java/lang/Object#wait(long))`(long timeoutMillis) ` Causes the current thread to wait until it is awakened, typically by being*notified* or*interrupted*, or until a certain amount of real time has elapsed.                   | | ` final void`                                                                  | ` `[wait](https://developer.android.com/reference/java/lang/Object#wait())`() ` Causes the current thread to wait until it is awakened, typically by being*notified* or*interrupted*.                                                                                             | ||

## Public methods

### deregisterDriver

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static void deregisterDriver (Driver driver)
```

Drops a driver from the`DriverManager`'s list. Applets can only deregister drivers from their own classloaders.

<br />

|                     Parameters                     ||
|----------|------------------------------------------|
| `driver` | `Driver`: the JDBC Driver to drop <br /> |

|                                                      Throws                                                      ||
|-------------------------------------------------------------------------------|-----------------------------------|
| [SQLException](https://developer.android.com/reference/java/sql/SQLException) | if a database access error occurs |

### getConnection

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static Connection getConnection (String url)
```

Attempts to establish a connection to the given database URL. The`DriverManager`attempts to select an appropriate driver from the set of registered JDBC drivers.

<br />

|                                      Parameters                                      ||
|-------|-------------------------------------------------------------------------------|
| `url` | `String`: a database url of the form` jdbc:`*subprotocol* `:`*subname* <br /> |

|                                                  Returns                                                  ||
|---------------------------------------------------------------------------|--------------------------------|
| [Connection](https://developer.android.com/reference/java/sql/Connection) | a connection to the URL <br /> |

|                                                      Throws                                                      ||
|-------------------------------------------------------------------------------|-----------------------------------|
| [SQLException](https://developer.android.com/reference/java/sql/SQLException) | if a database access error occurs |

### getConnection

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static Connection getConnection (String url, 
                String user, 
                String password)
```

Attempts to establish a connection to the given database URL. The`DriverManager`attempts to select an appropriate driver from the set of registered JDBC drivers.

<br />

|                                         Parameters                                          ||
|------------|---------------------------------------------------------------------------------|
| `url`      | `String`: a database url of the form`jdbc:`*subprotocol* `:`*subname* <br />    |
| `user`     | `String`: the database user on whose behalf the connection is being made <br /> |
| `password` | `String`: the user's password <br />                                            |

|                                                  Returns                                                  ||
|---------------------------------------------------------------------------|--------------------------------|
| [Connection](https://developer.android.com/reference/java/sql/Connection) | a connection to the URL <br /> |

|                                                      Throws                                                      ||
|-------------------------------------------------------------------------------|-----------------------------------|
| [SQLException](https://developer.android.com/reference/java/sql/SQLException) | if a database access error occurs |

### getConnection

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static Connection getConnection (String url, 
                Properties info)
```

Attempts to establish a connection to the given database URL. The`DriverManager`attempts to select an appropriate driver from the set of registered JDBC drivers.

<br />

|                                                                               Parameters                                                                               ||
|--------|----------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `url`  | `String`: a database url of the form` jdbc:`*subprotocol* `:`*subname* <br />                                                                                  |
| `info` | `Properties`: a list of arbitrary string tag/value pairs as connection arguments; normally at least a "user" and "password" property should be included <br /> |

|                                                  Returns                                                  ||
|---------------------------------------------------------------------------|--------------------------------|
| [Connection](https://developer.android.com/reference/java/sql/Connection) | a Connection to the URL <br /> |

|                                                      Throws                                                      ||
|-------------------------------------------------------------------------------|-----------------------------------|
| [SQLException](https://developer.android.com/reference/java/sql/SQLException) | if a database access error occurs |

### getDriver

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static Driver getDriver (String url)
```

Attempts to locate a driver that understands the given URL. The`DriverManager`attempts to select an appropriate driver from the set of registered JDBC drivers.

<br />

|                                     Parameters                                      ||
|-------|------------------------------------------------------------------------------|
| `url` | `String`: a database URL of the form`jdbc:`*subprotocol* `:`*subname* <br /> |

|                                                                      Returns                                                                      ||
|-------------------------------------------------------------------|--------------------------------------------------------------------------------|
| [Driver](https://developer.android.com/reference/java/sql/Driver) | a`Driver`object representing a driver that can connect to the given URL <br /> |

|                                                      Throws                                                      ||
|-------------------------------------------------------------------------------|-----------------------------------|
| [SQLException](https://developer.android.com/reference/java/sql/SQLException) | if a database access error occurs |

### getDrivers

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static Enumeration<Driver> getDrivers ()
```

Retrieves an Enumeration with all of the currently loaded JDBC drivers to which the current caller has access.

**Note:** The classname of a driver can be found using`d.getClass().getName()`

<br />

|                                                                                                         Returns                                                                                                          ||
|-----------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------|
| [Enumeration](https://developer.android.com/reference/java/util/Enumeration)`<`[Driver](https://developer.android.com/reference/java/sql/Driver)`>` | the list of JDBC Drivers loaded by the caller's class loader <br /> |

### getLogStream

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Deprecated in[API level 15](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static PrintStream getLogStream ()
```

<br />

**This method was deprecated in API level 15.**   
Use`getLogWriter`instead.

Retrieves the logging/tracing PrintStream that is used by the`DriverManager`and all drivers.

<br />

|                                                                  Returns                                                                  ||
|----------------------------------------------------------------------------|---------------------------------------------------------------|
| [PrintStream](https://developer.android.com/reference/java/io/PrintStream) | the logging/tracing PrintStream; if disabled, is`null` <br /> |

**See also:**

- [setLogStream(PrintStream)](https://developer.android.com/reference/java/sql/DriverManager#setLogStream(java.io.PrintStream))  

### getLogWriter

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static PrintWriter getLogWriter ()
```

Retrieves the log writer. The`getLogWriter`and`setLogWriter`methods should be used instead of the`get/setlogStream`methods, which are deprecated.

<br />

|                                                     Returns                                                     ||
|----------------------------------------------------------------------------|-------------------------------------|
| [PrintWriter](https://developer.android.com/reference/java/io/PrintWriter) | a`java.io.PrintWriter`object <br /> |

**See also:**

- [setLogWriter(PrintWriter)](https://developer.android.com/reference/java/sql/DriverManager#setLogWriter(java.io.PrintWriter))  

### getLoginTimeout

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static int getLoginTimeout ()
```

Gets the maximum time in seconds that a driver can wait when attempting to log in to a database.

<br />

|                       Returns                        ||
|-------|-----------------------------------------------|
| `int` | the driver login time limit in seconds <br /> |

**See also:**

- [setLoginTimeout(int)](https://developer.android.com/reference/java/sql/DriverManager#setLoginTimeout(int))  

### println

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static void println (String message)
```

Prints a message to the current JDBC log stream.

<br />

|                      Parameters                      ||
|-----------|-------------------------------------------|
| `message` | `String`: a log or tracing message <br /> |

### registerDriver

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static void registerDriver (Driver driver)
```

Registers the given driver with the`DriverManager`. A newly-loaded driver class should call the method`registerDriver`to make itself known to the`DriverManager`.

<br />

|                                           Parameters                                            ||
|----------|---------------------------------------------------------------------------------------|
| `driver` | `Driver`: the new JDBC Driver that is to be registered with the`DriverManager` <br /> |

|                                                      Throws                                                      ||
|-------------------------------------------------------------------------------|-----------------------------------|
| [SQLException](https://developer.android.com/reference/java/sql/SQLException) | if a database access error occurs |

### setLogStream

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Deprecated in[API level 15](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static void setLogStream (PrintStream out)
```

<br />

**This method was deprecated in API level 15.**   
Use`setLogWriter`instead.

Sets the logging/tracing PrintStream that is used by the`DriverManager`and all drivers.

In the Java 2 SDK, Standard Edition, version 1.3 release, this method checks to see that there is an`SQLPermission`object before setting the logging stream. If a`SecurityManager`exists and its`checkPermission`method denies setting the log writer, this method throws a`java.lang.SecurityException`.

<br />

|                                         Parameters                                         ||
|-------|-------------------------------------------------------------------------------------|
| `out` | `PrintStream`: the new logging/tracing PrintStream; to disable, set to`null` <br /> |

|                                                                                       Throws                                                                                        ||
|------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------|
| [SecurityException](https://developer.android.com/reference/java/lang/SecurityException) | if a security manager exists and its`checkPermission`method denies setting the log stream |

**See also:**

- [SecurityManager.checkPermission(Permission)](https://developer.android.com/reference/java/lang/SecurityManager#checkPermission(java.security.Permission))
- [getLogStream()](https://developer.android.com/reference/java/sql/DriverManager#getLogStream())  

### setLogWriter

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static void setLogWriter (PrintWriter out)
```

Sets the logging/tracing`PrintWriter`object that is used by the`DriverManager`and all drivers.

There is a minor versioning problem created by the introduction of the method`setLogWriter`. The method`setLogWriter`cannot create a`PrintStream`object that will be returned by`getLogStream`---the Java platform does not provide a backward conversion. As a result, a new application that uses`setLogWriter`and also uses a JDBC 1.0 driver that uses`getLogStream`will likely not see debugging information written by that driver.

Starting with the Java 2 SDK, Standard Edition, version 1.3 release, this method checks to see that there is an`SQLPermission`object before setting the logging stream. If a`SecurityManager`exists and its`checkPermission`method denies setting the log writer, this method throws a`java.lang.SecurityException`.

<br />

|                                                  Parameters                                                  ||
|-------|-------------------------------------------------------------------------------------------------------|
| `out` | `PrintWriter`: the new logging/tracing`PrintStream`object;`null`to disable logging and tracing <br /> |

|                                                                                       Throws                                                                                        ||
|------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------|
| [SecurityException](https://developer.android.com/reference/java/lang/SecurityException) | if a security manager exists and its`checkPermission`method denies setting the log writer |

**See also:**

- [SecurityManager.checkPermission(Permission)](https://developer.android.com/reference/java/lang/SecurityManager#checkPermission(java.security.Permission))
- [getLogWriter()](https://developer.android.com/reference/java/sql/DriverManager#getLogWriter())  

### setLoginTimeout

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static void setLoginTimeout (int seconds)
```

Sets the maximum time in seconds that a driver will wait while attempting to connect to a database.

<br />

|                                       Parameters                                       ||
|-----------|-----------------------------------------------------------------------------|
| `seconds` | `int`: the login time limit in seconds; zero means there is no limit <br /> |

**See also:**

- [getLoginTimeout()](https://developer.android.com/reference/java/sql/DriverManager#getLoginTimeout())