java.sql

接口
异常
java.lang.Object
  继承者 java.sql.DriverManager

public class DriverManager
     
extends Object

管理一组 JDBC 驱动程序的基本服务。
注:DataSource 接口是 JDBC 2.0 API 中的新增内容,它提供了连接到数据源的另一种方法。使用 DataSource 对象是连接到数据源的首选方法。

作为初始化的一部分,DriverManager 类会尝试加载在 "jdbc.drivers" 系统属性中引用的驱动程序类。这允许用户定制由他们的应用程序使用的 JDBC Driver。例如,在 ~/.hotjava/properties 文件中,用户可以指定:

 jdbc.drivers=foo.bah.Driver:wombat.sql.Driver:bad.taste.ourDriver
 

DriverManager 类的方法 getConnectiongetDrivers 已经得到提高以支持 Java Standard Edition Service Provider 机制。 JDBC 4.0 Drivers 必须包括 META-INF/services/java.sql.Driver 文件。此文件包含 java.sql.Driver 的 JDBC 驱动程序实现的名称。例如,要加载 my.sql.Driver 类,META-INF/services/java.sql.Driver 文件需要包含下面的条目:

 my.sql.Driver
 

应用程序不再需要使用 Class.forName() 显式地加载 JDBC 驱动程序。当前使用 Class.forName() 加载 JDBC 驱动程序的现有程序将在不作修改的情况下继续工作。

在调用 getConnection 方法时,DriverManager 会试着从初始化时加载的那些驱动程序以及使用与当前 applet 或应用程序相同的类加载器显式加载的那些驱动程序中查找合适的驱动程序。

从 Java 2 SDK 标准版本 1.3 版开始,只有当已授予适当权限时设置日志流。通常这将使用工具 PolicyTool 完成,该工具可用于授予 permission java.sql.SQLPermission "setLog" 权限。

另请参见:
Driver, Connection

方法摘要
static void deregisterDriver(Driver driver)
          从 DriverManager 的列表中删除一个驱动程序。
static Connection getConnection(String url)
          试图建立到给定数据库 URL 的连接。
static Connection getConnection(String url, Properties info)
          试图建立到给定数据库 URL 的连接。
static Connection getConnection(String url, String user, String password)
          试图建立到给定数据库 URL 的连接。
static Driver getDriver(String url)
          试图查找能理解给定 URL 的驱动程序。
static Enumeration<Driver> getDrivers()
          获取带有当前调用者可以访问的所有当前已加载 JDBC 驱动程序的 Enumeration。
static int getLoginTimeout()
          获取驱动程序试图登录到某一数据库时可以等待的最长时间,以秒为单位。
static PrintStream getLogStream()
          已过时。  
static PrintWriter getLogWriter()
          获取日志 writer。
static void println(String message)
          将一条消息打印到当前 JDBC 日志流中。
static void registerDriver(Driver driver)
          向 DriverManager 注册给定驱动程序。
static void setLoginTimeout(int seconds)
          设置驱动程序试图连接到某一数据库时将等待的最长时间,以秒为单位。
static void setLogStream(PrintStream out)
          已过时。  
static void setLogWriter(PrintWriter out)
          设置由 DriverManager 和所有驱动程序使用的日志/追踪 PrintWriter 对象。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

方法详细信息

getLogWriter

public static PrintWriter getLogWriter()
获取日志 writer。应该使用 getLogWritersetLogWriter 方法,而不是使用 get/setlogStream 方法,后者已不建议使用。

返回:
java.io.PrintWriter 对象
从以下版本开始:
1.2
另请参见:
setLogWriter(java.io.PrintWriter)

setLogWriter

public static void setLogWriter(PrintWriter out)
设置由 DriverManager 和所有驱动程序使用的日志/追踪 PrintWriter 对象。

存在一个因为引入 setLogWriter 方法而导致的次版本问题。setLogWriter 方法无法创建将由 getLogStream 返回的 PrintStream 对象,Java 版本不提供后向转换。结果,使用 setLogWriter 的新应用程序以及仍然使用利用 getLogStream 的 JDBC 1.0 驱动程序的新程序很可能将无法查看由该驱动程序写入的调试信息。

从 Java 2 SDK 标准版 1.3 版开始,此方法将查看设置日志流之前是否有 SQLPermission 对象。如果存在 SecurityManager 并且其 checkPermission 方法拒绝设置日志 writer,则此方法将抛出 java.lang.SecurityException

参数:
out - 新的日志/追踪 PrintStream 对象; null 表示禁止日志和追踪
抛出:
SecurityException - 如果安全管理器存在并且其 checkPermission 方法拒绝设置日志 writer
从以下版本开始:
1.2
另请参见:
SecurityManager.checkPermission(java.security.Permission), getLogWriter()

