📄 types.java
字号:
switch (type) { case Types.DECIMAL : case Types.NUMERIC : return true; default : return false; } } public static boolean isNumberType(int type) { switch (type) { case BIGINT : case DECIMAL : case DOUBLE : case FLOAT : case INTEGER : case NUMERIC : case REAL : case SMALLINT : case TINYINT : return true; default : return false; } } public static boolean isCharacterType(int type) { switch (type) { case CHAR : case CLOB : case LONGVARCHAR : case VARCHAR : case VARCHAR_IGNORECASE : return true; default : return false; } } public static String getTypeName(int type) { switch (type) { case Types.ARRAY : return "ARRAY"; case Types.BIGINT : return "BIGINT"; case Types.BINARY : return "BINARY"; case Types.BLOB : return "BLOB"; case Types.BOOLEAN : return "BOOLEAN"; case Types.CHAR : return "CHAR"; case Types.CLOB : return "CLOB"; case Types.DATALINK : return "DATALINK"; case Types.DATE : return "DATE"; case Types.DECIMAL : return "DECIMAL"; case Types.DISTINCT : return "DISTINCT"; case Types.DOUBLE : return "DOUBLE"; case Types.FLOAT : return "FLOAT"; case Types.INTEGER : return "INTEGER"; case Types.JAVA_OBJECT : return "JAVA_OBJECT"; case Types.LONGVARBINARY : return "LONGVARBINARY"; case Types.LONGVARCHAR : return "LONGVARCHAR"; case Types.NULL : return "NULL"; case Types.NUMERIC : return "NUMERIC"; case Types.OTHER : return "OTHER"; case Types.REAL : return "REAL"; case Types.REF : return "REF"; case Types.SMALLINT : return "SMALLINT"; case Types.STRUCT : return "STUCT"; case Types.TIME : return "TIME"; case Types.TIMESTAMP : return "TIMESTAMP"; case Types.TINYINT : return "TINYINT"; case Types.VARBINARY : return "VARBINARY"; case Types.VARCHAR : return "VARCHAR"; case Types.VARCHAR_IGNORECASE : return "VARCHAR_IGNORECASE"; case Types.XML : return "XML"; default : return null; } } /** * A reasonable/customizable number to avoid the shortcomings/defects * associated with doing a dynamic scan of results to determine * the value. In practice, it turns out that single query yielding * widely varying values for display size of CHAR and VARCHAR columns * on repeated execution results in patently poor usability, as some fairly * high-profile, otherwise "enterprise-quality" RAD tools depend on * on the first value returned to lay out forms and limit the size of * single line edit controls, set corresponding local datastore storage * sizes, etc. In practice, It also turns out that many tools (due to * the original lack of PreparedStatement.getMetaData() in JDK 1.1) emulate * a SQL_DESCRIBE by executing a query hopefully guaranteed to return no * or very few rows for example: select ... from ... where 1=0. * Using the dynamic scan of 1.7.2 RC5 and previous, therefore, the * minimum display size value (1) was often being generated during * a tool's describe phase. Upon subsequent "real" retrievals, some * tools complain that CHAR and VARCHAR result values exceeded the * originally reported display size and refused to fetch further values. */ public static final int MAX_CHAR_OR_VARCHAR_DISPLAY_SIZE = MAX_CHAR_OR_VARCHAR_DISPLAY_SIZE(); // So that the variable can be both public static final and // customizable through system properties if required. // // 32766 (0x7ffe) seems to be a magic number over which several // rather high-profile RAD tools start to have problems // regarding layout and allocation stress. It is gently // recommended that LONGVARCHAR be used for larger values in RAD // tool layout & presentation use cases until such time as we provide // true BLOB support (at which point, LONGVARCHAR will most likely become // an alias for CLOB). // // Most GUI tools seem to handle LONGVARCHAR gracefully by: // // 1.) refusing to directly display such columns in graphical query results // 2.) providing other means to retrieve and display such values private static int MAX_CHAR_OR_VARCHAR_DISPLAY_SIZE() { try { return Integer.getInteger( "hsqldb.max_char_or_varchar_display_size", 32766).intValue(); } catch (SecurityException e) { return 32766; } } public static int getMaxDisplaySize(int type) { switch (type) { case Types.BINARY : case Types.LONGVARBINARY : case Types.LONGVARCHAR : case Types.OTHER : case Types.VARBINARY : case Types.XML : return Integer.MAX_VALUE; // max string length case Types.CHAR : case Types.VARCHAR : return MAX_CHAR_OR_VARCHAR_DISPLAY_SIZE; case Types.BIGINT : // PowerBuilder barfs, wants 19 // ...not our problem, tho, // according to JDBC return 20; // precision + "-".length(); case Types.BOOLEAN : return 5; // Math.max("true".length(),"false".length); case Types.DATALINK : return 20004; // same as precision case Types.DECIMAL : case Types.NUMERIC : return 646456995; // precision + "-.".length() case Types.DATE : return 10; // same as precision case Types.INTEGER : return 11; // precision + "-".length(); case Types.FLOAT : case Types.REAL : case Types.DOUBLE : return 23; // String.valueOf(-Double.MAX_VALUE).length(); case Types.TIME : return 8; // same as precision case Types.SMALLINT : return 6; // precision + "-".length(); case Types.TIMESTAMP : return 29; // same as precision case Types.TINYINT : return 4; // precision + "-".length(); default : return 0; // unknown } } public static boolean isSearchable(int type) { switch (type) { case Types.ARRAY : case Types.BLOB : case Types.CLOB : case Types.JAVA_OBJECT : case Types.STRUCT : case Types.OTHER : return false; default : return true; } } public static Boolean isCaseSensitive(int type) { switch (type) { case Types.ARRAY : case Types.BLOB : case Types.CLOB : case Types.DISTINCT : case Types.JAVA_OBJECT : case Types.NULL : case Types.REF : case Types.STRUCT : return null; case Types.CHAR : case Types.DATALINK : case Types.LONGVARCHAR : case Types.OTHER : case Types.XML : return Boolean.TRUE; case Types.VARCHAR_IGNORECASE : default : return Boolean.FALSE; } } public static Boolean isUnsignedAttribute(int type) { switch (type) { case Types.BIGINT : case Types.DECIMAL : case Types.DOUBLE : case Types.FLOAT : case Types.INTEGER : case Types.NUMERIC : case Types.REAL : case Types.SMALLINT : case Types.TINYINT : return Boolean.FALSE; default : return null; } } public static int getPrecision(int type) { switch (type) { case Types.BINARY : case Types.CHAR : case Types.LONGVARBINARY : case Types.LONGVARCHAR : case Types.OTHER : case Types.VARBINARY : case Types.VARCHAR : case Types.XML : return Integer.MAX_VALUE; case Types.BIGINT : return 19; case Types.BOOLEAN : return 1; case Types.DATALINK : // from SQL CLI spec. TODO: Interpretation? return 20004; case Types.DECIMAL : case Types.NUMERIC :// Integer.MAX_VALUE bit 2's complement number:// (Integer.MAX_VALUE-1) / ((ln(10)/ln(2)) bits per decimal digit)// See: java.math.BigInteger// - the other alternative is that we could report the numprecradix as 2 and// report Integer.MAX_VALUE here return 646456993; case Types.DATE : case Types.INTEGER : return 10; case Types.FLOAT : case Types.REAL : case Types.DOUBLE : return 17; case Types.TIME : return 8; case Types.SMALLINT : return 5; case Types.TIMESTAMP : return 29; case Types.TINYINT : return 3; default : return 0; } } public static String getColStClsName(int type) { switch (type) { case Types.BIGINT : return "java.lang.Long"; case Types.BINARY : case Types.LONGVARBINARY : case Types.VARBINARY : // but wrapped by org.hsqldb.Binary return "[B"; case Types.OTHER : // but wrapped by org.hsqldb.JavaObject return "java.lang.Object"; case Types.BOOLEAN : return "java.lang.Boolean"; case Types.CHAR : case Types.LONGVARCHAR : case Types.VARCHAR : case Types.XML : //? return "java.lang.String"; case Types.DATALINK : return "java.net.URL"; case Types.DATE : return DateClassName; case Types.DECIMAL : case Types.NUMERIC : return DecimalClassName; case Types.DOUBLE : case Types.FLOAT : case Types.REAL : return "java.lang.Double"; case Types.INTEGER : case Types.SMALLINT : case Types.TINYINT : return "java.lang.Integer"; case Types.TIME : return TimeClassName; case Types.TIMESTAMP : return TimestampClassName; default : return null; } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -