2015-02-07 89 views
-2

我可以通过检查数据库中是否存在任何重复项来了解验证变量的最佳方法吗?使用ResultSet.getString检查重复项

我试过几种不同的方式了,但只要不满足第一if条件,一个空白页会显示

编辑:我已经想过设定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' – 2015-02-07 08:34:53

+0

这没有意义。该查询已经检查了您正在声明的条件。这里没有任何东西可以检查重复。 – EJP 2015-02-07 08:35:58

+0

我已经尝试过了。检查永远不会进入第二种状态,即使它是'else' – Ashton 2015-02-07 08:36:23

回答

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"); 


      }