我正在尝试从数据库 table 中检索所有列名,但只返回“[COLUMN_NAME]”?

I'm trying to retrieve all of the column names from a database table but only "[COLUMN_NAME]" is returned?

出于某种原因只返回 [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;
}

column_name 的每个值都将位于单独的 上。您的查询中预期的 return 将是一个类似于

的结果集
column_name
-----------
id
name
weight
charge
flavor
spin

要获得查询 return 的实际值,您需要遍历结果集的行,就像从您 return 的任何其他结果集中获取行一样。

您显示的代码仅查看结果的元数据...分配给 resultset 中的列的名称。在本例中,结果集包含一个列,名称为 column_name。这就是为什么您正在观察您报告的行为。

如果您的查询是

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

您会看到 foo 作为列名,而不是 column_name

结果集的 中的 与 SQL 一点关系都没有列名...就 SQL 而言,查询是 return 一组 ,单个 值列。是的,它恰好是关于 table 中列的元数据(因为您是 运行 对名为 information_schema.columns 的特殊视图的查询)但是该查询的 return 是与您 运行 任何其他查询 return 来自任何其他 table 的 VARCHAR 列确实没有什么不同。例如:

SELECT mystringcol FROM mytable

如果您在代码中使用该查询,则结果集的元数据将是单个列,名称为 mystringcol。而且您的代码不会对结果集中的 rows returned 做任何事情,mystringcol.

的实际值