模块  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对象。

        如果存在安全管理器,则首先使用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驱动程序集中选择适当的驱动程序。

        注意:如果userpassword属性也被指定为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 -形式的数据库URL jdbc: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.
        Use setLogWriter
        设置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.
        Use getLogWriter
        检索 DriverManager和所有驱动程序使用的日志记录/跟踪PrintStream。
        结果
        记录/跟踪PrintStream; 如果禁用,则为null
        另请参见:
        setLogStream(java.io.PrintStream)
      • println

        public static void println​(String message)
        将消息打印到当前JDBC日志流。
        参数
        message - 日志或跟踪消息