public class DriverManager extends Object
用于管理一组JDBC驱动程序的基本服务。
注意: JDBC 2.0 API中新增的DataSource
接口提供了另一种连接到数据源的方法。 使用DataSource
对象是连接到数据源的首选方法。
作为其初始化的一部分, DriverManager
类将尝试加载在“jdbc.drivers”系统属性中引用的驱动程序类。 这允许用户自定义应用程序使用的JDBC驱动程序。 例如在〜/ .hotjava / properties文件中,您可以指定:
jdbc.drivers=foo.bah.Driver:wombat.sql.Driver:bad.taste.ourDriver
DriverManager
方法getConnection
和getDrivers
已得到增强,以支持Java Standard Edition Service Provider机制。 JDBC 4.0驱动程序必须包含文件META-INF/services/java.sql.Driver
。 该文件包含java.sql.Driver的JDBC驱动程序实现的java.sql.Driver
。 例如,要加载my.sql.Driver
类, META-INF/services/java.sql.Driver
文件将包含条目:
my.sql.Driver
应用程序不再需要使用Class.forName()
显式加载JDBC驱动程序。 目前使用加载JDBC驱动程序的现有程序Class.forName()
将继续无需修改工作。
当调用方法getConnection
时, DriverManager
将尝试从初始化中加载的驱动程序中找到合适的驱动程序,并使用与当前小程序或应用程序相同的类加载器显式加载驱动程序。
从Java 2 SDK,Standard Edition,1.3版开始,只有在授予了适当的权限后才能设置记录流。 通常这将通过ToolTool工具来完成,该工具可用于授予permission java.sql.SQLPermission "setLog"
。
Driver
, Connection
Modifier and Type | Method and Description |
---|---|
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驱动程序检索枚举。
|
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 对象。
|
public static PrintWriter getLogWriter()
getLogWriter
和setLogWriter
方法,而不是不推荐使用get/setlogStream
方法。
java.io.PrintWriter
对象
setLogWriter(java.io.PrintWriter)
public static void setLogWriter(PrintWriter out)
DriverManager
和所有驱动程序使用的日志/跟踪PrintWriter
对象。
通过引入方法setLogWriter
创建的次要版本问题。 该方法setLogWriter
不能创建一个PrintStream
将由被返回的对象getLogStream
--- Java平台不提供向后转换。 其结果是,使用新的应用程序setLogWriter
并且还使用了使用JDBC 1.0驱动程序getLogStream
可能不会看到调试通过该驱动程序的书面资料。
从Java 2 SDK,Standard Edition,1.3版本开始,此方法检查在设置日志记录流之前是否有一个SQLPermission
对象。 如果存在SecurityManager
,并且其checkPermission
方法拒绝设置日志记录器,则此方法将抛出java.lang.SecurityException
。
out
- 新的记录/跟踪PrintStream
对象;
null
禁用日志记录和跟踪
SecurityException
- 如果存在安全管理员,并且其
checkPermission
方法拒绝设置日志记录器
SecurityManager.checkPermission(java.security.Permission)
,
getLogWriter()
public static Connection getConnection(String url, Properties info) throws SQLException
DriverManager
尝试从一组已注册的JDBC驱动程序中选择适当的驱动程序。
注意:如果一个属性被指定为的一部分url
和在还指定Properties
对象,它是实现定义哪个值将优先。 为了最大可移植性,应用程序应仅指定一次属性。
url
- 形式为
jdbc:subprotocol:subname
的数据库网址
info
- 作为连接参数的任意字符串标签/值对的列表;
通常至少应包含“用户”和“密码”属性
SQLException
- 如果发生数据库访问错误或url是
null
SQLTimeoutException
- 当驱动程序确定已超过
setLoginTimeout
方法指定的超时值,并且至少尝试取消当前数据库连接尝试
public static Connection getConnection(String url, String user, String password) throws SQLException
DriverManager
尝试从一组已注册的JDBC驱动程序中选择适当的驱动程序。
注意:如果user
或password
财产也被指定为部分url
,它是实现定义哪个值将优先考虑。 为了最大可移植性,应用程序应仅指定一次属性。
url
- 形式为
jdbc:subprotocol:subname
的数据库网址
user
- 正在连接的数据库用户
password
- 用户密码
SQLException
- 如果发生数据库访问错误或url是
null
SQLTimeoutException
- 当驱动程序确定已经超过了
setLoginTimeout
方法指定的超时值,并且至少尝试取消当前的数据库连接尝试
public static Connection getConnection(String url) throws SQLException
DriverManager
尝试从一组已注册的JDBC驱动程序中选择适当的驱动程序。
url
- 形式为
jdbc:subprotocol:subname
的数据库网址
SQLException
- 如果发生数据库访问错误或url是
null
SQLTimeoutException
- 当驱动程序确定已经超过了
setLoginTimeout
方法指定的超时值,并且至少尝试取消当前的数据库连接尝试
public static Driver getDriver(String url) throws SQLException
DriverManager
尝试从一组已注册的JDBC驱动程序中选择适当的驱动程序。
url
- 一种数据库URL,格式为
jdbc:subprotocol:subname
Driver
对象
SQLException
- 如果发生数据库访问错误
public static void registerDriver(Driver driver) throws SQLException
DriverManager
。
新加载的驱动程序类应该调用方法registerDriver
使其自己已知的DriverManager
。
如果司机目前已注册,则不采取任何行动。
driver
-新的JDBC驱动程序是与注册
DriverManager
SQLException
- 如果发生数据库访问错误
NullPointerException
- 如果
driver
为空
public static void registerDriver(Driver driver, DriverAction da) throws SQLException
DriverManager
。
一个新加载的驱动程序类应该调用方法registerDriver
使其自己已知的DriverManager
。
如果司机目前已注册,则不采取任何行动。
driver
-新的JDBC驱动程序是与注册
DriverManager
da
- 当
DriverAction
DriverManager#deregisterDriver时要使用的
DriverManager#deregisterDriver
实现
SQLException
- 如果发生数据库访问错误
NullPointerException
- 如果
driver
为空
public static void deregisterDriver(Driver driver) throws SQLException
DriverManager
的注册驱动程序列表中删除指定的驱动程序。
如果为要删除的驱动程序指定了null
值,则不执行任何操作。
如果一个安全管理员存在并且其checkPermission
拒绝许可,那么将抛出一个SecurityException
。
如果在注册驱动程序列表中找不到指定的驱动程序,则不执行任何操作。 如果司机被发现,将从注册的驱动程序列表中删除。
如果在JDBC驱动程序注册时指定了DriverAction
实例,则在从注册驱动程序列表中删除驱动程序之前,将会调用其注销方法。
driver
- 要删除的JDBC驱动程序
SQLException
- 如果发生数据库访问错误
SecurityException
- 如果安全管理器存在,并且其
checkPermission
方法拒绝注销驱动程序的权限。
SecurityManager.checkPermission(java.security.Permission)
public static Enumeration<Driver> getDrivers()
注意:可以使用d.getClass().getName()
找到驱动程序的类d.getClass().getName()
public static void setLoginTimeout(int seconds)
seconds
- 以秒为单位的登录时间限制;
零意味着没有限制
getLoginTimeout()
public static int getLoginTimeout()
setLoginTimeout(int)
@Deprecated public static void setLogStream(PrintStream out)
setLogWriter
DriverManager
和所有驱动程序使用的日志/跟踪PrintStream。
在Java 2 SDK,Standard Edition,1.3版本中,此方法检查在设置日志记录流之前是否有一个SQLPermission
对象。 如果存在SecurityManager
及其checkPermission
方法拒绝设置日志记录器,则此方法将抛出java.lang.SecurityException
。
out
- 新的日志/跟踪PrintStream;
禁用,设置为null
SecurityException
- 如果安全管理器存在,并且其
checkPermission
方法拒绝设置日志流
SecurityManager.checkPermission(java.security.Permission)
,
getLogStream()
@Deprecated public static PrintStream getLogStream()
getLogWriter
DriverManager
和所有驱动程序使用的记录/跟踪PrintStream。
null
setLogStream(java.io.PrintStream)
public static void println(String message)
message
- 日志或跟踪消息