【问题标题】:Checking for duplicates with ResultSet.getString使用 ResultSet.getString 检查重复项
【发布时间】:2015-04-07 10:35:54
【问题描述】:

我能否知道通过检查我的数据库中是否有任何重复项来验证变量的最佳方法?

我已经尝试了几种不同的方法,但是每当第一个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);
        }
}

        %>

【问题讨论】:

  • 为什么要重新检查。只需输入else 而不是else if
  • 这没有意义。该查询已经检查了您断言的条件。而且这里没有任何东西可以检查重复项。
  • 我已经试过了。即使是else,检查也永远不会进入第二个条件
  • @EJP 你对检查重复有什么建议?非常感谢!
  • 您可以简单地获取它的计数并检查结果计数是否大于 0,然后它已经呈现 else not

标签: java sql jsp resultset duplicate-data


【解决方案1】:

您可以获取计数并检查计数是否> 0

这是一个例子。希望这会有所帮助。

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


            }

【讨论】:

    猜你喜欢
    • 2012-04-11
    • 2013-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-16
    • 2016-10-12
    • 2015-07-14
    • 1970-01-01
    相关资源
    最近更新 更多