在Java中使用SQLite实现登录系统有很大困难
我目前在代码中实现登录系统时遇到困难。我试图从用户名和密码jTextFields中检索文本,然后将它们查询到数据库,但它不起作用。目前我正在在Java中使用SQLite实现登录系统有很大困难,java,database,sqlite,Java,Database,Sqlite,我目前在代码中实现登录系统时遇到困难。我试图从用户名和密码jTextFields中检索文本,然后将它们查询到数据库,但它不起作用。目前我正在 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { String query; boolean login = false; String username =
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
String query;
boolean login = false;
String username = jTextField1.getText();
String password = jTextField2.getText();
try{
query = "SELECT (cUsername AND cPassword) FROM Customer WHERE cUsername = '"+username+"' AND cPassword = '"+password+"'";
pst = conn.prepareStatement(query);
pst.setString(1, username);
pst.setString(2, password);
pst.executeQuery();
String userCheck = rs.getString(1);
String passCheck = rs.getString(2);
if((userCheck.equals(username)) && (passCheck.equals(password)))
{
login = true;
System.out.println("It actually works?!");
}
else
{
login = false;
System.out.println("Psyche, that's the wrong number!");
}
}
catch(Exception e){
System.out.println(e);
}
System.exit(0);
}
不幸的是,我不知道为什么。非常感谢您的帮助。您的查询和背后的逻辑需要做很多工作: 首先,如果需要参数化查询,必须使用“?”而不是值。然后pst.setString将工作 其次,您必须影响
pst.executeQuery()代码>到结果集
java.lang.ArrayIndexOutOfBoundsException: 0
查询不应该是select cUsername,cPassword
,比如query=“select(cUsername,cPassword)FROM Customer,其中cUsername=”“+username+”,cPassword=”+password+”
您在哪里定义了rs
?是否应该有ResultSet rs=pst.executeQuery()
?非常感谢您的帮助。现在我关闭了java.sql.SQLException:ResultSet,毫不奇怪,我不知道为什么。我想我刚刚知道我是在(rs.next()){userCheck=rs.getString(1);passCheck=rs.getString(2);}编辑以添加这个rs.next(我忘了它)时做的
query = "SELECT cUsername, cPassword FROM Customer WHERE cUsername = ? AND cPassword = ?";
pst = conn.prepareStatement(query);
pst.setString(1, username);
pst.setString(2, password);
ResultSet rs = pst.executeQuery();
if (rs.next()) {
String userCheck = rs.getString(1);
String passCheck = rs.getString(2);
}