如何使用 Jackcess 检查 Java 中的电子邮件地址和密码?
How do I check email address and password in Java using 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);
}
});
这是创建并填充后的数据库:
https://i.stack.imgur.com/2UUh8.png
这是示例输入和输出:
https://i.stack.imgur.com/HMjzc.png
你们知道用 Jackcess 来做这个吗?
根据 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
}
}
NOTE: Make sure the file path is absolute or else row will return null
我希望创建使用电子邮件地址和密码作为登录详细信息的登录页面。反正有没有使用 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);
}
});
这是创建并填充后的数据库: https://i.stack.imgur.com/2UUh8.png
这是示例输入和输出: https://i.stack.imgur.com/HMjzc.png
你们知道用 Jackcess 来做这个吗?
根据 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
}
}
NOTE: Make sure the file path is absolute or else row will return null