首页 > 解决方案 > 如何从 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)

标签: javamysql

解决方案


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确保关闭PreparedStatementConnection.
  • next()对方法(in ) 的每次调用都ResultSet将返回结果集中的下一行。从行中提取 ID 并将其添加到ArrayList.
  • 如果您想要一个数组,而不是ArrayList,您可以使用类ArrayListArrayList中的一种方法转换为数组。toArray

也许这也会有所帮助:
https ://docs.oracle.com/javase/tutorial/jdbc/index.html


推荐阅读