- 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 voidderegisterDriver(Driver driver)从DriverManager的已注册驱动程序列表中删除指定的驱动程序。static Stream<Driver>drivers()使用当前调用者可以访问的所有当前加载的JDBC驱动程序检索Stream。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对象。如果存在安全管理器,则首先使用
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- 日志或跟踪消息
-
-