Я пытаюсь аутентифицировать пользователя (логин) в java, используя базу данных MySQL. Я хочу иметь возможность сделать это в консоли. Это то, что я до сих пор: Мой главный class-Как использовать базу данных MySQL для аутентификации пользователя?
import java.util.Scanner;
public class main {
public static void main(String args[]){
if (args.length < 2)
return;
login meth = new login();
Scanner in = new Scanner(System.in);
String username;
String password;
System.out.println("");
System.out.println("Username: ");
username = in.next();
System.out.println("2. Account Holder");
password = in.next();
System.out.println("");
meth.loginDetails(username, password);
login checker = new login();
boolean rc = checker.loginDetails(args[0], args[1]);
System.out.println("The result is: " + Boolean.toString(rc));
in.close();
}
}
И это мой класс, где я попытке подключиться к базе данных и запрашивать у него.
import java.sql.*;
public class login {
public void databaseConnection(){ //swapping index a and index b around
try {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = null;
conn = DriverManager.getConnection("jdbc:mysql://localhost/loginTest","root", "");
System.out.println("Database is connected !");
conn.close();
}
catch(Exception e){
System.out.println("Do not connect to DB - Error:"+e);
}
}
static final String CONN_URL = "jdbc:mysql://localhost/loginTest";
static final String DB_USER = "root";
static final String DB_PASSWORD = "";
public boolean loginDetails(String accountNumber, String password){
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
boolean passwdOK = false;
try {
// Establish the connection.
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
con = DriverManager.getConnection(CONN_URL, DB_USER, DB_PASSWORD);
// Create and execute an SQL statement
String sqlst = "SELECT Password FROM customer " +
" WHERE Account Number = '" + accountNumber + "'";
stmt = con.createStatement();
rs = stmt.executeQuery(sqlst);
// Check the return data
if (rs.next()) {
String passwdSaved = rs.getString(1).trim();
if (passwdSaved.equals(password.trim()))
passwdOK = true;
}
rs.close();
stmt.close();
}
catch (Exception e) {
e.printStackTrace();
}
finally {
if (con != null) try { con.close(); } catch(Exception e) {}
}
return passwdOK;
}
}
Моя база данных называется Customer, а отдельные столбцы называются номером счета, паролем.
В настоящий момент, когда я запускаю программу, она мгновенно завершается. Без отображения каких-либо строк печати.
Так что мой вопрос: как получить результат true или false, чтобы имя пользователя и пароль совпадали. И если он был ложным, пусть они повторили попытку, и если его истинная нагрузка - это меню переключателей?
Как вы выполняете эту программу? Вы пытались запустить его с помощью отладчика и точки останова в начале программы? В качестве примечания: почему вы храните пароли открытого текста? Вы должны быть хеширующими паролями, никогда не сохраняйте их открытым текстом (даже в прототипе программы, поскольку у них есть привычка не выбрасываться)! –