@Override
 public void addPersonToDb(Person newPerson) throws AddPersonException {
   try (Connection cn = DatabaseUtil.getConnection()) {
     String queryString = "INSERT INTO PHONEBOOK (NAME, PHONENUMBER, ADDRESS) VALUES(?, ?, ?)";
     PreparedStatement stmt = cn.prepareStatement(queryString);
     stmt.setString(1, newPerson.getName());
     stmt.setString(2, newPerson.getPhoneNumber());
     stmt.setString(3, newPerson.getAddress());
     stmt.executeUpdate();
     cn.commit();
   } catch (SQLException e) {
     e.printStackTrace();
     throw new AddPersonException("sql Exception");
   } catch (ClassNotFoundException e1) {
     e1.printStackTrace();
     throw new AddPersonException("sql Exception");
   }
 }
 // Override onSetValues() to set the values of the items in the views.
 @Override
 public void onSetValues(Person person, PositionInfo positionInfo) {
   imageViewPerson.setImageResource(person.getResDrawableId());
   textViewName.setText(person.getName());
   textViewPhone.setText(person.getPhoneNumber());
 }
  /** Updates name and/or phone number of person found by index. */
  private void updateRegister() {
    if (register.getCount() < 1) {
      System.err.println("Register does not contain any persons");
      return;
    }
    System.out.println("Enter index: ");
    int index = readIndex();
    if (index == 0) {
      return;
    }
    Person person = register.getPerson(index - 1);
    System.out.println(person.toString());
    System.out.println(
        "What do you want to update?\n1. Name \n2. Phone Number\n3. Name and PhoneNumber\n9. Back");

    try {
      index = Integer.parseInt(readLine());
    } catch (NumberFormatException e) { // if input is not number, return to
      // menu
      System.err.println("Wrong format");
    }
    String name;
    String phoneNumber;
    switch (index) {
      case 1:
        System.out.println("Enter new name: ");
        name = readLine();
        if (register.findPersonByBoth(name, person.getPhoneNumber()) != null) {
          System.err.println("Person with this NAME and NUMBER is already registered!");
          return;
        }
        person.setName(name);
        break;
      case 2:
        System.out.println("Enter new phoneNumber: ");
        phoneNumber = readLine();
        if (register.findPersonByBoth(person.getName(), phoneNumber) != null) {
          System.err.println("Person with this NAME and NUMBER is already registered!");
          return;
        }
        try {
          person.setPhoneNumber(phoneNumber);
        } catch (RuntimeException e) {
          System.err.println("Wrong number format");
        }
        break;

      case 3:
        System.out.println("Enter new name: ");
        name = readLine();
        System.out.println("Enter new phoneNumber: ");
        phoneNumber = readLine();
        if (register.findPersonByBoth(name, phoneNumber) != null) {
          System.err.println("Person with this NAME and NUMBER is already registered!");
          return;
        }
        person.setName(name);
        try {
          person.setPhoneNumber(phoneNumber);
        } catch (RuntimeException e) {
          System.err.println("Wrong number format");
        }
        break;

      case 9:
        return;
      default:
        System.err.println("Wrong index, choose only 1,2,3 or 9");
        break;
    }
    register.updateList();
  }