由于某些原因,只返回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;
}
?它连接到在本地主机上运行的MySQL数据库。
这是我的代码:
df_08 <- read.table(text = c("
observation year x code_location location
1 2008 300 23-940 town no. 1 town no. 1
2 2008 234 23-941 town no. 2 town no. 2
3 2008 947 23-942 city St 23 city St 23
4 2008 102 23-943 Mtn town 5 Mtn town 5 "), header = TRUE)
df_04_12 <- read.table(text = c("
observation year y code_location location
1 2004 124 23-940 town no. 1 town no. 1
2 2004 395 23-345 town # 2 town # 2
3 2004 1349 23-942 city St 23 city St 23
4 2012 930 53-443 Mtn town 5 Mtn town 5
5 2012 185 99-999 town no. 1 town no. 1
6 2012 500 23-941 town Number 2 town Number 2
7 2012 185 34-942 city Street 23 city Street 23
8 2012 195 23-943 Mt town 5 Mt town 5 "), header = TRUE)
答案 0 :(得分:0)
column_name
的每个值都将位于单独的行上。查询的预期回报将是结果集,如
column_name
-----------
id
name
weight
charge
flavor
spin
要获取查询返回的实际值,您需要遍历结果集的行,就像从您返回的任何其他结果集中获取行一样。
您要显示的代码仅查看分配给resultset
中列的resultsest ...名称的元数据。在这种情况下,结果集包含一个名为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
如果您在代码中使用了该查询,则结果集的元数据将是单个列,名称为mystringcol
。并且您的代码不会对结果集中返回的行做任何事情,即mystringcol的实际值。