我正在查询PostgreSQL数据库中的information_schema.columns
表。使用表名,结果集将查找所有列名,类型以及它是否可为空(主键除外,'id')。这是正在使用的查询:
SELECT column_name, is_nullable,data_type FROM information_schema.columns
WHERE lower(table_name) = lower('TABLE1') AND column_name != 'id'
ORDER BY ordinal_position;
我为每个结果都有一个字符串数组,我正在尝试使用ResultSet方法getArray(String columnLabel)
来避免循环结果。我想将返回的数组存储在字符串数组中,但是会出现类型不匹配错误
Type mismatch: cannot convert from Array to String[]
有没有办法将SQL Array对象转换或类型转换为String []?
相关守则:
String[] columnName, type, nullable;
//Get Field Names, Type, & Nullability
String query = "SELECT column_name, is_nullable,data_type FROM information_schema.columns "
+ "WHERE lower(table_name) = lower('"+tableName+"') AND column_name != 'id' "
+ "ORDER BY ordinal_position";
try{
ResultSet rs = Query.executeQueryWithRS(c, query);
columnName = rs.getArray(rs.getArray("column_name"));
type = rs.getArray("data_type");
nullable = rs.getArray("is_nullable");
}catch (Exception e) {
e.printStackTrace();
}
答案 0 :(得分:41)
使用:
Array a = rs.getArray("is_nullable");
String[] nullable = (String[])a.getArray();
正如here
所解释的那样 Array
是SQL类型,getArray()
返回一个要转换为java数组的对象。
答案 1 :(得分:3)
将数组概括为对象
Object[] type; //this is generic can use String[] directly
Array rsArray;
rsArray = rs.getArray("data_type");
type = (Object [])rsArray.getArray();
将它循环使用为字符串:
type[i].toString();
答案 2 :(得分:2)
如何从SQL数组设置ArrayList属性:
Array a = rs.getArray("col"); // smallint[] column
if (a != null) {
yourObject.setListProperty(Arrays.asList((Integer[]) a.getArray()));
}
答案 3 :(得分:2)
Object[] balance = (Object[]) tableObject.getArray();
此处table Object是来自dao实现中DB过程调用的Table Type数组。在我们需要解析之后。
for (Object bal : balance) {
Object [] balObj =(Object[]) ((Array) bal).getArray();
for(Object obj : balObj){
Struct s= (Struct)obj;
if(s != null ){
String [] str = (String[]) s.getAttributes();
System.out.println(str);
}
}
}
答案 4 :(得分:1)
这可能有帮助
Object[] balance = (Object[]) ((Array) attributes[29]).getArray();
for (Object bal : balance) {
Object [] balObj =(Object[]) ((Array) bal).getArray();
for(Object obj : balObj){
Struct s= (Struct)obj;
if(s != null ){
String [] str = (String[]) s.getAttributes();
System.out.println(str);
}
}
}