Java 我试图从数据库表中检索所有列名,但只返回“[column\u NAME]”?

Java 我试图从数据库表中检索所有列名,但只返回“[column\u NAME]”?,java,mysql,database,columnname,Java,Mysql,Database,Columnname,出于某种原因,只返回[列名称]?它正在连接到本地主机上运行的MySQL数据库 这是我的密码: public static String[] getCol() throws Exception { try { Connection con = dbc.getConnection(); PreparedStatement statement = con.prepareStatement("select column_name from information_

出于某种原因,只返回[列名称]?它正在连接到本地主机上运行的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;
}
列_name的每个值都将位于单独的行上。查询的预期返回将是一个类似的结果集

column_name
-----------
id
name
weight
charge
flavor
spin
要获取查询返回的实际值,您需要遍历resultset的行,就像从返回的任何其他resultset中获取行一样

您显示的代码只查看ResultSet的元数据。。。为结果集中的列指定的名称。在本例中,结果集包含一个名为column\u name的列。这就是为什么你要观察你报告的行为

如果您的查询是书面的

 SELECT column_name AS foo
   FROM information_schema.columns
  WHERE table_name='particles'
您将看到foo作为列名,而不是列名

结果集的行中的值恰好是列名,这与SQL没有任何关系。。。就SQL而言,查询返回的是一组行,一列值。是的,它恰好是关于表中列的元数据,因为您正在对名为information_schema.columns的特殊视图运行查询,但该查询的返回与运行从任何其他表返回VARCHAR列的任何其他查询时没有什么不同。例如:

SELECT mystringcol FROM mytable

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

如果我理解正确,问题出在SQL中。如果只选择列名称,请使用select*。。。相反,这绝对不是一个明确的问题