#java #mysql #eclipse
#java #mysql #eclipse
Вопрос:
Мне нужно модифицировать мою программу, чтобы она считывала имя пользователя и пароли из базы данных mysql и вставляла их в хэш-таблицу, но я не могу заставить ее вставить в хэш-таблицу. Что я делаю не так?
private static final Map<String, String> accounts = new Hashtable<>();
public static void main(String args[]){
try {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection con = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/mydb","root","");
Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery("select * from account");
accounts.put(rs.getString("username"),
rs.getString("password"));
while(rs.next())
System.out.println(rs.getString("username") " "
rs.getString("password"));
con.close();
}
catch(Exception e){
System.out.println(e);
}
}
Ответ №1:
Смотрите здесь.
Эта строка не будет работать:
accounts.put(rs.getString("username"),
rs.getString("password"));
Потому что вы не утверждали, что в ResultSet
ней есть какие-либо данные.
Т.е. вы должны вызвать rs.next() по крайней мере (чтобы убедиться, что там есть данные), прежде чем вы сможете извлечь данные из текущей строки.