java—我试图从数据库表中检索所有列名,但只返回“[列名]”?

goucqfw6  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(327)

只是出于某种原因 [COLUMN_NAME] 是否返回?它正在连接一个在本地主机上运行的mysql数据库。
这是我的密码:

public static String[] getCol() throws Exception {
    try {
        Connection con = dbc.getConnection();
        PreparedStatement statement = con.prepareStatement("select column_name from information_schema.columns where table_name='particles'");
        ResultSet result = statement.executeQuery();
        ResultSetMetaData rs =  result.getMetaData();
        int count = rs.getColumnCount();
        String[] ColName = new String[count];
        String[] COLS;
        for (int i=1 ; i <= count; i++) {
            ColName[i-1] = rs.getColumnName(i);
        }
        System.out.println(Arrays.toString(ColName));
        return ColName;
    } catch(Exception e) {
        System.out.println(e);
    }
    return null;
}
z2acfund

z2acfund1#

的每个值 column_name 将在另一排。查询的预期返回将是一个结果集,如

column_name
-----------
id
name
weight
charge
flavor
spin

要获取查询返回的实际值,需要遍历resultset的行,就像从返回的任何其他resultset获取行一样。
您显示的代码只查看resultset的元数据。。。中指定给列的名称 resultset . 在本例中,resultset包含一个列,其名称为 column_name . 这就是为什么你要观察你报告的行为。
如果你的查询是书面的

SELECT column_name AS foo
   FROM information_schema.columns
  WHERE table_name='particles'

你会看到 foo 作为列名,而不是 column_name .
结果集行中的值恰好是列名对sql来说一点都不重要。。。就sql而言,查询返回的是一组行,一列值。是的,它恰好是关于表中列的元数据(因为您正在对一个名为 information_schema.columns )但是,该查询的返回与运行从任何其他表返回varchar列的任何其他查询没有什么不同。例如:

SELECT mystringcol FROM mytable

如果在代码中使用该查询,那么resultset的元数据将是一个带有名称的列 mystringcol . 您的代码不会对resultset中返回的行(mystringcol的实际值)执行任何操作。

相关问题