#使用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()。此时通常由连接池实现将连接归还到池中,具体行为以所使用的连接池实现为准。
具体关闭方法请参考断开数据库连接。

