java - 如何从 MySql 数据库中获取所有用户并放入 arraylist
问题描述
我正在创建一个 java 应用程序,它允许用户注册、登录和更新他们的详细信息。数据存储在已成功连接到我的应用程序的 MySQL 数据库中。
我希望能够获取用户的所有数据,这些数据将用于创建用户对象并制作所有用户的数组列表,其类型为“user”。
我想知道的是,ID 是否是“用户”对象的一个很好的属性,因为我有他们的名字和用户名(这对用户来说是唯一的)。
当用户登录到他们的帐户时,用户列表应该包含 arraylist 中的所有用户并定位到登录用户。我不知道该怎么做。
到目前为止,我已经上传了我当前的代码:
public class UserAccountList {
private static UserAccountList instance;
private ArrayList<user> userList;
user newUser = null;
int currentUser;
protected UserAccountList() throws IOException {
this.userList = new ArrayList<>();
readDatabase();
}
public static void main(String[] args) throws IOException{
ArrayList<user> userList1 = new UserAccountList().getUserList();
for(int i=0;i<userList1.size();i++){
System.out.println(userList1.get(i).getUsername());
}
}
public ArrayList getUserList() throws IOException {
return this.userList;
}
public static UserAccountList getInstance() throws IOException {
if (instance == null) {
instance = new UserAccountList();
}
return instance;
}
private void readDatabase() throws IOException {
PreparedStatement ps;
ResultSet rs;
String query = "SELECT * FROM `user`" ;
try{
ps = MyConnection.getConnection().prepareStatement(query);
rs = ps.executeQuery();
while(rs.next() != false){
String uname = rs.getString("username");
String pass = rs.getString("password");
String fname = rs.getString("firstname");
String lname = rs.getString("lastname");
String email = rs.getString("email");
String uni = rs.getString("university");
String course = rs.getString("course");
user newUser = new user(fname, lname, uname, pass, email, uni, course);
addUser(newUser);
}
}
catch (SQLException ex) {
Logger.getLogger(FXMLRegistrationController.class.getName()).log(Level.SEVERE, null, ex);
}
}
public void addUser(user newUser){
userList.add(newUser);
return;
}
}
解决方案
我的建议是尝试
while(rs.next()){
String uname = rs.getString(1);
String pass = rs.getString(2);
String fname = rs.getString(3);
String lname = rs.getString(4); //Presuming they are in this order
String email = rs.getString(5);
String uni = rs.getString(6);
String course = rs.getString(7);
user newUser = new user(fname, lname, uname, pass, email, uni, course);
addUser(newUser);
}
从我的角度来看,拥有 ID 总是一个好主意,但我认为在你的情况下没有必要。至于定位用户,我认为它是currentUser
变量。当您通过验证并获取登录的用户时。使用userList.indexOf(loggedInUser)
推荐阅读
- php - 用 phpunit 模拟 mongodb
- kubernetes - Istio (1.6.4) 在 K8s 上进行日志聚合的最佳实践
- swift - 如何使用选择器选择的值进行计算并替换绑定变量?
- ruby-on-rails - Ruby on Rails 6 - 已创建下拉菜单但无法正常工作
- python - 如何用逗号分隔文本,后跟空格,而不是空格后的数字?
- encryption - 在 linphone 的 SRTP 中实现 AES CM
- go - go-gin 请求取消
- google-cloud-firestore - firestore 更新或添加成功状态
- c++ - 如何在 C++ 中从 LPVOID 转换为 LPBYTE?
- python - PermissionError:[Errno 13] openpyxl python中的权限被拒绝