我正在尝试从数据库 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.
的实际值
出于某种原因只返回 [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.