验证 JavaFX 数据库中已存在的值

当我使用 memberId 注册会员时,如何检查用户 id 是否已存在于 members 表中?我试过下面的方法。主键是 MemberID


MemberDbController.java


public static boolean checkMemberID(int memberId){

        boolean memberIdExists = false;


        Connection conn=DBConnection.getDBConnection().getConnection();

        Statement stm = conn.createStatement();

        ResultSet rst = stm.executeQuery("SELECT * FROM members WHERE memberId='"+memberId+"'");


        String id;

        if (rst.next()){

            id = rst.getString("memberId");

            if(id.equals(memberId)){

                memberIdExists = true;

            }

        }

        return memberIdExists;

    }

MemberUiController.java


@FXML

void addMember(ActionEvent event) {


     //Getting Value from User Input

     int memberId = Integer.parseInt(memberIdField.getText()); 

     String name = nameField.getText();

     String doa = doaField.getText();

     RadioButton selectedRadioButton = (RadioButton) 

     Gender.getSelectedToggle(); //Getting Selected Radio Button

     String gender = selectedRadioButton.getText();

     String email = emailField.getText();

     String phone = phoneField.getText();


     try {


         if(MemberDbController.checkMemberID(memberId)){


             Member member = new Member(memberId,name,doa,gender,email,phone);

             int i = MemberDbController.AddMember(member);


             if (i > 0) {                            

                 //Insert Success Alert                                       

             }

             else{

                //Insert Failed Alert

             }


         }else{

             //Member ID Already Exists Alert..!

         }


    } catch (ClassNotFoundException e) {

        e.printStackTrace();

    } catch (SQLException e) {

        e.printStackTrace();

    }

}


它会针对重复条目和新条目抛出一个已经存在的警报。


鸿蒙传说
浏览 146回答 1
1回答

阿晨1998

你正在比较String一个Integer对象。这总是产生false:public static boolean checkMemberID(int memberId) ... {    int memberId    ...    String id;    ...    if(id.equals(memberId)){编译后的版本 id.equals(memberId)是一样的id.equals(Integer.valueOf(memberId))无论如何都不需要检查列值,因为您的WHERE子句不会接受此列中具有不同值的行。(这里与字符串文字相比对我来说似乎很奇怪。你确定列的类型是文本类型吗?)以下内容应该足够了:public static boolean checkMemberID(int memberId) throws SQLException, ClassNotFoundException {    Connection conn=DBConnection.getDBConnection().getConnection();    Statement stm = conn.createStatement();    ResultSet rst = stm.executeQuery("SELECT * FROM members WHERE memberId='"+memberId+"'");    return rst.next();}此外,如果值不存在但当前存在,则addMember您将结果视为返回。trueSQLIntegrityConstraintViolationException请注意,假设这是表的唯一约束,尝试插入查询立即捕获 a 实际上可能更好。否则您可能需要检查有问题的错误,因为错误消息取决于所使用的数据库。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java