VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

JDBC

JDBC接口是一套提供给用户的API方法,本节将对部分常用接口做具体描述,若涉及其他接口可参考JDK1.8(软件包)/JDBC4.0中相关内容。

java.sql.Connection

java.sql.Connection是数据库连接接口。

表7-1 对java.sql.Connection接口的支持情况

方法名 返回值类型 支持JDBC 4
close() void Yes
commit() void Yes
createStatement() Statement Yes
getAutoCommit() Boolean Yes
getClientInfo() Properties Yes
getClientInfo(String name) String Yes
getTransactionIsolation() int Yes
isClosed() Boolean Yes
isReadOnly() Boolean Yes
prepareStatement(String sql) PreparedStatement Yes
rollback() void Yes
setAutoCommit(boolean autoCommit) void Yes
setClientInfo(Properties properties) void Yes
setClientInfo(String name,String value) void Yes

接口内部默认使用自动提交模式,若通过setAutoCommit(false)关闭自动提交,将会导致后面执行的语句都受到显式事务包裹,数据库中不支持事务中执行的语句不能在此模式下执行。

java.sql.CallableStatement

java.sql.CallableStatement是存储过程执行接口。

表7-2 对java.sql.CallableStatement的支持情况

方法名 返回值类型 支持JDBC 4
registerOutParameter(int parameterIndex, int type) void Yes
wasNull() Boolean Yes
getString(int parameterIndex) String Yes
getBoolean(int parameterIndex) Boolean Yes
getByte(int parameterIndex) byte Yes
getShort(int parameterIndex) short Yes
getInt(int parameterIndex) int Yes
getLong(int parameterIndex) long Yes
getFloat(int parameterIndex) float Yes
getDouble(int parameterIndex) double Yes
getBigDecimal(int parameterIndex) BigDecimal Yes
getBytes(int parameterIndex) byte[] Yes
getDate(int parameterIndex) Date Yes
getTime(int parameterIndex) Time Yes
getTimestamp(int parameterIndex) Timestamp Yes
getObject(int parameterIndex) Object Yes

说明
  • 不允许含有OUT参数的语句执行批量操作。

  • 以下方法是从java.sql.Statement继承而来:close,execute,executeQuery,executeUpdate,getConnection,getResultSet,getUpdateCount,isClosed,setMaxRows, setFetchSize。

  • 以下方法是从java.sql.PreparedStatement继承而来:addBatch,clearParameters,execute,executeQuery,executeUpdate,getMetaData,setBigDecimal,setBoolean,setByte,setBytes,setDate,setDouble,setFloat,setInt,setLong,setNull,setObject,setString,setTime,setTimestamp。

java.sql.DatabaseMetaData

java.sql.DatabaseMetaData是数据库对象定义接口。

表7-3 对java.sql.DatabaseMetaData的支持情况

方法名 返回值类型 支持JDBC 4
getTables(String catalog, String schemaPattern, String tableNamePattern, String[] types) ResultSet Yes
getColumns(String catalog, String schemaPattern, String tableNamePattern, String columnNamePattern) ResultSet Yes
getTableTypes() ResultSet Yes
getUserName() String Yes
isReadOnly() boolean Yes
nullsAreSortedHigh() boolean Yes
nullsAreSortedLow() boolean Yes
nullsAreSortedAtStart() boolean Yes
nullsAreSortedAtEnd() boolean Yes
getDatabaseProductName() String Yes
getDatabaseProductVersion() String Yes
getDriverName() String Yes
getDriverVersion() String Yes
getDriverMajorVersion() int Yes
getDriverMinorVersion() int Yes
usesLocalFiles() boolean Yes
usesLocalFilePerTable() boolean Yes
supportsMixedCaseIdentifiers() boolean Yes
storesUpperCaseIdentifiers() boolean Yes
storesLowerCaseIdentifiers() boolean Yes
supportsMixedCaseQuotedIdentifiers() boolean Yes
storesUpperCaseQuotedIdentifiers() boolean Yes
storesLowerCaseQuotedIdentifiers() boolean Yes
storesMixedCaseQuotedIdentifiers() boolean Yes
supportsAlterTableWithAddColumn() boolean Yes
supportsAlterTableWithDropColumn() boolean Yes
supportsColumnAliasing() boolean Yes
nullPlusNonNullIsNull() boolean Yes
supportsConvert() boolean Yes
supportsConvert(int fromType, int toType) boolean Yes
supportsTableCorrelationNames() boolean Yes
supportsDifferentTableCorrelationNames() boolean Yes
supportsExpressionsInOrderBy() boolean Yes
supportsOrderByUnrelated() boolean Yes
supportsGroupBy() boolean Yes
supportsGroupByUnrelated() boolean Yes
supportsGroupByBeyondSelect() boolean Yes
supportsLikeEscapeClause() boolean Yes
supportsMultipleResultSets() boolean Yes
supportsMultipleTransactions() boolean Yes
supportsNonNullableColumns() boolean Yes
supportsMinimumSQLGrammar() boolean Yes
supportsCoreSQLGrammar() boolean Yes
supportsExtendedSQLGrammar() boolean Yes
supportsANSI92EntryLevelSQL() boolean Yes
supportsANSI92IntermediateSQL() boolean Yes
supportsANSI92FullSQL() boolean Yes
supportsIntegrityEnhancementFacility() boolean Yes
supportsOuterJoins() boolean Yes
supportsFullOuterJoins() boolean Yes
supportsLimitedOuterJoins() boolean Yes
isCatalogAtStart() boolean Yes
supportsSchemasInDataManipulation() boolean Yes
supportsSavepoints() boolean Yes
supportsResultSetHoldability(int holdability) boolean Yes
getResultSetHoldability() int Yes
getDatabaseMajorVersion() int Yes
getDatabaseMinorVersion() int Yes
getJDBCMajorVersion() int Yes
getJDBCMinorVersion() int Yes

