Как проверить адрес электронной почты и пароль в Java с помощью Jackcess?

Я хочу создать страницу входа, которая использует адрес электронной почты и пароль для входа в систему. Есть ли способ сделать это с помощью Jackcess? Я избегаю метода ucanaccess, потому что он продолжает выдавать ошибку исключения SQL.

Вот код для входа на страницу:

login.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent action){

            try {
                File file= new File("User_Details.accdb");
                Database data=DatabaseBuilder.open(file);
                if((file.exists())&&(!file.isDirectory())){

                }
            } catch (IOException e) {
                e.printStackTrace();
            }

            }



        });

Вот база данных:

public void actionPerformed(ActionEvent action) {
    if(action.getSource()==next){
        int x=0;
        String s1=t_name.getText();
        String s2=t_email.getText();
        char[]s3=pw.getPassword();
        char[]s4=c_pw.getPassword();
        String pass=new String(s3);
        String conf=new String(s4);
        String s5=t_phone.getText();
        Object s6=city.getSelectedItem();
        String s7=t_cc.getText();
        if((!s1.isEmpty())&&(!s2.isEmpty())&&(!pass.isEmpty())&&(!conf.isEmpty())&&(!s5.isEmpty())&&(!s7.isEmpty())&&(pass.equals(conf))){
            String file="C:/Users/Ameer Izwan/Documents/User_Details.accdb";
        try{
            Database db=DatabaseBuilder.create(Database.FileFormat.V2000,new File(file));
            Table table=new TableBuilder("Login")
            .addColumn(new ColumnBuilder("Email Address",DataType.TEXT))
            .addColumn(new ColumnBuilder("Name",DataType.TEXT))
            .addColumn(new ColumnBuilder("Password",DataType.TEXT))
            .addColumn(new ColumnBuilder("Phone No",DataType.TEXT))
            .addColumn(new ColumnBuilder("Cities",DataType.TEXT))
            .addColumn(new ColumnBuilder("Credit/Debit Card No",DataType.TEXT))
            .toTable(db);


            table.addRow(s2,s1,pass,s5,s6,s7);
            x++;
            if(x>0){    

                for(int i=0;i<=100;i++){
                    final int value=i;
                    SwingUtilities.invokeLater(new Runnable() {
                        public void run() {
                            bar.setValue(value);
                        }
                    });

Это база данных после создания и заполнения:

Это пример ввода и вывода:

Ребята, у вас есть идея использовать для этого Джекесса?

1 ответ

Решение

Из http://jackcess.sourceforge.net/ примера кода мне удалось написать код, который будет работать для вас.

public boolean authenticate(String email, char[] password) {
   Table table = DatabaseBuilder.open(new File("C:/Users/Ameer Izwan/Documents/User_Details.accdb")).getTable("Login");
   Row row = CursorBuilder.findRow(table, 
            Collections.singletonMap("Email Address", email));
   if(row != null) {
     String p = row.get('Password');
   // if the password matches authenticate or else deny
   } else {
   // Dont authenticate
   }
}

ПРИМЕЧАНИЕ. Убедитесь, что путь к файлу является абсолютным, иначе строка вернет значение NULL.

Другие вопросы по тегам