#使用JDBC连接数据库

YashanDB JDBC驱动支持通过DriverManager或DataSource建立数据库连接。两种方式的适用场景如下表所示。

连接方式 适用场景 说明
DriverManager 快速验证、示例程序和简单应用 通过JDBC URL、用户名和密码直接建立连接。
DataSource 需要统一管理连接配置的应用 可以由应用服务器或连接池框架配置和管理。

Note:

DataSource是连接工厂接口,本身不表示连接池。需要复用物理连接时,应使用应用服务器或连接池框架提供的连接池能力。

# 连接参数

建立连接前,应完成YashanDB JDBC驱动安装,并获取数据库地址、监听端口、数据库名称、用户名和密码。驱动安装方法请参考安装JDBC驱动。

基本JDBC URL格式如下:

jdbc:yasdb://host:port/database_name

URL各部分的说明如下表所示。

参数 说明
host 数据库所在服务器的IP地址或域名。
port 数据库服务监听端口,默认端口为1688。
database_name 数据库名称。该参数必填;连接容器数据库时,应填写目标容器名称。

例如,连接192.168.1.2服务器上监听端口为1688的yasdb数据库时,URL如下:

jdbc:yasdb://192.168.1.2:1688/yasdb

高可用、安全连接和连接属性的配置方法,请参考连接管理。

# 使用DriverManager连接

DriverManager.getConnection根据JDBC URL选择YashanDB JDBC驱动并建立连接。YashanDB JDBC驱动支持JDBC服务提供者机制(SPI,Service Provider Interface);驱动JAR文件位于应用程序的classpath中时,通常无需显式调用Class.forName加载驱动类。

下面示例使用DriverManager连接YashanDB,并执行一条查询验证连接。运行示例前,请根据实际环境修改URL、用户名和密码。

package quickstart;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

public class DriverManagerExample {
    private static final String URL =
            "jdbc:yasdb://192.168.1.2:1688/yasdb";
    private static final String USER = "username";
    private static final String PASSWORD = "passwd";

    public static void main(String[] args) throws SQLException {
        Properties properties = new Properties();
        properties.setProperty("user", USER);
        properties.setProperty("password", PASSWORD);

        try (Connection connection =
                     DriverManager.getConnection(URL, properties);
             Statement statement = connection.createStatement();
             ResultSet resultSet =
                     statement.executeQuery("SELECT 1 FROM dual")) {
            if (resultSet.next()) {
                System.out.println(
                        "Connection succeeded, query result: "
                                + resultSet.getInt(1));
            }
        }
    }
}

连接成功时,示例输出如下:

Connection succeeded, query result: 1

如果当前运行环境不能通过SPI发现驱动,可以在调用DriverManager.getConnection前显式加载驱动类:

Class.forName("com.yashandb.jdbc.Driver");

# 使用DataSource连接

YashanDB JDBC驱动提供YasDataSource类,该类实现javax.sql.DataSource接口。应用程序可以分别设置服务器地址、监听端口、数据库名称和认证信息,再通过getConnection()获取连接。

下面示例使用YasDataSource连接YashanDB,并执行一条查询验证连接。

package quickstart;

import com.yashandb.jdbc.YasDataSource;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class DataSourceExample {
    public static void main(String[] args) throws SQLException {
        YasDataSource dataSource = new YasDataSource();
        dataSource.setServerName("192.168.1.2");
        dataSource.setPortNumber(1688);
        dataSource.setDatabaseName("yasdb");
        dataSource.setUser("username");
        dataSource.setPassword("passwd");

        try (Connection connection = dataSource.getConnection();
             Statement statement = connection.createStatement();
             ResultSet resultSet =
                     statement.executeQuery("SELECT 1 FROM dual")) {
            if (resultSet.next()) {
                System.out.println(
                        "Connection succeeded, query result: "
                                + resultSet.getInt(1));
            }
        }
    }
}

示例执行成功时,输出如下:

Connection succeeded, query result: 1

建立连接后,可以继续参考使用Statement对象执行SQL语句。

# 关闭连接

Connection使用完毕后应及时关闭。推荐使用try-with-resources自动关闭ResultSet、Statement和Connection。资源按照声明顺序的相反顺序关闭,因此结果集和语句会先于连接关闭。

从连接池获取连接时,也应调用Connection.close()。此时通常由连接池实现将连接归还到池中,具体行为以所使用的连接池实现为准。

具体关闭方法请参考断开数据库连接。

edit-icon
反馈
coperate-icon
coperate
合作
communication-icon
communicate
交流