java.sql.Driver

java.sql.Driver是数据库驱动接口。

表7-4 对java.sql.Driver的支持情况

方法名 返回值类型 支持JDBC 4
acceptsURL(String url) Boolean Yes
connect(String url, Properties info) Connection Yes
jdbcCompliant() Boolean Yes
getMajorVersion() int Yes
getMinorVersion() int Yes

java.sql.PreparedStatement

java.sql.PreparedStatement是预处理语句接口。

表7-5 对java.sql.PreparedStatement的支持情况

方法名 返回值类型 支持JDBC 4
clearParameters() void Yes
execute() Boolean Yes
executeQuery() ResultSet Yes
excuteUpdate() int Yes
getMetaData() ResultSetMetaData Yes
setBoolean(int parameterIndex, boolean x) void Yes
setBigDecimal(int parameterIndex, BigDecimal x) void Yes
setByte(int parameterIndex, byte x) void Yes
setBytes(int parameterIndex, byte[] x) void Yes
setDate(int parameterIndex, Date x) void Yes
setDouble(int parameterIndex, double x) void Yes
setFloat(int parameterIndex, float x) void Yes
setInt(int parameterIndex, int x) void Yes
setLong(int parameterIndex, long x) void Yes
setShort(int parameterIndex, short x) void Yes
setString(int parameterIndex, String x) void Yes
addBatch() void Yes
executeBatch() int[] Yes
clearBatch() void Yes

说明
  • addBatch()、execute()必须在clearBatch()之后才能执行。

  • 调用executeBatch()方法并不会清除batch。用户必须显式使用clearBatch()清除。

  • 在添加了一个batch的绑定变量后,用户若想重用这些值(再次添加一个batch),无需再次使用set*()方法 。

  • 以下方法是从java.sql.Statement继承而来:close,execute,executeQuery,executeUpdate,getConnection,getResultSet,getUpdateCount,isClosed,setMaxRows, setFetchSize。

java.sql.ResultSet

java.sql.ResultSet是执行结果集接口。

表7-6 对java.sql.ResultSet的支持情况

方法名 返回值类型 支持JDBC 4
findColumn(String columnLabel) int Yes
getBigDecimal(int columnIndex) BigDecimal Yes
getBigDecimal(String columnLabel) BigDecimal Yes
getBoolean(int columnIndex) Boolean Yes
getBoolean(String columnLabel) Boolean Yes
getByte(int columnIndex) byte Yes
getBytes(int columnIndex) byte[] Yes
getByte(String columnLabel) byte Yes
getBytes(String columnLabel) byte[] Yes
getDate(int columnIndex) Date Yes
getDate(String columnLabel) Date Yes
getDouble(int columnIndex) double Yes
getDouble(String columnLabel) double Yes
getFloat(int columnIndex) float Yes
getFloat(String columnLabel) float Yes
getInt(int columnIndex) int Yes
getInt(String columnLabel) int Yes
getLong(int columnIndex) long Yes
getLong(String columnLabel) long Yes
getShort(int columnIndex) short Yes
getShort(String columnLabel) short Yes
getString(int columnIndex) String Yes
getString(String columnLabel) String Yes
getTime(int columnIndex) Time Yes
getTime(String columnLabel) Time Yes
getTimestamp(int columnIndex) Timestamp Yes
getTimestamp(String columnLabel) Timestamp Yes
isAfterLast() Boolean Yes
isBeforeFirst() Boolean Yes
isFirst() Boolean Yes
next() Boolean Yes

说明
  • 一个Statement不能有多个处于”open”状态的ResultSet。

  • 用于遍历结果集(ResultSet)的游标(Cursor)在被提交后不能保持”open”的状态。

java.sql.ResultSetMetaData

java.sql.ResultSetMetaData是对ResultSet对象相关信息的具体描述。

表7-7 对java.sql.ResultSetMetaData的支持情况

