Module  java.sql
软件包  java.sql

Class 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触发驱动程序初始化的线程的线程上下文类加载器。

    当调用方法getConnectionDriverManager将尝试从初始化中加载的驱动程序中找到合适的驱动程序,并使用与当前应用程序相同的类加载器明确加载驱动程序。

    从以下版本开始:
    1.1
    另请参见:
    DriverConnection
    • 方法详细信息

      • getLogWriter

        public static PrintWriter getLogWriter​()
        检索日志记录器。 应使用getLogWritersetLogWriter方法,而不是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驱动程序中选择适当的驱动程序。

        注意:如果userpassword属性也被指定为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