getConnection

public static Connection getConnection(String url,
                                       Properties info)
                                throws SQLException
试图建立到给定数据库 URL 的连接。 DriverManager 试图从已注册的 JDBC 驱动程序集中选择一个适当的驱动程序。

参数:
url - jdbc:subprotocol:subname 形式的数据库 url
info - 作为连接参数的任意字符串标记/值对的列表;通常至少应该包括 "user" 和 "password" 属性
返回:
a 到 URL 的连接
抛出:
SQLException - 如果发生数据库访问错误

getConnection

public static Connection getConnection(String url,
                                       String user,
                                       String password)
                                throws SQLException
试图建立到给定数据库 URL 的连接。 DriverManager 试图从已注册的 JDBC 驱动程序集中选择一个适当的驱动程序。

参数:
url - jdbc:subprotocol:subname 形式的数据库 url
user - 数据库用户,连接是为该用户建立的
password - 用户的密码
返回:
到 URL 的连接
抛出:
SQLException - 如果发生数据库访问错误

getConnection

public static Connection getConnection(String url)
                                throws SQLException
试图建立到给定数据库 URL 的连接。 DriverManager 试图从已注册的 JDBC 驱动程序集中选择一个适当的驱动程序。

参数:
url - jdbc:subprotocol:subname 形式的数据库 url
返回:
到 URL 的连接
抛出:
SQLException - 如果发生数据库访问错误

getDriver

public static Driver getDriver(String url)
                        throws SQLException
试图查找能理解给定 URL 的驱动程序。 DriverManager 试图从已注册的 JDBC 驱动程序集中选择一个适当的驱动程序。

参数:
url - jdbc:subprotocol:subname 形式的数据库 URL
返回:
表示可以连接到给定 URL 的驱动程序的 Driver 对象
抛出:
SQLException - 如果发生数据库访问错误

registerDriver

public static void registerDriver(Driver driver)
                           throws SQLException
DriverManager 注册给定驱动程序。新加载的驱动程序类应该调用 registerDriver 方法让 DriverManager 知道自己。

参数:
driver - 将向 DriverManager 注册的新的 JDBC Driver
抛出:
SQLException - 如果发生数据库访问错误

deregisterDriver

public static void deregisterDriver(Driver driver)
                             throws SQLException
DriverManager 的列表中删除一个驱动程序。applet 只能注销取自其自身的类加载器的驱动程序。

参数:
driver - 要删除的 JDBC Driver
抛出:
SQLException - 如果发生数据库访问错误

getDrivers

public static Enumeration<Driver> getDrivers()
获取带有当前调用者可以访问的所有当前已加载 JDBC 驱动程序的 Enumeration。

注:驱动程序的类名称可以使用 d.getClass().getName() 得到

返回:
由调用者的类加载器加载的 JDBC Driver 组成的列表

setLoginTimeout

public static void setLoginTimeout(int seconds)
设置驱动程序试图连接到某一数据库时将等待的最长时间,以秒为单位。

参数:
seconds - 登录时间限制,以秒为单位;0 表示没有限制
另请参见:
getLoginTimeout()

getLoginTimeout

public static int getLoginTimeout()
获取驱动程序试图登录到某一数据库时可以等待的最长时间,以秒为单位。

返回:
驱动程序登录时间限制,以秒为单位
另请参见:
setLoginTimeout(int)

setLogStream

public static void setLogStream(PrintStream out)
已过时。 

设置由 DriverManager 和所有驱动程序使用的日志/追踪 PrintStream。

在 Java 2 SDK 标准版 1.3 版中,此方法将查看设置日志流之前是否有 SQLPermission 对象。如果存在 SecurityManager 并且其 checkPermission 方法拒绝设置日志 writer,则此方法将抛出 java.lang.SecurityException

参数:
out - 新的日志/追踪 PrintStream;要禁止日志和追踪,可将该参数设置为 null
抛出:
SecurityException - 如果安全管理器存在并且其 checkPermission 方法拒绝设置日志流
另请参见:
SecurityManager.checkPermission(java.security.Permission), getLogStream()

getLogStream

public static PrintStream getLogStream()
已过时。 

获取由 DriverManager 和所有驱动程序使用的日志/追踪 PrintStream。

返回:
日志/追踪 PrintStream;如果禁止日志和追踪,则返回 null
另请参见:
setLogStream(java.io.PrintStream)

println

public static void println(String message)
将一条消息打印到当前 JDBC 日志流中。

参数:
message - 一条日志或追踪消息