- 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
-
-
-
方法摘要
所有方法 静态方法 具体的方法 弃用的方法 变量和类型 方法 描述 static void
deregisterDriver(Driver driver)
从DriverManager
的已注册驱动程序列表中删除指定的驱动程序。static Stream<Driver>
drivers()
使用当前调用者可以访问的所有当前加载的JDBC驱动程序检索Stream。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
对象。如果存在安全管理器,则首先使用
SQLPermission("setLog")
权限调用其checkPermission
方法,以检查是否允许调用者调用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
对象中指定,则实现定义哪个值优先。 为了获得最大的可移植性,应用程序应该只指定一次属性。- 参数
-
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
- 如果发生数据库访问错误或网址为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
-形式的数据库URLjdbc:subprotocol:subname
- 结果
-
表示可以连接到给定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
-该DriverAction
实施时要使用DriverManager#deregisterDriver
被称为 - 异常
-
SQLException
- 如果发生数据库访问错误 -
NullPointerException
- 如果driver
为空 - 从以下版本开始:
- 1.8
-
deregisterDriver
public static void deregisterDriver(Driver driver) throws SQLException
从DriverManager
的已注册驱动程序列表中删除指定的驱动程序。如果为要删除的驱动程序指定了
null
值,则不执行任何操作。如果存在安全管理器,则首先使用
SQLPermission("deregisterDriver")
权限调用其checkPermission
方法,以检查是否允许调用者取消注册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驱动程序检索Stream。- 结果
- 由调用者的类加载器加载的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)
Deprecated.UsesetLogWriter
设置DriverManager
和所有驱动程序使用的日志记录/跟踪PrintStream。如果存在安全管理器,则首先使用
SQLPermission("setLog")
权限调用其checkPermission
方法,以检查是否允许调用者调用setLogStream
。- 参数
-
out
- 新的日志记录/跟踪PrintStream; 禁用,设置为null
- 异常
-
SecurityException
- 如果存在安全管理器且其checkPermission
方法拒绝设置日志流的权限。 - 另请参见:
-
SecurityManager.checkPermission(java.security.Permission)
,getLogStream()
-
getLogStream
@Deprecated(since="1.2") public static PrintStream getLogStream()
Deprecated.UsegetLogWriter
检索DriverManager
和所有驱动程序使用的日志记录/跟踪PrintStream。- 结果
-
记录/跟踪PrintStream;
如果禁用,则为
null
- 另请参见:
-
setLogStream(java.io.PrintStream)
-
println
public static void println(String message)
将消息打印到当前JDBC日志流。- 参数
-
message
- 日志或跟踪消息
-
-