模块  java.sql
软件包  javax.sql

Interface DataSource

  • All Superinterfaces:
    CommonDataSourceWrapper

    public interface DataSource
    extends CommonDataSource, Wrapper

    用于连接此DataSource对象表示的物理数据源的工厂。 作为DriverManager工具的替代方案, DataSource对象是获取连接的首选方法。 实现DataSource接口的对象通常将使用基于Java DataSource命名和目录(JNDI)API的命名服务进行注册。

    DataSource接口由驱动程序供应商实现。 有三种类型的实现:

    1. 基本实现 - 生成标准的Connection对象
    2. 连接池实现 - 生成一个Connection对象,该对象将自动参与连接池。 此实现适用于中间层连接池管理器。
    3. 分布式事务实现 - 生成一个Connection对象,该对象可用于分布式事务,并且几乎总是参与连接池。 此实现与中间层事务管理器一起使用,并且几乎总是与连接池管理器一起使用。

    DataSource对象具有可在必要时进行修改的属性。 例如,如果将数据源移动到其他服务器,则可以更改服务器的属性。 好处是因为可以更改数据源的属性,所以不需要更改访问该数据源的任何代码。

    通过DataSource对象访问的驱动程序不会向DriverManager注册自己。 而是通过查找操作检索DataSource对象,然后用于创建Connection对象。 通过基本实现,通过DataSource对象获得的连接与通过DriverManager工具获得的连接相同。

    DataSource的实现必须包含public no-arg构造函数。

    从以下版本开始:
    1.4
    • 方法详细信息

      • getConnection

        Connection getConnection()
                          throws SQLException

        尝试与此DataSource对象表示的数据源建立连接。

        结果
        与数据源的连接
        异常
        SQLException - 如果发生数据库访问错误
        SQLTimeoutException - 当驱动程序确定已超出 setLoginTimeout方法指定的超时值并且至少尝试取消当前数据库连接尝试时
      • getConnection

        Connection getConnection​(String username,
                                 String password)
                          throws SQLException

        尝试与此DataSource对象表示的数据源建立连接。

        参数
        username - 代表其建立连接的数据库用户
        password - 用户的密码
        结果
        与数据源的连接
        异常
        SQLException - 如果发生数据库访问错误
        SQLTimeoutException - 当驱动程序确定已超出 setLoginTimeout方法指定的超时值并且至少尝试取消当前数据库连接尝试时
        从以下版本开始:
        1.4
      • getLogWriter

        PrintWriter getLogWriter()
                          throws SQLException

        检索此DataSource对象的日志DataSource

        日志写入程序是一个字符输出流,将打印此数据源的所有日志记录和跟踪消息。 这包括由此对象的方法打印的消息,由此对象生成的其他对象的方法打印的消息,等等。 打印到特定于数据源的日志写入程序的消息不会打印到与java.sql.DriverManager类关联的日志java.sql.DriverManager 创建DataSource对象时,日志DataSource器最初为null; 换句话说,默认情况下禁用日志记录。

        Specified by:
        getLogWriter in interface CommonDataSource
        结果
        此数据源的日志编写器,如果禁用日志记录,则为null
        异常
        SQLException - 如果发生数据库访问错误
        从以下版本开始:
        1.4
        另请参见:
        CommonDataSource.setLogWriter(java.io.PrintWriter)
      • setLogWriter

        void setLogWriter​(PrintWriter out)
                   throws SQLException

        将此DataSource对象的日志DataSource设置为给定的java.io.PrintWriter对象。

        日志写入程序是一个字符输出流,将打印此数据源的所有日志记录和跟踪消息。 这包括由此对象的方法打印的消息,由此对象生成的其他对象的方法打印的消息,等等。 打印到特定于数据源的日志写入程序的消息不会打印到与java.sql.DriverManager类关联的日志java.sql.DriverManager 创建DataSource对象时,日志DataSource器最初为null; 换句话说,默认情况下禁用日志记录。

        Specified by:
        setLogWriter in interface CommonDataSource
        参数
        out - 新的日志out ; 要禁用日志记录,请设置为null
        异常
        SQLException - 如果发生数据库访问错误
        从以下版本开始:
        1.4
        另请参见:
        CommonDataSource.getLogWriter()
      • setLoginTimeout

        void setLoginTimeout​(int seconds)
                      throws SQLException

        设置此数据源在尝试连接到数据库时将等待的最长时间(以秒为单位)。 值为零指定超时是默认系统超时(如果有); 否则,它指定没有超时。 创建DataSource对象时,登录超时最初为零。

        Specified by:
        setLoginTimeout in interface CommonDataSource
        参数
        seconds - 数据源登录时间限制
        异常
        SQLException - 如果发生数据库访问错误。
        从以下版本开始:
        1.4
        另请参见:
        CommonDataSource.getLoginTimeout()
      • getLoginTimeout

        int getLoginTimeout()
                     throws SQLException
        获取此数据源在尝试连接到数据库时可以等待的最长时间(以秒为单位)。 值为零表示超时是默认系统超时(如果有); 否则,表示没有超时。 创建DataSource对象时,登录超时最初为零。
        Specified by:
        getLoginTimeout in interface CommonDataSource
        结果
        数据源登录时间限制
        异常
        SQLException - 如果发生数据库访问错误。
        从以下版本开始:
        1.4
        另请参见:
        CommonDataSource.setLoginTimeout(int)