# 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();
}
}