- java.lang.Object
-
- java.sql.DriverManager
-
public class DriverManager extends Object
用于管理一组JDBC驱动程序的基本服务。注意:
DataSource
接口提供了连接数据源的另一种方法。 使用DataSource
对象是连接到数据源的首选方法。作为其初始化的一部分,
DriverManager
类将尝试通过使用以下方式加载可用的JDBC驱动程序:-
jdbc.drivers
系统属性,其中包含一个冒号分隔的JDBC驱动程序完全限定类名的列表。 每个驱动程序使用system class loader加载:-
jdbc.drivers=foo.bah.Driver:wombat.sql.Driver:bad.taste.ourDriver
-
-
java.sql.Driver
类的服务提供商,通过service-provider loading机制加载。
- Implementation Note:
-
DriverManager
初始化完成懒惰,并使用线程上下文类加载器查找服务提供程序。 加载并可用于应用程序的驱动程序将取决于通过DriverManager
触发驱动程序初始化的线程的线程上下文类加载器。当调用方法
getConnection
,DriverManager
将尝试从初始化中加载的驱动程序中找到合适的驱动程序,并使用与当前应用程序相同的类加载器明确加载驱动程序。 - 从以下版本开始:
- 1.1
- 另请参见:
-
Driver
,Connection
-
-
-
方法摘要
所有方法 静态方法 具体的方法 弃用的方法 Modifier and Type 方法 描述 static void
deregisterDriver(Driver driver)
从DriverManager
的注册驱动程序列表中删除指定的驱动程序。static Stream<Driver>
drivers()
使用当前调用者可以访问的所有当前加载的JDBC驱动程序检索流。static Connection
getConnection(String url)
尝试建立与给定数据库URL的连接。static Connection
getConnection(String url, String user, String password)
尝试建立与给定数据库URL的连接。static Connection
getConnection(String url, Properties info)
尝试建立与给定数据库URL的连接。static Driver
getDriver(String url)
尝试查找了解给定URL的驱动程序。static Enumeration<Driver>
getDrivers()
使用当前调用者可以访问的所有当前加载的JDBC驱动程序检索枚举。static int
getLoginTimeout()
获取尝试登录数据库时驱动程序可以等待的最长时间(秒)。static PrintStream
getLogStream()
已过时。使用getLogWriter
static PrintWriter
getLogWriter()
检索日志记录器。static void
println(String message)
打印到当前JDBC日志流的消息。static void
registerDriver(Driver driver)
使用DriverManager
注册给定的驱动程序。static void
registerDriver(Driver driver, DriverAction da)
使用DriverManager
注册给定的驱动程序。static void
setLoginTimeout(int seconds)
设置驱动程序在识别驱动程序后尝试连接到数据库时等待的最长时间(秒)。static void
setLogStream(PrintStream out)
已过时。使用setLogWriter
static void
setLogWriter(PrintWriter out)
设置DriverManager
和所有驱动程序使用的记录/跟踪PrintWriter
对象。
-
-
-
方法详细信息
-
getLogWriter
public static PrintWriter getLogWriter()
检索日志记录器。 应使用getLogWriter
和setLogWriter
方法,而不是get/setlogStream
方法,这些方法已被弃用。- 结果
-
一个
java.io.PrintWriter
对象 - 从以下版本开始:
- 1.2
- 另请参见:
-
setLogWriter(java.io.PrintWriter)
-
setLogWriter
public static void setLogWriter(PrintWriter out)
设置DriverManager
和所有驱动程序使用的日志/跟踪PrintWriter
对象。如果一个安全管理器存在,它的
checkPermission
方法首先被调用一个SQLPermission("setLog")
权限,以检查主叫方是否允许调用setLogWriter
。- 参数
-
out
- 新的记录/跟踪PrintStream
对象;null
禁用日志记录和跟踪 - 异常
-
SecurityException
- 如果存在安全管理员,并且其checkPermission
方法拒绝设置日志记录器的权限。 - 从以下版本开始:
- 1.2
- 另请参见:
-
SecurityManager.checkPermission(java.security.Permission)
,getLogWriter()
-
getConnection
public static Connection getConnection(String url, Properties info) throws SQLException
尝试建立与给定数据库URL的连接。DriverManager
尝试从一组已注册的JDBC驱动程序中选择适当的驱动程序。注意:如果将属性指定为
url
一部分,并且也在Properties
对象中指定,那么Properties
实现方式定义哪个值优先。 为了最大可移植性,应用程序应仅指定一次属性。- 参数
-
url
- 表单jdbc:subprotocol:subname
的数据库URL -
info
- 任意字符串标签/值对作为连接参数的列表; 通常至少应包含“用户”和“密码”属性 - 结果
- 连接到URL
- 异常
-
SQLException
- 如果发生数据库访问错误或URL为null
-
SQLTimeoutException
- 当驱动程序确定已经超过了setLoginTimeout
方法指定的超时值,并且至少尝试取消当前的数据库连接尝试
-
getConnection
public static Connection getConnection(String url, String user, String password) throws SQLException
尝试建立与给定数据库URL的连接。DriverManager
尝试从一组已注册的JDBC驱动程序中选择适当的驱动程序。注意:如果
user
或password
属性也被指定为url
一部分,则实现定义哪个值优先。 为了最大可移植性,应用程序应仅指定一次属性。- 参数
-
url
- 表单jdbc:subprotocol:subname
的数据库URL -
user
- 正在进行连接的数据库用户 -
password
- 用户密码 - 结果
- 与URL的连接
- 异常
-
SQLException
- 如果发生数据库访问错误或url是null
-
SQLTimeoutException
- 当驱动程序确定已经超过了setLoginTimeout
方法指定的超时值,并且至少尝试取消当前数据库连接尝试
-
getConnection
public static Connection getConnection(String url) throws SQLException
尝试建立与给定数据库URL的连接。DriverManager
尝试从一组已注册的JDBC驱动程序中选择适当的驱动程序。- 参数
-
url
- 表单jdbc:subprotocol:subname
的数据库URL - 结果
- 与URL的连接
- 异常
-
SQLException
- 如果发生数据库访问错误或url是null
-
SQLTimeoutException
- 当驱动程序确定已经超过setLoginTimeout
方法指定的超时值并且至少尝试取消当前数据库连接尝试
-
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驱动程序 - 异常
-
SQLException
- 如果发生数据库访问错误 -
NullPointerException
- 如果driver
为空
-
registerDriver
public static void registerDriver(Driver driver, DriverAction da) throws SQLException
使用DriverManager
注册给定的驱动程序。 新加载的驱动程序类应该调用方法registerDriver
使其自己已知DriverManager
。 如果司机目前已注册,则不采取任何行动。- 参数
-
driver
- 要在DriverManager
注册的新JDBC驱动程序 -
da
- 当DriverManager#deregisterDriver
被调用时要使用的DriverAction
实现 - 异常
-
SQLException
- 如果发生数据库访问错误 -
NullPointerException
- 如果driver
为空 - 从以下版本开始:
- 1.8
-
deregisterDriver
public static void deregisterDriver(Driver driver) throws SQLException
从DriverManager
的注册驱动程序列表中删除指定的驱动程序。如果为要删除的驱动程序指定了
null
值,则不执行任何操作。如果一个安全管理器存在,它的
checkPermission
方法首先被调用一个SQLPermission("deregisterDriver")
权限来检查调用者是否被允许注销一个JDBC驱动程序。如果在注册驱动程序列表中找不到指定的驱动程序,则不执行任何操作。 如果司机被发现,将从注册的驱动程序列表中删除。
如果在JDBC驱动程序注册时指定了一个
DriverAction
实例,则在从注册驱动程序列表中删除驱动程序之前,将会调用其注销方法。- 参数
-
driver
- 要删除的JDBC驱动程序 - 异常
-
SQLException
- 如果发生数据库访问错误 -
SecurityException
- 如果安全管理器存在,并且其checkPermission
方法拒绝注销驱动程序的权限。 - 另请参见:
-
SecurityManager.checkPermission(java.security.Permission)
-
getDrivers
public static Enumeration<Driver> getDrivers()
使用当前调用者可以访问的所有当前加载的JDBC驱动程序检索枚举。注意:可以使用
d.getClass().getName()
找到驱动程序的类d.getClass().getName()
- 结果
- 由调用者的类加载器加载的JDBC驱动程序列表
- 另请参见:
-
drivers()
-
drivers
public static Stream<Driver> drivers()
使用当前调用者可以访问的所有当前加载的JDBC驱动程序检索流。- 结果
- 由调用者的类加载器加载的JDBC驱动程序流
- 从以下版本开始:
- 9
-
setLoginTimeout
public static void setLoginTimeout(int seconds)
设置驱动程序在识别驱动程序后尝试连接到数据库时等待的最长时间(秒)。- 参数
-
seconds
- 以秒为单位的登录时间限制; 零意味着没有限制 - 另请参见:
-
getLoginTimeout()
-
getLoginTimeout
public static int getLoginTimeout()
获取尝试登录数据库时驱动程序可以等待的最长时间(秒)。- 结果
- 司机登录时间限制以秒为单位
- 另请参见:
-
setLoginTimeout(int)
-
setLogStream
@Deprecated(since="1.2") public static void setLogStream(PrintStream out)
已过时。 使用setLogWriter
设置DriverManager
和所有驱动程序使用的日志记录/跟踪PrintStream。如果一个安全管理器存在,它的
checkPermission
方法首先被调用一个SQLPermission("setLog")
权限,以检查主叫方是否可以调用setLogStream
。- 参数
-
out
- 新的记录/跟踪PrintStream; 禁用,设置为null
- 异常
-
SecurityException
- 如果存在安全管理员,并且其checkPermission
方法拒绝设置日志流的权限。 - 另请参见:
-
SecurityManager.checkPermission(java.security.Permission)
,getLogStream()
-
getLogStream
@Deprecated(since="1.2") public static PrintStream getLogStream()
已过时。 使用getLogWriter
检索DriverManager
和所有驱动程序使用的日志记录/跟踪PrintStream。- 结果
-
记录/跟踪PrintStream;
如果禁用,是
null
- 另请参见:
-
setLogStream(java.io.PrintStream)
-
println
public static void println(String message)
打印到当前JDBC日志流的消息。- 参数
-
message
- a log or tracing message
-
-