使用Java ResultSet选择多个列值

时间:2018-08-06 02:51:23

标签: java mysql sql

我正在尝试从MySQL表的一行中选择值。

window.alertMessage()

当我尝试将结果转换为字符串时,ResultSet仅接收第一行“ fortnite”。我的问题是,如何检索以下各列并将它们全部放入一个字符串中以返回。

这是我的示例代码:

SELECT fortnite,psn,steam,twitch,xbox,youtube 
  FROM `social_media` 
  WHERE id = '16483378715464928'

2 个答案:

答案 0 :(得分:3)

正在发生这种情况。

 while(resultSet.next()) {
        ret += resultSet.getString(i) + " ";
        i++; 
   }

在上面的代码里面,tiy需要按名称或索引获取所有值。 next()函数为您提供完整的行,而不是单列。

您应该将其更改为:

while(resultSet.next()) {
    for(i = 1, i <=6, i++){           
        ret += resultSet.getString(i) + " ";
      } 
   }

答案 1 :(得分:2)

  

当我尝试将结果转换为字符串时,仅ResultSet   收到第一行“ fortnite”。我的问题是,我该如何找回   接下来的列,并将它们全部放入一个字符串中以返回。

这里的术语很重要,因为误解术语可能会导致您误解文档。在这种情况下,重要的术语区别是“行” vs 。 “列”。

您的查询选择fortnite,psn,steam,twitch,xbox,youtube。这六个标识符定义了结果集中每一行将具有的六个。看来您的特定查询是通过表的主键进行选择的,因此您只会有零行或一行,而其他查询会返回多行。

您想提取一行中所有六列的值,但是您要迭代while(resultSet.next()),然后ResultSet.next()将结果集移动到下一个(如果有) ,而不是下一列。由于只有一行,因此循环仅在一次迭代后终止。

您似乎想要更多这样的东西:

        if (resultSet.next()) {
            for (i = 1; i <= 6; i++) {
                ret += resultSet.getString(i) + " ";
            }
        }

if (resultSet.next())对于将结果集移动到第一行并检测何时没有该行是必需的。然后,根据查询迭代结果的,该列的数目是静态已知的。