-
Mình đang có 2 bảng USERS (id, username, password) ; MONEY(id, amount, numb): id int primary key
-
Mình đã tạo xong swingLogin (nhập user, pass) xong thì hiện ra Button “xem số dư” …
-
Mình đã tạo xong Hàm CheckAmount " select amount from MONEY where id = ? " (nhập id vào cho nó select)
-
Giờ khi mình viết Hàm GetId lấy id từ USERS
-
Để khi Action Button "xem số dư " mình gọi hàm GetId để nhập vào Hàm CheckAmount
-
“số dư của bạn là” + CheckAmount(GetId) +“VND” ;
-
Vậy viết cái Hàm GetId kiểu gì vậy các bác, mình nghĩ mãi mà chưa ra đc ???
Java-Swing Làm ứng dụng cho máy ATM
Khi đăng nhập xong sao bạn không trả về id user luôn?
Nếu username của bác không sử dụng dấu tiếng Việt thì có thể viết hàm getId(String username) như sau
public int getId(String username) {
PreparedStatement ps = connection.prepareStatement("SELECT ID FROM USERS WHERE USERNAME LIKE ?");
ps.setString(1, username);
ResultSet rs = ps.executeQuery();
return (rs.next()) ? rs.getInt(1) : 0; // 0 tức không tìm thấy id để khỏi bị NullPointerException
}
Hoặc sau khi đăng nhập thành công thì get ra đối tượng Users luôn rồi lưu vào biến toàn cục của class xử lý. Logout thì reset biến đó đi
private User user; // đối tượng user gồm id, username và password
public void login(String username, String password) {
// xử lý login
// Nếu login thành công
user = new User(id, username, password);
}
Đúng rồi đó mình cũng làm 2 cách như 2 bác đó.
Nhưng mà ở Class CheckAmount khi mình gọi ra GetId(username) hoặc CheckLogin(username,password)
thì đều phải truyền username or password vào.
VD : CheckAmount(GetId(username));
username này thì mình lấy ở đâu.
Vì mình viết mỗi Action Button một Class riêng nên username và password chỉ nhập ở CheckLogin
Còn những Class kia mình ko biết gọi nó ra kiểu gì
Bạn có biết khái niệm Singleton không ? Đó là class mà chỉ có duy nhất 1 object được khởi tạo, và được sử dụng bởi các object khác trong 1 application.
VD:
class CurrentUser(){
/// Các object khác sẽ truy cập vào CurrentUser dưới này
public static CurrentUser user;
private String username;
private String password;
// set private constructor để ngăn không cho object khác tạo mới CurrentUser bừa bãi
private CurrentUser(){
}
public static CurrentUser getInstance(){
if(user == null){
user = new CurrentUser();
}
return user;
}
// getter va setter de thao tac vs username va password
}
Done, nếu kiểm tra user có tồn tại ttrong database thì bắt đầu gọi phương thức getInstance từ class CurrentUser để tạo mới CurrentUser object (nếu như chưa khởi tạo) rồi pass username, password vào object này. Nếu muốn lấy username, password của user hiện tại thì gọi lại object đó từ getInstance() rồi lấy data của nó thôi 
Ok đê mình làm thử xem !!!
Mình có edit lại vì có sai sót, bạn có thể xem lại 
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?