我正在开发一个个人项目,我正在努力想出一个密码存储系统。 我目前卡住的地方是我试图在网站,用户名和密码中输入登录数据库的部分。
这是我到目前为止所做的:
import java.sql.*;
import java.util.Optional;
import java.util.Properties;
public class Database {
private Properties connectionProps = new Properties();
private Connection conn = null;
private final String JDBC_URL = "jdbc:postgresql:pswdmgr";
public Database(){
connectionProps.put("user", "******");
connectionProps.put("password", "*******");
}
public void addLogin(Login login){
try (Connection conn = DriverManager.getConnection(JDBC_URL,connectionProps)){
String userName = user.getUserName();
PreparedStatement stmt = conn.prepareStatement("INSERT into public.user_passwords (user_id,site_name,username, password) values (?,?,?,?)");
PreparedStatement id = conn.prepareStatement("SELECT id FROM public.users WHERE username = ?");
id.setString(1,userName);
ResultSet rs = id.executeQuery();
if(rs.next()) {
stmt.setInt(1, rs.getInt(1));
stmt.setString(2, login.getWebsite());
stmt.setString(3, login.getLoginUserName());
stmt.setString(4, login.getLoginPswd());
stmt.executeUpdate();
}
} catch(SQLException e){
e.printStackTrace();
System.exit(1);
}
}
public int getUserId(User user) {
int anInt = 0;
try (Connection conn = DriverManager.getConnection(JDBC_URL, connectionProps)) {
String userName = user.getUserName();
PreparedStatement id = conn.prepareStatement("SELECT id FROM public.users WHERE username = ?");
id.setString(1, userName);
ResultSet rs = id.executeQuery();
if (rs.next()) {
anInt = rs.getInt(1);
}
} catch (SQLException e) {
e.printStackTrace();
System.exit(2);
}
return anInt;
}
public Connection getConnection() throws SQLException {
return conn;
}
}
这是我的Login类,我试图将用户的登录信息添加到user_password数据库中。我有一个单独的User类,用于存储用户名和密码,并为用户初次登录我的应用程序创建一个唯一的ID。用户数据库和user_password数据库中的密钥都是id。
但是,我似乎无法想出一种方法将用户类表中的id拉入addLogin方法。
我不确定这是否可行,但我是Java的新手,所以我愿意接受任何建议。
如果有人需要我进一步解释我想要完成的事情,请告诉我。