我的代码
public static ArrayList getTablesMetadata() throws SQLException{
String table[] = {"TABLE"};
ResultSet rs = null;
ArrayList tables = null;
rs = metadata.getTables(null, null, null, table);
tables = new ArrayList();
while(rs.next()){
tables.add(rs.getString("TABLE_NAME"));
}
return tables;
}
public static void getColumnsMetadata(ArrayList tables)
throws SQLException{
ResultSet rs = null;
for(String actualTable : tables){ <-----------------------------------
rs = metadata.getColumns(null, null, actualTable, null);
System.out.println(actualTable.toUpperCase());
while(rs.next()){
System.out.println(rs.getString("COLUMN_NAME")+ " "
+ rs.getString("TYPE_NAME")+ " "
+ rs.getString("COLUMN_SIZE"));
}
System.out.println("\n");
}
}
箭头指出错误,我得到的是:
Type mismatch: cannot convert from element type Object to String
我已经尝试添加某些部分,但认为我做错了,或者我似乎无法看到的代码中出现问题。
答案 0 :(得分:1)
ArrayList
使用Generics。
您的table
变量是Object
的列表,因为未指定泛型类型。你可以:
String
ArrayList<String>
代替(推荐)答案 1 :(得分:0)
如果未指定数组列表类型,则假定它包含Object。
试试
getColumnsMetadata(ArrayList<String> tables)
我想你还需要改变:
tables = new ArrayList<String>();
并将getTablesMetadata()的返回值更改为
ArrayList<String>