只是出于某种原因 [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;
}
1条答案
按热度按时间z2acfund1#
的每个值
column_name
将在另一排。查询的预期返回将是一个结果集,如要获取查询返回的实际值,需要遍历resultset的行,就像从返回的任何其他resultset获取行一样。
您显示的代码只查看resultset的元数据。。。中指定给列的名称
resultset
. 在本例中,resultset包含一个列,其名称为column_name
. 这就是为什么你要观察你报告的行为。如果你的查询是书面的
你会看到
foo
作为列名,而不是column_name
.结果集行中的值恰好是列名对sql来说一点都不重要。。。就sql而言,查询返回的是一组行,一列值。是的,它恰好是关于表中列的元数据(因为您正在对一个名为
information_schema.columns
)但是,该查询的返回与运行从任何其他表返回varchar列的任何其他查询没有什么不同。例如:如果在代码中使用该查询,那么resultset的元数据将是一个带有名称的列
mystringcol
. 您的代码不会对resultset中返回的行(mystringcol的实际值)执行任何操作。