我是一个在netbeans工作的新java程序员,我正在尝试基于sqlite数据库进行登录 . 在数据库中,我有一个用户名列,一个密码列和一个位置列 . 登录的目的是当用户输入他的用户名和密码并按下登录按钮时,程序将连接到sqlite数据库,访问数据库上的特定表,检查用户名和密码字段是否匹配,然后根据他们的位置(管理员,经理或教师),他们将转到不同的jframe . 目前,我创建了一个代码,它将从登录jframe中获取jtextfield并通过sqlite数据库运行任何匹配项,将结果保存到jdialog中,隐藏jtextfields,然后依赖于用户名和密码jtextfield在jdialog中是否为空,取决于用户名具有的位置(管理员,经理或教师),登录jframe将以相应的jframe开口关闭 .
这是我连接到sqlite数据库的代码
private void loginDatabase(){
//Checks to see if Login is Administrator and then sends him to his respective location
String userName1 = Usr1.getText();
String passWord1 = Pass1.getText();
try{
String query1 = "select * from LoginManager where Username='"+userName1+"' and Password='"+passWord1+"' and Position=?";
PreparedStatement pst1 = conn.prepareStatement(query1);
ResultSet rs1 = pst1.executeQuery();
if (rs1.next()){
String add1 = rs1.getString("Username");
usernameCon1.setText(add1);
String add2 = rs1.getString("Password");
passwordCon1.setText(add2);
String add3 = rs1.getString("Position");
positionCon1.setText(add3);
}
pst1.close();
rs1.close();
}catch(Exception e){
JOptionPane.showMessageDialog(null, e);
}
}
这是我的实际工作代码(目前,这两种方法都没有附加到按键输入按键,因为我试图先将它们分成几个类,然后将它们放在那里)
private void login(){
loginDatabase();
if (usernameCon1.getText().matches(regex) &&passwordCon1.getText().matches(Pass1.getText()) && positionCon1.getText().equals("Administrator")){
Admin();
usernameCon1.setText("");
passwordCon1.setText("");
positionCon1.setText("");
Usr1.setText("");
Pass1.setText("");
}
else if (!usernameCon1.getText().isEmpty() && !passwordCon1.getText().isEmpty() && positionCon1.getText().equals("Manager")){
}
else if (!usernameCon1.getText().isEmpty() && !passwordCon1.getText().isEmpty() && positionCon1.getText().equals("Teacher")){
}
else {
JOptionPane.showMessageDialog(null, "Invalid Login", "Invalid Login", JOptionPane.ERROR_MESSAGE);
}
}
最终,我遇到了if if else声明的问题 .
我为疯狂的语法道歉 . 当我开始这个项目时,我对编码礼仪真的很陌生 . 我一直试图在整个程序中改变我的习惯,所有其他程序都将采用适当的格式 .
再次感谢您的帮助 .
EDIT: 所以我想通了,我只是从sql语句中删除了额外的东西,只根据用户名和密码获取信息 .
String query1 = "select * from LoginManager where Username='"+userName1+"' and Password='"+passWord1+"'";
1 回答
要获得更好的代码结构,请使用User类 .
要正确使用
PreparedStatment
,请准备参数 . 像这样:loginDatabase
方法返回用户对象或null
case登录失败最后,检查用户位置 .