2016-12-10 2 views
0

Я делаю простую форму для входа, где я буду запрашивать базу данных для пользователя и пароли и сохранять их все (это может быть не самый лучший/безопасный способ сделать это, но я все еще участвую, и я не хочу расширенный код) в arraylists, чтобы затем иметь возможность сравнивать их, используя индекс из них (если индекс тот же, то он будет ассоциироваться как одна и та же учетная запись). Я могу заставить запрос работать, но я не могу сохранить значение строки, один за другим, в списке ... С моим кодом я могу войти с самой первой учетной записью, но другие не работают. Может кто-нибудь объяснить мне, как это сделать (постарайтесь не сдавать готовый код сразу, я хочу учиться).Запрос базы данных MySQL и сохранение целого столбца в ArrayList

ответ

0

Эй вы выглядите новичком в java, если я не ошибаюсь, вот последовательность шагов, которые вам нужно выполнить, чтобы извлечь всех пользователей и их пароли из базы данных Mysql.

Step-1 Establish the connection with your databases and table. 
Step-2 Use the ResultSet interface of JDBC API to query the database for users and thier passwords. 
Step-3 Get the users from ResultSet and put it into one arrayList called User using the add method of arraylist as:- arraylistobj.add(user). 
Steps-4 Now Get the passwords from resultSet into second arrayList called Passwords using the add method arraylistobj.add(password). 
Steps-5 As you mentioned you want to compare arraylist objects here is a Sample code: 

    for (int i = 0; i < list.size(); i++) { 
    for (int j = i+1; j < list.size(); j++) { 
     // compare list.get(i) and list.get(j) 
    } 
} 

Instead of using two arraylist's one for storing users from database and other for storing passwords, 
it is much better to use Maps if you are familiar with as the store data in key value pair, 
in this example user could be the key and passwords could be the values associated with the keys. 
0

Я не совсем понимаю, что вы пытаетесь выполнить, но посмотрите на следующий пример. Я бы рекомендовал создать объект User, в котором вы можете сохранить свои имя пользователя и пароль, и создать ArrayList для пользователя. Вы можете использовать индекс столбца для получения значений. Дайте мне знать, если возникнут какие-либо вопросы или у вас есть дополнительные критерии.

public class DBExample { 

private static final String USERNAME = ""; 
private static final String PASSWORD = ""; 
private static final String CONN_STRING = ""; 

private static Connection getConnection() throws SQLException { 
    return DriverManager.getConnection(CONN_STRING, USERNAME, PASSWORD); 
} 

public static List<User> processQuery(String sql){ 

    List<User> results = new ArrayList<>(); 

    try (
      Connection conn = getConnection(); 
      Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); 
      ResultSet rs = stmt.executeQuery(sql) 
    ) { 

     while(rs.next()) { 
      results.add(new User(rs.getString(1), rs.getString(2))); 
     } 

    } catch (SQLException e) { 
     e.printStackTrace(); 
    } 

    return results; 
} 
} 

Класс пользователя:

public class User { 

private String username; 
private String password; 

public User(String username, String password) { 
    this.username = username; 
    this.password = password; 
} 

public String getUsername() { 
    return username; 
} 

public void setUsername(String username) { 
    this.username = username; 
} 

public String getPassword() { 
    return password; 
} 

public void setPassword(String password) { 
    this.password = password; 
} 

}

Смежные вопросы