java中的SQL - 获取列数

Posted

技术标签:

【中文标题】java中的SQL - 获取列数【英文标题】:SQL in java - get the number of columns 【发布时间】:2014-04-21 01:05:16 【问题描述】:

我已经在 java 中使用 sql 有一段时间了。代码通常是这样的 -

conn = DriverManager.getConnection(url, user, pwd); 
PreparedStatement pstat = conn.prepareStatement("select * from table");
ResultSet rs = pstat.executeQuery();
while(rs.next())
  System.out.print(rs.getString(1) + "," + rs.getString(2) + "...");

我无法弄清楚如何获得总列数。我从来不需要它,因为我可以访问 DBVisualizer 并且知道那里的确切列数。但是,我现在想编写一个 java 程序来打印出查询的所有结果,因此需要列数,这样我就可以在 while 循环中打印所有这些结果,而不是猜测。最好的方法是什么?

【问题讨论】:

文档是您的朋友。 ResultSet 的 javadoc 的最后一段明确地告诉你。 docs.oracle.com/javase/7/docs/api/java/sql/ResultSet.html。除此之外,出于这个原因,使用select * 通常不是一个好主意。选择您想要的列,您没有问题。 也许只有我一个人,但如果没有你的指针,找到它就会是大海捞针。这个网站上的大多数问题可能在某个地方的某个文档中得到了回答。 @BrianRoach 只询问结果集的元数据,“select *”不是问题。 【参考方案1】:

使用ResultSetMetaData.getColumnCount() - 返回此ResultSet 对象中的列数。

ResultSet rs = pstat.executeQuery();
ResultSetMetaData rsmd = rs.getMetaData();
int columnCount = rsmd.getColumnCount();

见ResultSetMetaData

【讨论】:

以上是关于java中的SQL - 获取列数的主要内容,如果未能解决你的问题,请参考以下文章

如何从 JDBC ResultSet 中获取列数?

如何获取sql中给定行具有空值的列数?

Java获得数据库查询结果的列数和行数,打印查询结果

查询以计算 Sql Server 视图中的列数

Java 数组 获取二维数组的行数和列数

如何计算 Spark SQL(Databricks)中表中的列数?