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