2015-02-07 6 views
-2

Могу ли я узнать, как лучше всего проверять переменную, проверяя наличие дубликатов в моей базе данных?Проверка дубликатов с помощью ResultSet.getString

Я попробовал несколько различных способов уже, но всякий раз, когда первое if условие не выполнено, пустая страница будет показана

Edit: Я думал об установке username уникальное значение, но это будет вступают в конфликт с моим первичным ключом, staff_id

<%-- Checking for duplicates - Reading --%> 
<% 
if(request.getParameter("Check") != null){ 
     try{ 
     Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
     String conURL1= "jdbc:odbc:HOD_DATA"; 
     Connection con1 = DriverManager.getConnection(conURL1); 
     Statement st1 = con1.createStatement(); 
     String query = "select username from Staff where username = '"+sUsername+"'"; 
     ResultSet rs = st1.executeQuery(query); 

     while(rs.next()){ 
     result = rs.getString("username"); 

     if(result.equals(sUsername)) { 
     response.setHeader("Refresh", "3; URL=StaffReg.jsp"); 
     out.println("You may not use this username."); 

     } 

     else if(rs.wasNull()) { 
     response.setHeader("Refresh", "3; URL=StaffReg.jsp"); 
     out.println("You may use this username."); 

     } 


     } 
     rs.close(); 
     st1.close(); 
     con1.close(); 
     } 

     catch(Exception e){ 
     out.println(e); 
     } 
} 

     %> 
+0

Зачем его перепроверять. просто положите 'else' вместо' else if' –

+0

Это не имеет смысла. Запрос уже проверяет условие, которое вы утверждаете. И здесь нет ничего, что проверяет дубликаты. – EJP

+0

Я уже пробовал это. Проверка никогда не переходит на второе условие, даже если это 'else' – Ashton

ответ

0

Вы можете получить счет и проверить, если число> 0

Вот example.Hope это поможет.

public int checkUsername(String sUsername) { 
     Connection conn = null; 
     PreparedStatement pstmt = null; 
     ResultSet rs = null; 
     int count =0; 
     try{ 
      conn = DatabaseManager.con(); 
      String query="select count(*) from Staff where username=? "; 
      pstmt=conn.prepareStatement(query); 
      pstmt.setString(1,sUsername); 
      rs=pstmt.executeQuery(); 

      while (rs.next()) { 
       count=rs.getInt("count(*)"); 

      } 

     } 
     catch(Exception e){ 
      e.printStackTrace(); 
     } 
     finally { 
      if (rs != null) 
       DatabaseManager.rs_close(rs); 
      if (pstmt != null) 
       DatabaseManager.stmt_close(pstmt); 
      if (conn != null) 
       DatabaseManager.con_close(conn); 
     } 
     return count; 

    } 

// Вызов метода и проверка.

if(checkUsername("Amanda")>0){ 

       System.out.println("user exists"); 


      }