java - 如何从 MySQL 表中获取多个结果?
问题描述
假设我有 2 列,第一列是 ID,第二列是颜色。
我将如何搜索特定颜色并获取与该颜色位于同一行的所有 id?
我如何将结果转换为数组?
我知道如何做一个简单的字符串。
try {
PreparedStatement ps = plugin.SQL.getConnection().prepareStatement("SELECT ID FROM playerinfo WHERE COLOUR = ?");
ps.setString(1, colour);
ResultSet rs = ps.executeQuery();
int id = 0;
if (rs.next()) {
id = rs.getInt("ID");
return id;
}
} catch (SQLException e) {
e.printStackTrace();
}
这就是它应该的样子
id colour
1 **red**
2 blue
3 green
4 **red**
5 **red**
6 blue
**red** = highlighted (but we don't know why)
解决方案
try (java.sql.Connection conn = plugin.SQL.getConnection();
PreparedStatement ps = conn.prepareStatement("SELECT ID FROM playerinfo WHERE COLOUR = ?");) {
ps.setString(1, colour);
java.util.ArrayList<Integer> ids = new ArrayList<>();
ResultSet rs = ps.executeQuery();
while (rs.next()) {
ids.add(rs.getInt(1));
}
}
catch (SQLException e) {
e.printStackTrace();
}
- 使用try-with-resources确保关闭
PreparedStatement
和Connection
. next()
对方法(in ) 的每次调用都ResultSet
将返回结果集中的下一行。从行中提取 ID 并将其添加到ArrayList
.- 如果您想要一个数组,而不是
ArrayList
,您可以使用类ArrayListArrayList
中的一种方法转换为数组。toArray
也许这也会有所帮助:
https ://docs.oracle.com/javase/tutorial/jdbc/index.html
推荐阅读
- aws-lambda - 如何在 AWS SAM 中指定映射模板
- getstream-io - 如何在所有用户之间设置共享提要?
- git - 将 Mercurial 存储库移动到现有 git 存储库的子目录中
- javascript - 结合使用 delay(0) 和 refCount()
- javascript - 在 div 和他的所有孩子中搜索文本
- java - spring boot:如何仅在 jenkins 上运行测试类?
- python - 并行循环中的引用迭代器
- excel - 日期格式的 Oracle SQL DB 导入 Excel 问题
- c# - 从基于 SQL Server 的代码优先 EF 迁移到 SQLite EF
- c# - 使用 docfx 从 Visual Studio 生成 pdf 文档会引发错误:“wkhtmltopdf 是生成 PDF 时的先决条件”