You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java Derby数据库连接认证失败:用户ID或密码无效求助

Java Derby连接认证失败:用户ID或密码无效的解决办法

核心错误信息

你遇到的错误是:

java.sql.SQLNonTransientConnectionException: Connection could not be authenticated. Reason: User ID or password invalid

对应的德语提示也明确指出用户ID或密码无效,说明问题出在数据库凭据的匹配上。

排查与解决步骤

1. 核对Derby数据库的实际用户凭据

不要直接照搬教程里的用户名密码,先确认你创建SuperMarketdb时设置的真实凭据:

  • 如果是用IDE(比如NetBeans)创建的数据库:打开IDE的「服务」面板,找到Databases -> Java DB -> SuperMarketdb,右键选择「属性」,查看其中的用户名和密码。
  • 如果是手动用Derby的ij工具创建的数据库,回忆创建时的命令,比如:
    connect 'jdbc:derby://localhost:1527/SuperMarketdb;user=你的用户名;password=你的密码;create=true';
    
    确保代码里的凭据和这里完全一致。

2. 检查代码中的拼写与大小写

Derby的用户名和密码区分大小写,仔细核对代码中的:

DriverManager.getConnection("jdbc:derby://localhost:1527/SuperMarketdb","User1","1234");
  • 确认User1的大小写和数据库用户一致(比如数据库里是user1小写,代码里大写就会失败)
  • 检查密码1234有没有多余空格、拼写错误

3. 用ij工具测试连接

打开Derby的ij命令行工具,执行以下命令测试连接:

connect 'jdbc:derby://localhost:1527/SuperMarketdb;user=User1;password=1234';
  • 如果命令报错,说明确实是凭据问题,回到第一步确认正确的用户名密码;
  • 如果命令能成功连接,再检查代码中是否有其他隐藏问题(比如字符串转义、特殊字符)。

4. 确认用户权限

确保User1用户拥有连接数据库和操作SELLERTBL表的权限,执行以下SQL赋予权限(需要用管理员用户连接后执行):

GRANT CONNECT, INSERT, SELECT ON SELLERTBL TO User1;

5. 代码优化建议

你的代码每次点击按钮都创建新连接,且未关闭资源,容易导致泄漏,建议修改为:

private void AddBtnMouseClicked(java.awt.event.MouseEvent evt) {                                     
    if(SellId.getText().isEmpty() || SellName.getText().isEmpty() || SellPas.getText().isEmpty() ) {
        JOptionPane.showMessageDialog(this, "缺少必要信息");
    } else {
        Connection con = null;
        PreparedStatement add = null;
        try{
            con = DriverManager.getConnection("jdbc:derby://localhost:1527/SuperMarketdb","User1","1234");
            add = con.prepareStatement("insert into SELLERTBL values(?,?,?,?)");
            add.setInt(1, Integer.valueOf(SellId.getText()));
            add.setString(2, SellName.getText());
            add.setString(3, SellPas.getText());
            add.setString(4, GenderCb.getSelectedItem().toString());
            int row = add.executeUpdate();
            JOptionPane.showMessageDialog(this, "卖家添加成功!");
        } catch(SQLException e) {
            JOptionPane.showMessageDialog(this, "错误:" + e.getMessage());
            e.printStackTrace();
        } finally {
            // 关闭资源,避免泄漏
            try {
                if(add != null) add.close();
                if(con != null) con.close();
            } catch(SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

内容的提问来源于stack exchange,提问作者SpicyP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 06:35:28