首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用用户提供的用户名/密码的Java登录

使用用户提供的用户名/密码的Java登录
EN

Stack Overflow用户
提问于 2015-12-13 12:35:33
回答 1查看 3K关注 0票数 0

我正在尝试制作一个使用DBMS的用户和密码的登录屏幕。澄清:没有一个表的用户,只有数据库访问权。

代码语言:javascript
复制
private String username = "root";
private String password = "root";
private String classname = "org.postgresql.Driver";
private String url = "jdbc:postgresql://localhost:5432/bd";

为了明确起见,我想从用户输入中获取用户和密码,而不是硬编码。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-14 16:10:31

如果您只需要某个给定用户的连接并传递使用:

代码语言:javascript
复制
public Connection getConnection(String user, String pass) {
  String url = "jdbc:postgresql://localhost:5432/bd";
  return DriverManager.getConnection(url, user, pass);
}

链接到一些代码中,以说明如何做到这一点:

代码语言:javascript
复制
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();
        }
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34251124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档