是否可以从JDBC元数据结构中获取数组列的类型?
re = openedConnection.getMetaData().getColumns(...)
while (rs.next())
{
final String columnName = rs.getString("COLUMN_NAME");
final int columnType = rs.getInt("DATA_TYPE");
...类型返回数组但是数组是什么(int,text,数值.)?
理想情况下,数据库是独立的(Oracle和Postgres支持这一点,对于MySQL或Server并不确定)
发布于 2017-03-21 16:00:12
使用java.sql.ResultSetMetaData.getColumnTypeName()
Oracle安装
CREATE OR REPLACE TYPE random_array IS TABLE OF VARCHAR2(42);
/Java
Class.forName("oracle.jdbc.OracleDriver");
Connection con = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:orcl",
"username",
"password"
);
PreparedStatement st = con.prepareStatement(
"SELECT random_array( 'a', 'b', 'c' ) AS array FROM DUAL"
);
ResultSet rs = st.executeQuery();
while( rs.next() )
{
String type = rs.getMetaData().getColumnTypeName(1);
String[] data = (String[]) rs.getArray(1).getArray();
System.out.println( type + ": " + Arrays.toString( data ) );
}
st.close();
con.close();输出
SCHEMA_NAME.RANDOM_ARRAY: [a, b, c]如果您想回到Oracle并找到可以使用的集合元素的类型:
SELECT ELEM_TYPE_NAME,
LENGTH,
PRECISION,
SCALE
FROM ALL_COLL_TYPES
WHERE TYPE_NAME = 'RANDOM_ARRAY'
AND OWNER = 'SCHEMA_NAME';其中产出:
ELEM_TYPE_NAME LENGTH PRECISION SCALE
-------------- ------ --------- -----
VARCHAR2 42https://stackoverflow.com/questions/42929774
复制相似问题