簡體   English   中英

使用用戶提供的用戶名/密碼進行Java JDBC登錄

[英]Java JDBC Login with user-provided username/password

我正在嘗試制作一個使用DBMS的用戶和密碼的登錄屏幕。 需要說明的是:沒有用戶表,只有數據庫訪問權限。

private String username = "root";
private String password = "root";
private String classname = "org.postgresql.Driver";
private String url = "jdbc:postgresql://localhost:5432/bd";

明確地說,我想從用戶輸入中獲取用戶名和密碼,而不是對其進行硬編碼。

如果您只需要某個給定用戶的連接並通過使用:

public Connection getConnection(String user, String pass) {
  String url = "jdbc:postgresql://localhost:5432/bd";
  return DriverManager.getConnection(url, user, pass);
}

鏈接了一些代碼以顯示如何實現:

import java.awt.GridLayout;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

public class DynamicConnection {

    protected String user = null;
    protected String pass = null;

    protected String url;

    public DynamicConnection(String url) {
        this.url = url;
    }

    public Connection getConnection() throws SQLException {
        while(user == null || pass == null) {
            askForUsernamePassword();
        }
        return DriverManager.getConnection(url, user, pass);
    }

    private void askForUsernamePassword() {
        JPanel panel = new JPanel(new GridLayout(2,2));
        panel.add(new JLabel("Username"));
        JTextField tf = new JTextField();
        panel.add(tf);
        panel.add(new JLabel("Password"));
        JPasswordField pf = new JPasswordField();
        panel.add(pf);
        if(JOptionPane.OK_OPTION == JOptionPane.showConfirmDialog(null, panel)) {
            user = tf.getText().trim();
            pass = pf.getText().trim();
        }       
    }

    public static void main(String[] args) {
        try {
            Connection con = new DynamicConnection("jdbc:postgresql://localhost:5432/bd").getConnection();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM