📄 ssdatabasemetadata.java
字号:
if(database != null){
Strings tables = database.getTables(tableNamePattern);
for(int i=0; i<tables.size(); i++){
String table = tables.get(i);
Object[] row = new Object[10];
row[0] = catalog;
row[2] = table;
try{
if(database.getTableView( con, table) instanceof View){
if(isTypeView){
row[3] = "VIEW";
rows.add(row);
}
}else{
if(isTypeTable){
row[3] = "TABLE";
rows.add(row);
}
}
}catch(Exception e){
//TODO invalid VIEWS does not show because it can't load.
}
}
}
Object[][] data = new Object[rows.size()][];
rows.toArray(data);
CommandSelect cmdSelect = Utils.createMemoryCommandSelect( con, colNames, data);
Expressions order = new Expressions();
order.add( new ExpressionName("TABLE_TYPE") );
order.add( new ExpressionName("TABLE_NAME") );
cmdSelect.setOrder( order );
return new SSResultSet( st, cmdSelect);
}
public ResultSet getSchemas() throws SQLException {
String[] colNames = {"TABLE_SCHEM"};
Object[][] data = new Object[0][];
return new SSResultSet( st, Utils.createMemoryCommandSelect( con, colNames, data));
}
public ResultSet getCatalogs() throws SQLException {
String[] colNames = {"TABLE_CAT"};
Object[][] data = Database.getCatalogs(con.getDatabase(true));
return new SSResultSet( st, Utils.createMemoryCommandSelect( con, colNames, data));
}
public ResultSet getTableTypes() throws SQLException {
String[] colNames = {"TABLE_TYPE"};
Object[][] data = {{"SYSTEM TABLE"}, {"TABLE"}, {"VIEW"}};
return new SSResultSet( st, Utils.createMemoryCommandSelect( con, colNames, data));
}
public ResultSet getColumns(String catalog, String schemaPattern, String tableNamePattern, String columnNamePattern) throws SQLException {
try {
String[] colNames = {"TABLE_CAT", "TABLE_SCHEM", "TABLE_NAME", "COLUMN_NAME", "DATA_TYPE", "TYPE_NAME", "COLUMN_SIZE", "BUFFER_LENGTH", "DECIMAL_DIGITS", "NUM_PREC_RADIX", "NULLABLE", "REMARKS", "COLUMN_DEF", "SQL_DATA_TYPE", "SQL_DATETIME_SUB", "CHAR_OCTET_LENGTH", "ORDINAL_POSITION", "IS_NULLABLE"};
Object[][] data = con.getDatabase(false).getColumns(con, tableNamePattern, columnNamePattern);
return new SSResultSet( st, Utils.createMemoryCommandSelect( con, colNames, data));
} catch (Exception e) {
throw SmallSQLException.createFromException(e);
}
}
public ResultSet getColumnPrivileges(String catalog, String schema, String table, String columnNamePattern) throws SQLException {
String[] colNames = {"TABLE_CAT", "TABLE_SCHEM", "TABLE_NAME", "COLUMN_NAME", "GRANTOR", "GRANTEE", "PRIVILEGE", "IS_GRANTABLE"};
/**@todo: Implement this java.sql.DatabaseMetaData method*/
throw new java.lang.UnsupportedOperationException("Method getColumnPrivileges() not yet implemented.");
}
public ResultSet getTablePrivileges(String catalog, String schemaPattern, String tableNamePattern) throws SQLException {
String[] colNames = {"TABLE_CAT", "TABLE_SCHEM", "TABLE_NAME", "GRANTOR", "GRANTEE", "PRIVILEGE", "IS_GRANTABLE"};
/**@todo: Implement this java.sql.DatabaseMetaData method*/
throw new java.lang.UnsupportedOperationException("Method getTablePrivileges() not yet implemented.");
}
public ResultSet getBestRowIdentifier(String catalog, String schema, String table, int scope, boolean nullable) throws SQLException {
try {
String[] colNames = {"SCOPE", "COLUMN_NAME", "DATA_TYPE", "TYPE_NAME", "COLUMN_SIZE", "BUFFER_LENGTH", "DECIMAL_DIGITS", "PSEUDO_COLUMN"};
Object[][] data = con.getDatabase(false).getBestRowIdentifier(con, table);
return new SSResultSet( st, Utils.createMemoryCommandSelect( con, colNames, data));
} catch (Exception e) {
throw SmallSQLException.createFromException(e);
}
}
public ResultSet getVersionColumns(String catalog, String schema, String table) throws SQLException {
try {
String[] colNames = {"SCOPE", "COLUMN_NAME", "DATA_TYPE", "TYPE_NAME", "COLUMN_SIZE", "BUFFER_LENGTH", "DECIMAL_DIGITS", "PSEUDO_COLUMN"};
Object[][] data = new Object[0][0];
return new SSResultSet( st, Utils.createMemoryCommandSelect( con, colNames, data));
} catch (Exception e) {
throw SmallSQLException.createFromException(e);
}
}
public ResultSet getPrimaryKeys(String catalog, String schema, String table) throws SQLException {
try {
String[] colNames = {"TABLE_CAT", "TABLE_SCHEM", "TABLE_NAME", "COLUMN_NAME", "KEY_SEQ", "PK_NAME"};
Object[][] data = con.getDatabase(false).getPrimaryKeys(con, table);
return new SSResultSet( st, Utils.createMemoryCommandSelect( con, colNames, data));
} catch (Exception e) {
throw SmallSQLException.createFromException(e);
}
}
public ResultSet getImportedKeys(String catalog, String schema, String table) throws SQLException {
return getCrossReference( null, null, null, null, null, table );
}
public ResultSet getExportedKeys(String catalog, String schema, String table) throws SQLException {
return getCrossReference( null, null, table, null, null, null );
}
public ResultSet getCrossReference(String primaryCatalog, String primarySchema, String primaryTable, String foreignCatalog, String foreignSchema, String foreignTable) throws SQLException {
try {
String[] colNames = {"PKTABLE_CAT", "PKTABLE_SCHEM", "PKTABLE_NAME", "PKCOLUMN_NAME", "FKTABLE_CAT", "FKTABLE_SCHEM", "FKTABLE_NAME", "FKCOLUMN_NAME", "KEY_SEQ", "UPDATE_RULE", "DELETE_RULE", "FK_NAME", "PK_NAME", "DEFERRABILITY"};
Object[][] data = con.getDatabase(false).getReferenceKeys(con, primaryTable, foreignTable);
return new SSResultSet( st, Utils.createMemoryCommandSelect( con, colNames, data));
} catch (Exception e) {
throw SmallSQLException.createFromException(e);
}
}
public ResultSet getTypeInfo() throws SQLException {
String[] colNames = { "TYPE_NAME", "DATA_TYPE", "PRECISION", "LITERAL_PREFIX", "LITERAL_SUFFIX", "CREATE_PARAMS", "NULLABLE", "CASE_SENSITIVE", "SEARCHABLE", "UNSIGNED_ATTRIBUTE", "FIXED_PREC_SCALE", "AUTO_INCREMENT", "LOCAL_TYPE_NAME", "MINIMUM_SCALE", "MAXIMUM_SCALE", "SQL_DATA_TYPE", "SQL_DATETIME_SUB", "NUM_PREC_RADIX"};
Object[][] data = {
{SQLTokenizer.getKeyWord(SQLTokenizer.UNIQUEIDENTIFIER),Utils.getShort(SQLTokenizer.getSQLDataType( SQLTokenizer.UNIQUEIDENTIFIER)), Utils.getInteger(36), "'", "'", null, Utils.getShort(typeNullable), Boolean.FALSE, Utils.getShort(typeSearchable), null, Boolean.FALSE, Boolean.FALSE, null, null, null, null, null, null},
{SQLTokenizer.getKeyWord(SQLTokenizer.BIT), Utils.getShort(SQLTokenizer.getSQLDataType( SQLTokenizer.BIT) ), Utils.getInteger(1), null, null, null, Utils.getShort(typeNullable), Boolean.FALSE, Utils.getShort(typeSearchable), null, Boolean.FALSE, Boolean.FALSE, null, Utils.getInteger(0), Utils.getInteger(0), null, null, null},
{SQLTokenizer.getKeyWord(SQLTokenizer.TINYINT), Utils.getShort(SQLTokenizer.getSQLDataType( SQLTokenizer.TINYINT) ), Utils.getInteger(3), null, null, null, Utils.getShort(typeNullable), Boolean.FALSE, Utils.getShort(typeSearchable), Boolean.TRUE, Boolean.FALSE, Boolean.FALSE, null, Utils.getInteger(0), Utils.getInteger(0), null, null, null},
{SQLTokenizer.getKeyWord(SQLTokenizer.BIGINT), Utils.getShort(SQLTokenizer.getSQLDataType( SQLTokenizer.BIGINT) ), Utils.getInteger(19), null, null, null, Utils.getShort(typeNullable), Boolean.FALSE, Utils.getShort(typeSearchable), Boolean.FALSE, Boolean.FALSE, Boolean.FALSE, null, Utils.getInteger(0), Utils.getInteger(0), null, null, null},
{SQLTokenizer.getKeyWord(SQLTokenizer.LONGVARBINARY), Utils.getShort(SQLTokenizer.getSQLDataType( SQLTokenizer.LONGVARBINARY) ), Utils.getInteger(2147483647), "0x", null, null, Utils.getShort(typeNullable), Boolean.FALSE, Utils.getShort(typeSearchable), null, Boolean.FALSE, Boolean.FALSE, null, null, null, null, null, null},
{SQLTokenizer.getKeyWord(SQLTokenizer.VARBINARY), Utils.getShort(SQLTokenizer.getSQLDataType( SQLTokenizer.VARBINARY) ), Utils.getInteger(65535), "0x", null, "max length", Utils.getShort(typeNullable), Boolean.FALSE, Utils.getShort(typeSearchable), null, Boolean.FALSE, Boolean.FALSE, null, null, null, null, null, null},
{SQLTokenizer.getKeyWord(SQLTokenizer.BINARY), Utils.getShort(SQLTokenizer.getSQLDataType( SQLTokenizer.BINARY) ), Utils.getInteger(65535), "0x", null, "length", Utils.getShort(typeNullable), Boolean.FALSE, Utils.getShort(typeSearchable), null, Boolean.FALSE, Boolean.FALSE, null, null, null, null, null, null},
{SQLTokenizer.getKeyWord(SQLTokenizer.LONGVARCHAR), Utils.getShort(SQLTokenizer.getSQLDataType( SQLTokenizer.LONGVARCHAR) ), Utils.getInteger(2147483647), "'", "'", null, Utils.getShort(typeNullable), Boolean.FALSE, Utils.getShort(typeSearchable), null, Boolean.FALSE, Boolean.FALSE, null, null, null, null, null, null},
{SQLTokenizer.getKeyWord(SQLTokenizer.LONGNVARCHAR), Utils.getShort(SQLTokenizer.getSQLDataType( SQLTokenizer.LONGNVARCHAR) ), Utils.getInteger(2147483647), "'", "'", null, Utils.getShort(typeNullable), Boolean.FALSE, Utils.getShort(typeSearchable), null, Boolean.FALSE, Boolean.FALSE, null, null, null, null, null, null},
{SQLTokenizer.getKeyWord(SQLTokenizer.CHAR), Utils.getShort(SQLTokenizer.getSQLDataType( SQLTokenizer.CHAR) ), Utils.getInteger(65535), "'", "'", "length", Utils.getShort(typeNullable), Boolean.FALSE, Utils.getShort(typeSearchable), null, Boolean.FALSE, Boolean.FALSE, null, null, null, null, null, null},
{SQLTokenizer.getKeyWord(SQLTokenizer.NCHAR), Utils.getShort(SQLTokenizer.getSQLDataType( SQLTokenizer.NCHAR) ), Utils.getInteger(65535), "'", "'", "length", Utils.getShort(typeNullable), Boolean.FALSE, Utils.getShort(typeSearchable), null, Boolean.FALSE, Boolean.FALSE, null, null, null, null, null, null},
{SQLTokenizer.getKeyWord(SQLTokenizer.NUMERIC), Utils.getShort(SQLTokenizer.getSQLDataType( SQLTokenizer.NUMERIC) ), Utils.getInteger(38), null, null, "precision,scale", Utils.getShort(typeNullable), Boolean.FALSE, Utils.getShort(typeSearchable), Boolean.FALSE, Boolean.FALSE, Boolean.FALSE, null, Utils.getInteger(0), Utils.getInteger(38),null, null, null},
{SQLTokenizer.getKeyWord(SQLTokenizer.DECIMAL), Utils.getShort(SQLTokenizer.getSQLDataType( SQLTokenizer.DECIMAL) ), Utils.getInteger(38), null, null, "precision,scale", Utils.getShort(typeNullable), Boolean.FALSE, Utils.getShort(typeSearchable), Boolean.FALSE, Boolean.FALSE, Boolean.FALSE, null, Utils.getInteger(0), Utils.getInteger(38),null, null, null},
{SQLTokenizer.getKeyWord(SQLTokenizer.MONEY), Utils.getShort(SQLTokenizer.getSQLDataType( SQLTokenizer.MONEY) ), Utils.getInteger(19), null, null, null, Utils.getShort(typeNullable), Boolean.FALSE, Utils.getShort(typeSearchable), Boolean.FALSE, Boolean.FALSE, Boolean.FALSE, null, Utils.getInteger(4), Utils.getInteger(4), null, null, null},
{SQLTokenizer.getKeyWord(SQLTokenizer.SMALLMONEY), Utils.getShort(SQLTokenizer.getSQLDataType( SQLTokenizer.SMALLMONEY) ), Utils.getInteger(10), null, null, null, Utils.getShort(typeNullable), Boolean.FALSE, Utils.getShort(typeSearchable), Boolean.FALSE, Boolean.FALSE, Boolean.FALSE, null, Utils.getInteger(4), Utils.getInteger(4), null, null, null},
{SQLTokenizer.getKeyWord(SQLTokenizer.INT), Utils.getShort(SQLTokenizer.getSQLDataType( SQLTokenizer.INT) ), Utils.getInteger(10), null, null, null, Utils.getShort(typeNullable), Boolean.FALSE, Utils.getShort(typeSearchable), Boolean.FALSE, Boolean.FALSE, Boolean.FALSE, null, Utils.getInteger(0), Utils.getInteger(0), null, null, null},
{SQLTokenizer.getKeyWord(SQLTokenizer.SMALLINT), Utils.getShort(SQLTokenizer.getSQLDataType( SQLTokenizer.SMALLINT) ), Utils.getInteger(5), null, null, null, Utils.getShort(typeNullable), Boolean.FALSE, Utils.getShort(typeSearchable), Boolean.FALSE, Boolean.FALSE, Boolean.FALSE, null, Utils.getInteger(0), Utils.getInteger(0), null, null, null},
{SQLTokenizer.getKeyWord(SQLTokenizer.FLOAT), Utils.getShort(SQLTokenizer.getSQLDataType( SQLTokenizer.FLOAT) ), Utils.getInteger(15), null, null, null, Utils.getShort(typeNullable), Boolean.FALSE, Utils.getShort(typeSearchable), Boolean.FALSE, Boolean.FALSE, Boolean.FALSE, null, Utils.getInteger(0), Utils.getInteger(0), null, null, null},
{SQLTokenizer.getKeyWord(SQLTokenizer.REAL), Utils.getShort(SQLTokenizer.getSQLDataType( SQLTokenizer.REAL) ), Utils.getInteger(7), null, null, null, Utils.getShort(typeNullable), Boolean.FALSE, Utils.getShort(typeSearchable), Boolean.FALSE, Boolean.FALSE, Boolean.FALSE, null, Utils.getInteger(0), Utils.getInteger(0), null, null, null},
{SQLTokenizer.getKeyWord(SQLTokenizer.DOUBLE), Utils.getShort(SQLTokenizer.getSQLDataType( SQLTokenizer.DOUBLE) ), Utils.getInteger(15), null, null, null, Utils.getShort(typeNullable), Boolean.FALSE, Utils.getShort(typeSearchable), Boolean.FALSE, Boolean.FALSE, Boolean.FALSE, null, Utils.getInteger(0), Utils.getInteger(0), null, null, null},
{SQLTokenizer.getKeyWord(SQLTokenizer.VARCHAR), Utils.getShort(SQLTokenizer.getSQLDataType( SQLTokenizer.VARCHAR) ), Utils.getInteger(65535), "'", "'", "max length", Utils.getShort(typeNullable), Boolean.FALSE, Utils.getShort(typeSearchable), null, Boolean.FALSE, Boolean.FALSE, null, null, null, null, null, null},
{SQLTokenizer.getKeyWord(SQLTokenizer.NVARCHAR), Utils.getShort(SQLTokenizer.getSQLDataType( SQLTokenizer.NVARCHAR) ), Utils.getInteger(65535), "'", "'", "max length", Utils.getShort(typeNullable), Boolean.FALSE, Utils.getShort(typeSearchable), null, Boolean.FALSE, Boolean.FALSE, null, null, null, null, null, null},
{SQLTokenizer.getKeyWord(SQLTokenizer.BOOLEAN), Utils.getShort(SQLTokenizer.getSQLDataType( SQLTokenizer.BOOLEAN) ), Utils.getInteger(1), null, null, null, Utils.getShort(typeNullable), Boolean.FALSE, Utils.getShort(typeSearchable), null, Boolean.FALSE, Boolean.FALSE, null, Utils.getInteger(0), Utils.getInteger(0), null, null, null},
{SQLTokenizer.getKeyWord(SQLTokenizer.DATE), Utils.getShort(SQLTokenizer.getSQLDataType( SQLTokenizer.DATE) ), Utils.getInteger(10), "'", "'", null, Utils.getShort(typeNullable), Boolean.FALSE, Utils.getShort(typeSearchable), null, Boolean.FALSE, Boolean.FALSE, null, null, null, null, null, null},
{SQLTokenizer.getKeyWord(SQLTokenizer.TIME), Utils.getShort(SQLTokenizer.getSQLDataType( SQLTokenizer.TIME) ), Utils.getInteger(8), "'", "'", null, Utils.getShort(typeNullable), Boolean.FALSE, Utils.getShort(typeSearchable), null, Boolean.FALSE, Boolean.FALSE, null, null, null, null, null, null},
{SQLTokenizer.getKeyWord(SQLTokenizer.TIMESTAMP), Utils.getShort(SQLTokenizer.getSQLDataType( SQLTokenizer.TIMESTAMP) ), Utils.getInteger(23), "'", "'", null, Utils.getShort(typeNullable), Boolean.FALSE, Utils.getShort(typeSearchable), null, Boolean.FALSE, Boolean.FALSE, null, Utils.getInteger(3), Utils.getInteger(3), null, null, null},
{SQLTokenizer.getKeyWord(SQLTokenizer.SMALLDATETIME), Utils.getShort(SQLTokenizer.getSQLDataType( SQLTokenizer.SMALLDATETIME) ), Utils.getInteger(16), "'", "'", null, Utils.getShort(typeNullable), Boolean.FALSE, Utils.getShort(typeSearchable), null, Boolean.FALSE, Boolean.FALSE, null, null, null, null, null, null},
{SQLTokenizer.getKeyWord(SQLTokenizer.JAVA_OBJECT), Utils.getShort(SQLTokenizer.getSQLDataType( SQLTokenizer.JAVA_OBJECT) ), Utils.getInteger(65535), null, null, null, Utils.getShort(typeNullable), Boolean.FALSE, Utils.getShort(typeSearchable), null, Boolean.FALSE, Boolean.FALSE, null, null, null, null, null, null},
{SQLTokenizer.getKeyWord(SQLTokenizer.BLOB), Utils.getShort(SQLTokenizer.getSQLDataType( SQLTokenizer.BLOB) ), Utils.getInteger(2147483647), "0x", null, null, Utils.getShort(typeNullable), Boolean.FALSE, Utils.getShort(typeSearchable), null, Boolean.FALSE, Boolean.FALSE, null, null, null, null, null, null},
{SQLTokenizer.getKeyWord(SQLTokenizer.CLOB), Utils.getShort(SQLTokenizer.getSQLDataType( SQLTokenizer.CLOB) ), Utils.getInteger(2147483647), "'", "'", null, Utils.getShort(typeNullable), Boolean.FALSE, Utils.getShort(typeSearchable), null, Boolean.FALSE, Boolean.FALSE, null, null, null, null, null, null},
{SQLTokenizer.getKeyWord(SQLTokenizer.NCLOB), Utils.getShort(SQLTokenizer.getSQLDataType( SQLTokenizer.NCLOB) ), Utils.getInteger(2147483647), "'", "'", null, Utils.getShort(typeNullable), Boolean.FALSE, Utils.getShort(typeSearchable), null, Boolean.FALSE, Boolean.FALSE, null, null, null, null, null, null},
};
//TODO add more data types to the list
return new SSResultSet( st, Utils.createMemoryCommandSelect( con, colNames, data));
}
public ResultSet getIndexInfo(String catalog, String schema, String table, boolean unique, boolean approximate) throws SQLException {
try {
String[] colNames = {"TABLE_CAT", "TABLE_SCHEM", "TABLE_NAME", "NON_UNIQUE", "INDEX_QUALIFIER", "INDEX_NAME", "TYPE", "ORDINAL_POSITION", "COLUMN_NAME", "ASC_OR_DESC", "CARDINALITY", "PAGES", "FILTER_CONDITION"};
Object[][] data = con.getDatabase(false).getIndexInfo(con, table, unique);
return new SSResultSet( st, Utils.createMemoryCommandSelect( con, colNames, data));
} catch (Exception e) {
throw SmallSQLException.createFromException(e);
}
}
public boolean supportsResultSetType(int type) {
switch(type){
case ResultSet.TYPE_FORWARD_ONLY:
case ResultSet.TYPE_SCROLL_INSENSITIVE:
case ResultSet.TYPE_SCROLL_SENSITIVE:
return true;
}
return false;
}
public boolean supportsResultSetConcurrency(int type, int concurrency) {
if(type >= ResultSet.TYPE_FORWARD_ONLY && type <= ResultSet.TYPE_SCROLL_SENSITIVE &&
concurrency >= ResultSet.CONCUR_READ_ONLY && concurrency <= ResultSet.CONCUR_UPDATABLE)
return true;
return false;
}
public boolean ownUpdatesAreVisible(int type) {
return supportsResultSetType(type);
}
public boolean ownDeletesAreVisible(int type) {
return supportsResultSetType(type);
}
public boolean ownInsertsAreVisible(int type) {
return supportsResultSetType(type);
}
public boolean othersUpdatesAreVisible(int type) {
return supportsResultSetType(type);
}
public boolean othersDeletesAreVisible(int type) {
return supportsResultSetType(type);
}
public boolean othersInsertsAreVisible(int type) {
return supportsResultSetType(type);
}
public boolean updatesAreDetected(int type) {
return false;
}
public boolean deletesAreDetected(int type) {
return supportsResultSetType(type);
}
public boolean insertsAreDetected(int type) {
return supportsResultSetType(type);
}
public boolean supportsBatchUpdates() {
return true;
}
public ResultSet getUDTs(String catalog, String schemaPattern, String typeNamePattern, int[] types) throws SQLException {
String[] colNames = {"TYPE_CAT", "TYPE_SCHEM", "TYPE_NAME", "CLASS_NAME", "DATA_TYPE", "REMARKS"};
Object[][] data = new Object[0][];
return new SSResultSet( st, Utils.createMemoryCommandSelect( con, colNames, data));
}
public Connection getConnection() {
return con;
}
public boolean supportsSavepoints() {
return false;
}
public boolean supportsNamedParameters() {
return true;
}
public boolean supportsMultipleOpenResults() {
return true;
}
public boolean supportsGetGeneratedKeys() {
return true;
}
public ResultSet getSuperTypes(String catalog, String schemaPattern, String typeNamePattern) throws SQLException {
/**@todo: Implement this java.sql.DatabaseMetaData method*/
throw new java.lang.UnsupportedOperationException("Method getSuperTypes() not yet implemented.");
}
public ResultSet getSuperTables(String catalog, String schemaPattern, String tableNamePattern) throws SQLException {
/**@todo: Implement this java.sql.DatabaseMetaData method*/
throw new java.lang.UnsupportedOperationException("Method getSuperTables() not yet implemented.");
}
public ResultSet getAttributes(String catalog, String schemaPattern, String typeNamePattern, String attributeNamePattern) throws SQLException {
/**@todo: Implement this java.sql.DatabaseMetaData method*/
throw new java.lang.UnsupportedOperationException("Method getAttributes() not yet implemented.");
}
public boolean supportsResultSetHoldability(int holdability) {
return true;
}
public int getResultSetHoldability() {
return ResultSet.HOLD_CURSORS_OVER_COMMIT;
}
public int getDatabaseMajorVersion() {
return getDriverMajorVersion();
}
public int getDatabaseMinorVersion() {
return getDriverMinorVersion();
}
public int getJDBCMajorVersion() {
return 3;
}
public int getJDBCMinorVersion() {
return 0;
}
public int getSQLStateType() {
return sqlStateSQL99;
}
public boolean locatorsUpdateCopy() {
return false;
}
public boolean supportsStatementPooling() {
return false;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -