#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 {
        // 执行特定操作
    }
}
pdf-btn 下载文档 copy-btn 复制链接
edit-icon
反馈
coperate-icon
coperate
合作
communication-icon
communicate
交流