如何仅从MS Access中自己的行检查用户名和密码? [Jackcess]

时间:2017-05-03 03:57:53

标签: java database ms-access jackcess

这是我使用jackcess创建的数据库:

try{
                        if(!f.exists()){

                            Database db=DatabaseBuilder.create(Database.FileFormat.V2000,new File(file));
                            Table table=new TableBuilder("Membership Details")
                            .addColumn(new ColumnBuilder("Username",DataType.TEXT))
                            .addColumn(new ColumnBuilder("Full Name",DataType.TEXT))
                            .addColumn(new ColumnBuilder("Email Address",DataType.TEXT))
                            .addColumn(new ColumnBuilder("Password",DataType.TEXT))
                            .addColumn(new ColumnBuilder("Phone number",DataType.TEXT))
                            .addColumn(new ColumnBuilder("Credit/Debit Card No",DataType.TEXT))
                            .addColumn(new ColumnBuilder("Expiry Month",DataType.TEXT))
                            .addColumn(new ColumnBuilder("Expiry Year",DataType.TEXT))
                            .addColumn(new ColumnBuilder("Country of origin",DataType.TEXT))

                            .toTable(db);
                            if(!pw.equals(c_pw)){
                                JOptionPane.showMessageDialog(null, "Password does not match","Password incorrect",JOptionPane.ERROR_MESSAGE);
                            }
                            else{
                            table.addRow(u,n,e,pw,p,c,ex_m,ex_y,city);
                            x++;
                            }
                        }
                        else{
                            Database db=DatabaseBuilder.open(f);
                            Table table=db.getTable("Membership Details");
                            if(!pw.equals(c_pw)){
                                JOptionPane.showMessageDialog(null, "Password does not match","Password incorrect",JOptionPane.ERROR_MESSAGE);
                            }
                            else{
                            table.addRow(u,n,e,pw,p,c,ex_m,ex_y,city);
                            x++;
                            }
                        }


                        if(x>0){
                            JOptionPane.showMessageDialog(null, "Sign up complete","Complete",JOptionPane.INFORMATION_MESSAGE);
                            new MainMenu().start(frame);
                            frame.setMaximized(false);
                            frame.setMaximized(true);


                        }
                    }catch(Exception error){
                        error.printStackTrace();

这是用户名和密码检查的地方:

try {
                Table table=DatabaseBuilder.open(file).getTable("Membership Details");

                Row u=CursorBuilder.findRow(table, Collections.singletonMap("Username", user));
                Row p=CursorBuilder.findRow(table, Collections.singletonMap("Password", pw));
                if((file.exists())&&(!file.isDirectory())){
                    if((u!=null)&&(p!=null)){
                        Cursor cursor=CursorBuilder.createCursor(table);
                        boolean found=cursor.findFirstRow(Collections.singletonMap("Username", user));
                        if(found==true)
                            welcome.setText("Welcome "+cursor.getCurrentRowValue(table.getColumn("Full Name"))+" to Xtreme Airlines");
                            FlowPane flow=new FlowPane();
                            flow.getChildren().add(welcome);
                            flow.setAlignment(Pos.TOP_RIGHT);
                            panel.setTop(flow);
                            panel.setRight(logout);
                            status=true;
                    }

                    else
                        JOptionPane.showMessageDialog(null, "Wrong username or password","Incorrect",JOptionPane.ERROR_MESSAGE);
                }
            } catch (IOException e) {
                e.printStackTrace();

除了每个用户名都可以访问每个密码外,一切正常 例如:

  

用户名:Haley123密码:123   用户名:Michael321密码123456

就我而言,Haley123可以使用此方法访问Michael321的密码。我如何确保不会出现这种情况?

0 个答案:

没有答案