- 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 voidderegisterDriver(Driver driver)从DriverManager的注册驱动程序列表中删除指定的驱动程序。static Stream<Driver>drivers()使用当前调用者可以访问的所有当前加载的JDBC驱动程序检索流。static ConnectiongetConnection(String url)尝试建立与给定数据库URL的连接。static ConnectiongetConnection(String url, String user, String password)尝试建立与给定数据库URL的连接。static ConnectiongetConnection(String url, Properties info)尝试建立与给定数据库URL的连接。static DrivergetDriver(String url)尝试查找了解给定URL的驱动程序。static Enumeration<Driver>getDrivers()使用当前调用者可以访问的所有当前加载的JDBC驱动程序检索枚举。static intgetLoginTimeout()获取尝试登录数据库时驱动程序可以等待的最长时间(秒)。static PrintStreamgetLogStream()已过时。使用getLogWriterstatic PrintWritergetLogWriter()检索日志记录器。static voidprintln(String message)打印到当前JDBC日志流的消息。static voidregisterDriver(Driver driver)使用DriverManager注册给定的驱动程序。static voidregisterDriver(Driver driver, DriverAction da)使用DriverManager注册给定的驱动程序。static voidsetLoginTimeout(int seconds)设置驱动程序在识别驱动程序后尝试连接到数据库时等待的最长时间(秒)。static voidsetLogStream(PrintStream out)已过时。使用setLogWriterstatic voidsetLogWriter(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
-
-