Java结果集最大列?

时间:2012-01-23 01:43:13

标签: java mysql jdbc resultset

我是Java的新手,我想知道如何获得通过MySQL查询返回的所有列。例如,

SELECT * FROM `login`

然后我有了这段代码来返回结果:

        while (rs.next()) {
            for (byte i = 1; i < 10; i++) {
                result = result+" "+rs.getString(i);
            }
        }

由于动态MySQL查询,我希望for循环中的10是最大列数。有一个简单的方法吗?感谢。

3 个答案:

答案 0 :(得分:3)

虽然正如duffymo建议的那样,最好拼出您希望在查询中接收的列,但您可以使用ResultSet元数据来获取返回的列数:

 ResultSetMetaData rsmd = rs.getMetaData();
 int numberOfColumns =rsmd.getColumnCount();

 while (rs.next()) {
      for (byte i = 1; i <= numberOfColumns; i++) {
           result = result+" "+rs.getString(i);
      }
 }

答案 1 :(得分:1)

是的,您可以限制返回的字段。这是一个SQL问题,而不是Java问题。将您的查询更改为以下内容:

select this, that, theothercolumn from mytable;

然后你可以用它来动态限制它:

rs.getMetaData().getColumnCount()

答案 2 :(得分:0)

我建议不要使用SELECT *。如果您知道所需的列,请拼写出来。它会使代码在列更改时更加健壮,并减少线路上的字节数。