2017-04-08 70 views
0

我希望創建登錄頁面,使用電子郵件地址和密碼登錄詳細信息。無論如何要使用Jackcess來做到這一點?我正在避免ucanaccess方法,因爲它不斷給我SQL異常錯誤。如何使用Jackcess在Java中檢查電子郵件地址和密碼?

下面是在頁面的標誌代碼:

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); 
         } 
        }); 

這是創建並填充後的數據庫: https://i.stack.imgur.com/2UUh8.png

這是樣本輸入並輸出: https://i.stack.imgur.com/HMjzc.png

你們有什麼想法使用Jackcess嗎?

+0

什麼是數據庫的架構?每行是否包含用戶名和密碼?你想檢查表的用戶名和密碼,並驗證用戶? – prasanth

+0

我添加了數據庫代碼。現在,我只想先嚐試一行。我想檢查表格中的電子郵件地址(主鍵)和密碼。 – MrBlock2274

回答

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

+0

我將如何替換「[email protected]」?我應該包括什麼指數?它應該是數據庫中的數據吧?非常感謝您爲我提供了一個進步。 – MrBlock2274

+0

您只需將您從登錄頁面獲得的用戶名和密碼傳遞給此方法即可。由於我們按名稱訪問該列,因此您不必提供任何索引。是的,它是數據庫中的數據 – prasanth

+0

如果您的數據庫或表格非常大,您可以在程序開始時打開它們,並在應用程序的整個生命週期中重新使用它們,而不是每次在方法中打開 – prasanth

相關問題