#java.sql.Connection
# 描述
java.sql.Connection是JDBC规范中代表Java程序与数据库之间物理连接的核心接口,用于建立JDBC客户端到数据库的连接,也是所有数据库操作的“基础入口”。无论是执行SQL语句、调用存储过程,还是管理事务,都必须先通过Connection建立与数据库的连接,通过DriverManager.getConnection(url, user, password) 方法获取。
详细接口说明请参考JDBC官方网站 (opens new window)。
# 方法
YashanDB JDBC驱动对connection接口有如下方法(单机部署/共享集群/分布式集群部署):
| 方法 | 返回类型 | 备注 |
|---|---|---|
| createStatement() | Statement | - |
| createClob() | Clob | - |
| createBlob() | Blob | - |
| createStatement(int resultSetType, int resultSetConcurrency) | Statement | - |
| createStatement(int resultSetType, int resultSetConcurrency, int resultSetHoldability) | Statement | - |
| prepareStatement(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) | PreparedStatement | - |
| prepareStatement(String sql) | PreparedStatement | - |
| prepareStatement(String sql, int resultSetType,int resultSetConcurrency) | PreparedStatement | - |
| prepareStatement(String sql, int autoGeneratedKeys) | PreparedStatement | - |
| PreparedStatement prepareStatement(String sql, int columnIndexes[]) | PreparedStatement | - |
| PreparedStatement prepareStatement(String sql, String columnNames[]) | PreparedStatement | - |
| prepareCall(String sql) | CallableStatement | - |
| setAutoCommit(boolean autoCommit) | void | - |
| getAutoCommit() | boolean | - |
| commit() | void | - |
| rollback() | void | - |
| close() | void | - |
| isClosed() | boolean | - |
| getMetaData() | DatabaseMetaData | - |
| isReadOnly() | boolean | - |
| setTransactionIsolation(int level) | void | 支持以下三个值: Connection.TRANSACTION_READ_COMMITTED = 2 Connection.TRANSACTION_SERIALIZABLE = 8 YasConnection.TRANSACTION_READ_CURRENT_COMMITTED = 3 |
| getTransactionIsolation() | int | - |
| getTypeMap() | java.util.Map<String,Class<?>> | - |
| setTypeMap(java.util.Map<String,Class<?>> map) | void | - |
| getHoldability() | int | - |
| setSavepoint() | Savepoint | - |
| setSavepoint(String name) | Savepoint | - |
| Struct | createStruct(String typeName, Object[] attributes) | - |
| rollback(Savepoint savepoint) | void | - |
| isValid(int timeout) | boolean | - |
| setSchema(String schema) | void | - |
| getSchema() | String | - |
| abort(Executor executor) | void | - |
| setNetworkTimeout(Executor executor, int milliseconds) | void | - |
| getNetworkTimeout() | int | - |
| prepareCall(String sql, int resultSetType, int resultSetConcurrency) | CallableStatement | - |
| prepareCall(String sql, int resultSetType, int resultSetConcurrency,int resultSetHoldability) | CallableStatement | - |
| createSQLXML() | SQLXML | - |
| releaseSavepoint(Savepoint savepoint) | void | - |
YashanDB JDBC驱动对connection接口有如下方法(存算一体分布式集群部署):
| 方法 | 返回类型 | 备注 |
|---|---|---|
| createStatement() | Statement | - |
| createStatement(int resultSetType, int resultSetConcurrency) | Statement | - |
| createStatement(int resultSetType, int resultSetConcurrency, int resultSetHoldability) | Statement | - |
| prepareStatement(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) | PreparedStatement | - |
| prepareCall(String sql) | CallableStatement | - |
| prepareCall(String sql, int resultSetType, int resultSetConcurrency) | CallableStatement | - |
| prepareCall(String sql, int resultSetType, int resultSetConcurrency,int resultSetHoldability) | CallableStatement | - |
| prepareStatement(String sql, int resultSetType,int resultSetConcurrency) | PreparedStatement | - |
| prepareStatement(String sql) | PreparedStatement | - |
| setAutoCommit(boolean autoCommit) | void | - |
| getAutoCommit() | boolean | - |
| commit() | void | - |
| rollback() | void | - |
| close() | void | - |
| isClosed() | boolean | - |
| getMetaData() | DatabaseMetaData | - |
| isReadOnly() | boolean | - |
| getTypeMap() | java.util.Map<String,Class<?>> | - |
| setTypeMap(java.util.Map<String,Class<?>> map) | void | - |
| getHoldability() | int | - |
| isValid(int timeout) | boolean | - |
| setSchema(String schema) | void | - |
| getSchema() | String | - |
| abort(Executor executor) | void | - |
| setNetworkTimeout(Executor executor, int milliseconds) | void | - |
| getNetworkTimeout() | int | - |
| createClob() | Clob | - |
| createBlob() | Blob | - |
| setSavepoint() | Savepoint | - |
| setSavepoint(String name) | Savepoint | - |
| Struct | createStruct(String typeName, Object[] attributes) | - |
| rollback(Savepoint savepoint) | void | - |
| createSQLXML() | SQLXML | - |
| setHoldability(int holdability) | void | - |
| setTransactionIsolation(int level) | void | 只支持一个取值:Connection.TRANSACTION_READ_COMMITTED = 2 |
| getTransactionIsolation() | int | - |
| releaseSavepoint(Savepoint savepoint) | void | - |
YashanDB JDBC驱动YasConnection扩展接口功能:
| 方法 | 返回类型 | 备注 |
|---|---|---|
| setClientPrepare(boolean clientPrepare) | void | 表示对于绑定参数执行场景,是否开启直接执行;默认不开启,JDBC客户端会先向服务端发送prepare命令然后发送绑定参数执行;若开启,则会将prepareStatement的SQL语句和要绑定的参数一次性发给服务端,减少交互次数。 示例: Connection conn = getConnection("sales", "sales"); ((YasConnection)conn).setClientPrepare(true); |
| getClientPrepare(); | boolean | 是否开启直接执行。 |
| registerTAFCallback(YasFailover yasFailover, Object ctxt) | void | 注册TAF回调函数的实现类,如果注册了回调函数,failoverRetries和failoverDelay参数不生效,TAF链接失败时不会尝试进行重连。详细见TAF相关接口 |
| createArray(String typeName, Object[] elements) | Array | 根据Array的Name创建Array对象,用来替代createArrayOf接口 |
| getDefaultFetchSize() | int | - |
| setDefaultFetchSize(int fetchSize) | void | - |
| getSessionTimeZoneOffset() | string | 获取当前连接的时区偏移量。 |
| setSessionTimeZoneOffset(String timeZone) | void | 设置当前连接的时区偏移量。 |
# 示例
package quickstart;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.Savepoint;
import java.sql.SQLException;
import java.util.Properties;
public class ConnectionManager {
public static Connection getConnection() throws SQLException {
String url = "jdbc:yasdb://192.168.1.2:1688/yasdb";
Properties info = new Properties();
info.setProperty("user", "sales");
info.setProperty("password", "sales");
Class.forName("com.yashandb.jdbc.Driver");
return DriverManager.getConnection(url, info);
}
public void completeConnectionDemo() throws SQLException {
try (Connection conn = getConnection()) {
// 1. 设置连接属性
conn.setAutoCommit(false);
conn.setReadOnly(false);
conn.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
// 2. 获取元数据
DatabaseMetaData metaData = conn.getMetaData();
System.out.println("Connected to: " + metaData.getDatabaseProductName());
// 3. 执行事务
executeTransaction(conn);
// 4. 检查连接状态
if (conn.isValid(10)) {
System.out.println("Connection is valid");
}
}
}
private void executeTransaction(Connection conn) throws SQLException {
Savepoint savepoint = null;
try {
// 创建保存点
savepoint = conn.setSavepoint("BEFORE_OPERATIONS");
// 执行多个操作
executeOperations(conn);
// 提交事务
conn.commit();
System.out.println("Transaction committed successfully");
} catch (SQLException e) {
if (savepoint != null) {
// 回滚到保存点
conn.rollback(savepoint);
System.out.println("Rolled back to savepoint");
} else {
// 完全回滚
conn.rollback();
System.out.println("Transaction rolled back");
}
throw e;
}
}
private void executeOperations(Connection conn) throws SQLException {
// 执行特定操作
}
}

