我正在尝试从MySQL表的一行中选择值。
window.alertMessage()
当我尝试将结果转换为字符串时,ResultSet仅接收第一行“ fortnite”。我的问题是,如何检索以下各列并将它们全部放入一个字符串中以返回。
这是我的示例代码:
SELECT fortnite,psn,steam,twitch,xbox,youtube
FROM `social_media`
WHERE id = '16483378715464928'
答案 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())
对于将结果集移动到第一行并检测何时没有该行是必需的。然后,根据查询迭代结果的列,该列的数目是静态已知的。