Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何仅从it检查用户名和密码';MS Access中有自己的行吗?[杰克塞斯]_Java_Database_Ms Access_Jackcess - Fatal编程技术网

Java 如何仅从it检查用户名和密码';MS Access中有自己的行吗?[杰克塞斯]

Java 如何仅从it检查用户名和密码';MS Access中有自己的行吗?[杰克塞斯],java,database,ms-access,jackcess,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

这是我使用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的密码。如何确保这种情况不会发生?

您应该搜索用户名和密码符合您要求的所有行,不搜索每个用户如果只有两个用户在数据库中注册,那么我应该更改什么,以便其他用户只能访问其自己的密码,如问题的情况所示?仅通过
用户名
查找该行。然后,假设您找到这样一行,检查该行的
Password
列中的值,看看它是否是您期望的值。