【发布时间】:2019-01-06 11:47:06
【问题描述】:
我正在创建一个 java 应用程序,它允许用户注册、登录和更新他们的详细信息。数据存储在已成功连接到我的应用程序的 MySQL 数据库中。
我希望能够获取用户的所有数据,这些数据将用于创建用户对象并制作所有用户的数组列表,类型为“user”。
我想知道的是,对于“用户”对象,ID 是否是一个很好的属性,因为我有他们的姓名和用户名(这对用户来说是唯一的)。
当用户登录到他们的帐户时,用户列表应该包含数组列表中的所有用户并定位到登录用户。我不知道该怎么做。
到目前为止,我已经上传了我当前的代码:
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;
}
}
【问题讨论】:
-
当前代码的输出是什么?请删除表名字符串查询的单引号 = "SELECT * FROM user" ;
-
程序没有报错,我可以正常登录和注册用户。唯一的问题是它只对数组第一个位置的用户进行更改,因为我不知道如何获取当前登录用户的位置。
标签: java mysql database arraylist jdbc