方法名 返回值类型 支持JDBC 4
getColumnCount() int Yes
getColumnName(int column) String Yes
getColumnType(int column) int Yes
getColumnTypeName(int column) String Yes

java.sql.Statement

java.sql.Statement是SQL语句接口。 表7-8 对java.sql.Statement的支持情况

方法名 返回值类型 支持JDBC 4
close() void Yes
execute(String sql) Boolean Yes
executeQuery(String sql) ResultSet Yes
executeUpdate(String sql) int Yes
getConnection() Connection Yes
getResultSet() ResultSet Yes
getQueryTimeout() int Yes
getUpdateCount() int Yes
isClosed() Boolean Yes
setQueryTimeout(int seconds) void Yes
setFetchSize(int rows) void Yes
cancel() void Yes

说明
  • 通过setFetchSize可以减少结果集在客户端的内存占用情况。它的原理是通过将结果集打包成游标,然后分段处理,所以会加大数据库与客户端的通信量,会有性能损耗。

  • 由于数据库游标是事务内有效,所以,在设置setFetchSize的同时,需要将连接设置为非自动提交模式,setAutoCommit(false)。同时在业务数据需要持久化到数据库中时,在连接上执行提交操作。

javax.sql.ConnectionPoolDataSource

javax.sql.ConnectionPoolDataSource是数据源连接池接口。

方法名 返回值类型 支持JDBC 4
getLoginTimeout() int Yes
getLogWriter() PrintWriter Yes
getPooledConnection() PooledConnection Yes
getPooledConnection(String user,String password) PooledConnection Yes
setLoginTimeout(int seconds) void Yes
setLogWriter(PrintWriter out) void Yes

javax.sql.DataSource

javax.sql.DataSource是数据源接口。

表7-10 对javax.sql.DataSource接口的支持情况

方法名 返回值类型 支持JDBC 4
getConneciton() Connection Yes
getConnection(String username,String password) Connection Yes
getLoginTimeout() int Yes
getLogWriter() PrintWriter Yes
setLoginTimeout(int seconds) void Yes
setLogWriter(PrintWriter out) void Yes

javax.sql.PooledConnection

javax.sql.PooledConnection是由连接池创建的连接接口。

表7-11 对javax.sql.PooledConnection的支持情况

方法名 返回值类型 支持JDBC 4
getConneciton() Connection Yes
getConnection(String username,String password) Connection Yes
getLoginTimeout() int Yes
getLogWriter() PrintWriter Yes
setLoginTimeout(int seconds) void Yes
setLogWriter(PrintWriter out) void Yes

javax.naming.Context

javax.naming.Context是连接配置的上下文接口。

表7-12 对javax.naming.Context的支持情况

方法名 返回值类型 支持JDBC 4
bind(Name name, Object obj) void Yes
bind(String name, Object obj) void Yes
lookup(Name name) Object Yes
lookup(String name) Object Yes
rebind(Name name, Object obj) void Yes
rebind(String name, Object obj) void Yes
rename(Name oldName, Name newName) void Yes
rename(String oldName, String newName) void Yes
unbind(Name name) void Yes
unbind(String name) void Yes

javax.naming.spi.InitialContextFactory

javax.naming.spi.InitialContextFactory是初始连接上下文工厂接口。

表7-13 对javax.naming.spi.InitialContextFactory的支持情况

方法名 返回值类型 支持JDBC 4
getInitialContext(Hashtable<?,?> environment) Context Yes

CopyManager

CopyManager是Vastbase JDBC驱动中提供的一个API接口类,用于批量向Vastbase中导入数据。

CopyManager的继承关系

CopyManager类位于org.postgresql.copy Package中,继承自java.lang.Object类,该类的声明如下:

public class CopyManager 
extends Object

构造方法

public CopyManager(BaseConnection connection)

throws SQLException

常用方法

表7-14 CopyManager常用方法

返回值 方法 描述 throws
CopyIn copyIn(String sql) - SQLException
long copyIn(String sql, InputStream from) 使用COPY FROM STDIN从InputStream中快速向数据库中的表加载数据。 SQLException,IOException
long copyIn(String sql, InputStream from, int bufferSize) 使用COPY FROM STDIN从InputStream中快速向数据库中的表加载数据。 SQLException,IOException
long copyIn(String sql, Reader from) 使用COPY FROM STDIN从Reader中快速向数据库中的表加载数据。 SQLException,IOException
long copyIn(String sql, Reader from, int bufferSize) 使用COPY FROM STDIN从Reader中快速向数据库中的表加载数据。 SQLException,IOException
CopyOut copyOut(String sql) - SQLException
long copyOut(String sql, OutputStream to) 将一个COPY TO STDOUT的结果集从数据库发送到OutputStream类中。 SQLException,IOException
long copyOut(String sql, Writer to) 将一个COPY TO STDOUT的结果集从数据库发送到Writer类中。 SQLException,IOException