我试图从数据库表中检索所有列名,但只是" [COLUMN_NAME]"退回?

时间:2016-10-06 18:39:07

标签: java mysql database columnname

由于某些原因,只返回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)

1 个答案:

答案 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的实际值。