Say I have 2 columns, the first one is ID and the second one is colour.
How would I search for a specific colour and get all of the id’s that are in the same row as the colour?
How would I turn the results into an array?
I know how to do a simple string.
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(); }
This is what it should look like
id colour 1 **red** 2 blue 3 green 4 **red** 5 **red** 6 blue **red** = highlighted (but we don't know why)
Advertisement
Answer
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(); }
- Use try-with-resources to make sure that you close the
PreparedStatement
and theConnection
. - Each call to method
next()
(inResultSet
) will return the next row in the result set. Extract the ID from the row and add it to theArrayList
. - If you want an array, rather than
ArrayList
, you can convertArrayList
to array with one of thetoArray
methods in class ArrayList.
Maybe this will also help:
https://docs.oracle.com/javase/tutorial/jdbc/index.html