【问题标题】:Type mismatch: cannot convert from element type Object to String JDBC MetaData类型不匹配:无法从元素类型 Object 转换为 String JDBC MetaData
【发布时间】:2017-02-21 14:16:24
【问题描述】:

我的代码

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

我尝试将

【问题讨论】:

    标签: java mysql sql database jdbc


    【解决方案1】:

    ArrayList 使用Generics

    您的table 变量是Object 的列表,因为没有指定泛型类型。你可以:

    1. 将每个表对象转换为String
    2. 改用ArrayList&lt;String&gt;(推荐)

    【讨论】:

      【解决方案2】:

      如果不指定数组列表类型,则假定为持有Object。
      试试

      getColumnsMetadata(ArrayList<String> tables) 
      

      我猜你也需要改变:

      tables = new ArrayList<String>(); 
      

      并将getTablesMetadata()的返回值改为

       ArrayList<String>
      

      【讨论】:

      • 好吧,我已经尝试过类似的东西,但似乎它有效:) 谢谢
      猜你喜欢
      • 2019-09-29
      • 1970-01-01
      • 2016-04-08
      • 1970-01-01
      • 1970-01-01
      • 2014-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多