这与列值的类型有关,而与列的选择方式无关。此信息存储在
DatabaseMetaData#getTypeInfo()
. 列
SEARCHABLE
可以返回任何一个
DatabaseMetaData.typePredNone
9:
短=>你能用吗
"WHERE"
基于此类型:
-
typePredNone
-不支持
-
typePredChar
-仅支持
WHERE .. LIKE
-
typePredBasic
-支持,但
哪里。。就像
-
typeSearchable
-支持所有人
WHERE ..
DatabaseMetaData databaseMetaData = connection.getMetaData();
ResultSet typeInfo = databaseMetaData.getTypeInfo();
System.out.println("type name | data type | searchable");
System.out.println("-------------------------------+-----------+------------");
while (typeInfo.next()) {
String typeName = typeInfo.getString("TYPE_NAME");
int dataType = typeInfo.getInt("DATA_TYPE");
boolean searchable = typeInfo.getShort("SEARCHABLE") != DatabaseMetaData.typePredNone;
System.out.printf("%-30s | %-9d | %-9s%n", typeName , dataType, searchable);
}
这会在PostgreSQL 8.4连接上产生如下结果:
type name | data type | searchable
-------------------------------+-----------+------------
bool | -7 | true
bytea | -2 | true
char | 1 | true
name | 12 | true
int8 | -5 | true
bigserial | -5 | true
int2 | 5 | true
int2vector | 1111 | true
int4 | 4 | true
serial | 4 | true
regproc | 1111 | true
text | 12 | true
(*snip*, it were about 270 rows, all TRUE by the way)
这个
data type
ResultSetMetaData#getColumnType()