Java结果集最大列?

Java结果集最大列?,java,mysql,jdbc,resultset,Java,Mysql,Jdbc,Resultset,我对Java相当陌生,我想知道如何获得通过MySQL查询返回的所有列。比如说, SELECT * FROM `login` 然后我用这个代码返回结果: while (rs.next()) { for (byte i = 1; i < 10; i++) { result = result+" "+rs.getString(i); } } while(rs.next()){ 用于

我对Java相当陌生,我想知道如何获得通过MySQL查询返回的所有列。比如说,

SELECT * FROM `login`
然后我用这个代码返回结果:

        while (rs.next()) {
            for (byte i = 1; i < 10; i++) {
                result = result+" "+rs.getString(i);
            }
        }
while(rs.next()){
用于(字节i=1;i<10;i++){
结果=结果+“”+rs.getString(i);
}
}

我希望for循环中的10是最大列数,因为动态MySQL查询。有没有一个简单的方法可以做到这一点?谢谢。

我建议不要使用SELECT*。如果你知道你想要的栏目,就把它们拼出来。它将使您的代码在面对列更改时更加健壮,并减少连接上的字节数。

我建议不要使用SELECT*。如果你知道你想要的栏目,就把它们拼出来。这将使您的代码在遇到列更改时更加健壮,并减少连接上的字节数。

尽管如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);
      }
 }
ResultSetMetaData rsmd=rs.getMetaData();
int numberOfColumns=rsmd.getColumnCount();
while(rs.next()){

对于(byte i=1;i尽管如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);
      }
 }
ResultSetMetaData rsmd=rs.getMetaData();
int numberOfColumns=rsmd.getColumnCount();
while(rs.next()){

对于(字节i=1;iYes),您应该限制返回的字段。这是SQL问题,而不是Java问题。请将查询更改为类似以下内容:

select this, that, theothercolumn from mytable;
然后,您可以使用此选项动态限制它:

rs.getMetaData().getColumnCount()

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

select this, that, theothercolumn from mytable;
然后,您可以使用此选项动态限制它:

rs.getMetaData().getColumnCount()

“减少线路上的字节数”到底是什么意思?如果表中有100列,并且选择*,则意味着每行的所有100列都将返回到您的计算机,而不管您需要多少行。如果该表有100万行,则无论您是否需要,选择*都将返回所有列。在客户端上对其进行筛选是低效的。在SQL中进行筛选-这是它擅长——并且只带回你需要的东西。啊,好吧!有那么一秒钟,我想通过列号和列名访问记录可能会有区别……LOL“减少线路上的字节数”到底是什么意思?如果表中有100列,并且选择*,则意味着每行的所有100列都将返回到您的计算机,而不管您需要多少行。如果该表有100万行,则无论您是否需要,选择*都将返回所有列。在客户端上对其进行筛选是低效的。在SQL中进行筛选-这是它擅长于——并且只带回你需要的东西。啊,好吧!有那么一秒钟,我想通过列号和列名访问记录可能会有区别……哈哈