# Fetch ResultSet Once you have a connection, you can now fetch data from the database. Add the following method to the DBase class. - The method creates a **statement** attached to the connection **con**. - The **statement** executes a simple MySQL query. The query results are stored in a **ResultSet rs**. - A pointer is set to before the first record in the **ResultSet**. - A while statement is used to traverse the set. - Finally, the connection is closed. ```java public static void printPupils() { Statement statement; makeConnection(); try { statement = con.createStatement(); ResultSet rs = statement.executeQuery("SELECT * FROM Student"); while (rs.next()) { System.out.println("Forename: " + rs.getString("Forename") + " Surname: " + rs.getString("Surname") + " Gender: " + rs.getString("Gender") + " Form: " + rs.getString("Form")); } con.close(); } catch (SQLException ex) { System.err.println(ex); } } ``` ```java package dbase2016; public class DBase2016 { public static void main(String [] args) { DBase.printPupils(); } } ``` # Add a Record Using a PreparedStatement Note that we use **executeQuery()** to retrieve data and **executeUpdate()** to update the database.  Here we've hard coded the student we're adding.   A later section will show how to add any student. ```java public static void addStudent() { makeConnection(); try { PreparedStatement prep = con.prepareStatement("INSERT INTO Student (Forename, Surname, Gender, Form) VALUES (?,?,?,?)"); prep.setString(1, "Last"); prep.setString(2, "James"); prep.setString(3, "M"); prep.setString(4, "9C"); prep.executeUpdate(); con.close(); } catch (SQLException ex) { System.err.println(ex); } } ``` ```java package dbase2016; public class DBase2016 { public static void main(String [] args) { DBase.addStudent(); DBase.printPupils(); } }