java.lang.Objectjava.sql.DriverManager
public class DriverManager
管理一组 JDBC 驱动程序的基本服务。
注:DataSource 接口是 JDBC 2.0 API 中的新增内容,它提供了连接到数据源的另一种方法。使用 DataSource 对象是连接到数据源的首选方法。
作为初始化的一部分,DriverManager 类会尝试加载在 "jdbc.drivers" 系统属性中引用的驱动程序类。这允许用户定制由他们的应用程序使用的 JDBC Driver。例如,在 ~/.hotjava/properties 文件中,用户可以指定:
jdbc.drivers=foo.bah.Driver:wombat.sql.Driver:bad.taste.ourDriver
DriverManager 类的方法 getConnection 和 getDrivers 已经得到提高以支持 Java Standard Edition Service Provider 机制。 JDBC 4.0 Drivers 必须包括 META-INF/services/java.sql.Driver 文件。此文件包含 java.sql.Driver 的 JDBC 驱动程序实现的名称。例如,要加载 my.sql.Driver 类,META-INF/services/java.sql.Driver 文件需要包含下面的条目:
my.sql.Driver
应用程序不再需要使用 Class.forName() 显式地加载 JDBC 驱动程序。当前使用 Class.forName() 加载 JDBC 驱动程序的现有程序将在不作修改的情况下继续工作。
在调用 getConnection 方法时,DriverManager 会试着从初始化时加载的那些驱动程序以及使用与当前 applet 或应用程序相同的类加载器显式加载的那些驱动程序中查找合适的驱动程序。
从 Java 2 SDK 标准版本 1.3 版开始,只有当已授予适当权限时设置日志流。通常这将使用工具 PolicyTool 完成,该工具可用于授予 permission java.sql.SQLPermission "setLog" 权限。
Driver,
Connection
| 方法摘要 | |
|---|---|
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 驱动程序的 Enumeration。 |
static int |
getLoginTimeout() 获取驱动程序试图登录到某一数据库时可以等待的最长时间,以秒为单位。 |
static PrintStream |
getLogStream() 已过时。 |
static PrintWriter |
getLogWriter() 获取日志 writer。 |
static void |
println(String message) 将一条消息打印到当前 JDBC 日志流中。 |
static void |
registerDriver(Driver driver) 向 DriverManager 注册给定驱动程序。 |
static void |
setLoginTimeout(int seconds) 设置驱动程序试图连接到某一数据库时将等待的最长时间,以秒为单位。 |
static void |
setLogStream(PrintStream out) 已过时。 |
static void |
setLogWriter(PrintWriter out) 设置由 DriverManager 和所有驱动程序使用的日志/追踪 PrintWriter 对象。 |
| 从类 java.lang.Object 继承的方法 |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| 方法详细信息 |
|---|
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 方法无法创建将由 getLogStream 返回的 PrintStream 对象,Java 版本不提供后向转换。结果,使用 setLogWriter 的新应用程序以及仍然使用利用 getLogStream 的 JDBC 1.0 驱动程序的新程序很可能将无法查看由该驱动程序写入的调试信息。
从 Java 2 SDK 标准版 1.3 版开始,此方法将查看设置日志流之前是否有 SQLPermission 对象。如果存在 SecurityManager 并且其 checkPermission 方法拒绝设置日志 writer,则此方法将抛出 java.lang.SecurityException。
out - 新的日志/追踪
PrintStream 对象;
null 表示禁止日志和追踪
SecurityException - 如果安全管理器存在并且其
checkPermission 方法拒绝设置日志 writer
SecurityManager.checkPermission(java.security.Permission),
getLogWriter()
public static Connection getConnection(String url, Properties info) throws SQLException
DriverManager 试图从已注册的 JDBC 驱动程序集中选择一个适当的驱动程序。
url -
jdbc:subprotocol:subname 形式的数据库 url
info - 作为连接参数的任意字符串标记/值对的列表;通常至少应该包括 "user" 和 "password" 属性
SQLException - 如果发生数据库访问错误
public static Connection getConnection(String url, String user, String password) throws SQLException
DriverManager 试图从已注册的 JDBC 驱动程序集中选择一个适当的驱动程序。
url -
jdbc:subprotocol:subname 形式的数据库 url
user - 数据库用户,连接是为该用户建立的
password - 用户的密码
SQLException - 如果发生数据库访问错误
public static Connection getConnection(String url) throws SQLException
DriverManager 试图从已注册的 JDBC 驱动程序集中选择一个适当的驱动程序。
url -
jdbc:subprotocol:subname 形式的数据库 url
SQLException - 如果发生数据库访问错误
public static Driver getDriver(String url) throws SQLException
DriverManager 试图从已注册的 JDBC 驱动程序集中选择一个适当的驱动程序。
url -
jdbc:subprotocol:subname 形式的数据库 URL
Driver 对象
SQLException - 如果发生数据库访问错误
public static void registerDriver(Driver driver) throws SQLException
DriverManager 注册给定驱动程序。新加载的驱动程序类应该调用
registerDriver 方法让
DriverManager 知道自己。
driver - 将向
DriverManager 注册的新的 JDBC Driver
SQLException - 如果发生数据库访问错误
public static void deregisterDriver(Driver driver) throws SQLException
DriverManager 的列表中删除一个驱动程序。applet 只能注销取自其自身的类加载器的驱动程序。
driver - 要删除的 JDBC Driver
SQLException - 如果发生数据库访问错误
public static Enumeration<Driver> getDrivers()
注:驱动程序的类名称可以使用 d.getClass().getName() 得到
public static void setLoginTimeout(int seconds)
seconds - 登录时间限制,以秒为单位;0 表示没有限制
getLoginTimeout()
public static int getLoginTimeout()
setLoginTimeout(int)
public static void setLogStream(PrintStream out)
DriverManager 和所有驱动程序使用的日志/追踪 PrintStream。
在 Java 2 SDK 标准版 1.3 版中,此方法将查看设置日志流之前是否有 SQLPermission 对象。如果存在 SecurityManager 并且其 checkPermission 方法拒绝设置日志 writer,则此方法将抛出 java.lang.SecurityException。
out - 新的日志/追踪 PrintStream;要禁止日志和追踪,可将该参数设置为
null
SecurityException - 如果安全管理器存在并且其
checkPermission 方法拒绝设置日志流
SecurityManager.checkPermission(java.security.Permission),
getLogStream()
public static PrintStream getLogStream()
DriverManager 和所有驱动程序使用的日志/追踪 PrintStream。
null
setLogStream(java.io.PrintStream)
public static void println(String message)
message - 一条日志或追踪消息