java - 我应该在哪里保存 JDBC 连接详细信息?

标签 java database swing jdbc io

我有一个带有数据库连接的Java Swing 程序。到目前为止,我的要求是对连接详细信息进行硬编码,如下所示。

public void makeConnection() 
    {
        try
        {
             Class.forName("com.mysql.jdbc.Driver");

             con = DriverManager.getConnection("jdbc:mysql://localhost:3306/dbName","root","");

             //System.out.println("Connection Established");
        }
        catch(Exception e)
        {
            e.printStackTrace();

        }
    }

但是,客户的 IT 人员尝试通过 VPN 连接到数据库,但系统拒绝连接,很可能是因为硬编码连接。

现在,我正在寻找以客户端可以编辑的方式存储连接数据的方法。这意味着,像大多数一般程序一样,客户端决定数据库密码、端口等。他可能需要它,因为涉及 VPN。因此,我计划创建一个小对话框,供客户端输入数据库密码、用户和服务器位置。一旦这些数据被保存,程序就会读取它们并进行相应的连接。

但问题是,我该把这些保存到哪里呢?我知道我可以将它们保存在文本文件中,但这是一种不安全的方法,任何人都可以读取它。某种硬编码不是一种选择,因为客户端应该能够编辑他的密码等。

有什么建议吗?

最佳答案

您可以使用 java.util.prefs.Preferences 存储连接详细信息,按照建议here ,或 javax.jnlp.PersistenceService ,按照建议here 。尽管平台通常会保护此类数据免遭随意窥探,但您可以使用 here 所示的方法之一来存储加盐哈希。 .

关于java - 我应该在哪里保存 JDBC 连接详细信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27213331/

相关文章:

java - 渲染具有值的单元格

java - 如何在 swing GUI 中使用 BigDecimal?

java - JFreeChart 注释

java - 尝试创建一个二分搜索平方根计算器,每次都收到 0 结果

java - 为什么会出现这个异常呢? Lucene异常

database - Docker-compose v3 不保留 postgres 数据库

swing - 如何统计JTable的行数?

java - 无法与 Maven 和 Jetty 创建 SSL 连接

java - 用零初始化 ArrayList<Integer> 的值 - Java

c# - 如何使用GSSAPI认证机制访问MongoDB?