2016-10-15 1 views
-1

Im используя следующий код для регистрации.PSQLException бросается из-за результатов

@POST 
@Path("/userreg") 
@Consumes(MediaType.APPLICATION_JSON) 
public Response userRegistration(String msg) { 
    String songString = "requesting"; 
    JSONObject jsonObj = new JSONObject(msg); 
    ArrayList<Trending> output = new ArrayList<>(); 
    PreparedStatement stmt = null; 
    try { 
     Connection connection = MyResource.getConnection(); 
     String query = "SELECT * FROM users where username = ? OR mail = ?;"; 
     PreparedStatement checkStmt = connection.prepareStatement(query); 
     checkStmt.setString(1, jsonObj.getString("username")); 
     checkStmt.setString(2, jsonObj.getString("mail")); 
     ResultSet rs = checkStmt.executeQuery(); 
     if (rs.getString("username").equals(jsonObj.getString("username")) | rs.getString("mail").equals(jsonObj.getString("mail"))){ 

     } else { 
      stmt = connection.prepareStatement(
        "INSERT INTO USERS (username , mail , dob , age , gender , mac , ip , password , registration) VALUES(?, ? , ? , ? , ? , ? , ? , ? , ?) ;"); 
      stmt.setString(1, jsonObj.getString("username")); 
      stmt.setString(2, jsonObj.getString("mail")); 
      stmt.setString(3, jsonObj.getString("dob")); 
      stmt.setString(4, jsonObj.getString("age")); 
      stmt.setString(5, jsonObj.getString("gender")); 
      stmt.setString(6, jsonObj.getString("mac")); 
      stmt.setString(7, jsonObj.getString("ip")); 
      stmt.setString(8, Utilities.randomAlphaNumeric(7)); 
      stmt.setString(9, jsonObj.getString("registration")); 
      stmt.executeQuery(); 
     } 

     songString = "success"; 

    } catch (Exception ex) { 
     songString = "failure" + ex; 
    } 
    return Response.status(200).entity(songString).build(); 
} 

Im получая ошибку при слежении

failureorg.postgresql.util.PSQLException: ResultSet не позиционируется должным образом, возможно, вам нужно позвонить в следующем.

Как я могу разобраться в этом? Я хочу проверить, существует ли имя пользователя или почтовый адрес. и только если он существует, я хочу, чтобы пользователь мог зарегистрироваться.

ответ

1

Вам необходимо позвонить по следующему методу на объекте resultset. A resultSet курсор изначально расположен перед первой строкой; первый вызов метода next() делает первую строку текущей строкой.

ResultSet rs = checkStmt.executeQuery(); 
if (rs.next() && (rs.getString("username").equals(jsonObj.getString("username")) | rs.getString("mail").equals(jsonObj.getString("mail")))){