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

Java(Ant)应用连接MySQL成功但无法读取数据求助

MySQL登录验证失败排查方案

以下是针对你遇到的登录验证始终进入else分支问题的排查方向和解决方法:

1. 数据库库名与查询语句中的库名不匹配

你的数据库连接URL指定的是rgi_student库:

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

但查询语句中却使用了richfield.members,指定了另一个库的表:

String sqlquery = "SELECT * FROM richfield.members Where username = ? AND password = ?";

这会导致查询的表不在当前连接的库中,自然查不到数据。

解决方法:
修改SQL语句,要么去掉库名前缀(确保members表在rgi_student库中):

String sqlquery = "SELECT * FROM members Where username = ? AND password = ?";

要么确保连接的库是richfield,修改URL:

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

2. 输入内容包含前后空格

直接从文本框获取的user和pass可能包含用户输入时不小心添加的前后空格,或者文本框默认的空格,导致与数据库中存储的"Dox"不匹配。

解决方法:
对获取的字符串进行去空格处理:

String user = userTxtF.getText().trim(); 
String pass = passwordTxtF.getText().trim();

3. 字符串大小写匹配问题

需要确认:

  • 数据库中存储的username和password值确实是精确的"Dox"(包括大小写)
  • 用户在文本框中输入的内容与数据库值完全一致(比如不要输入成"dox"或"DOX")

如果需要忽略大小写匹配,可以修改SQL语句:

String sqlquery = "SELECT * FROM members Where LOWER(username) = LOWER(?) AND LOWER(password) = LOWER(?)";

4. 资源未关闭的潜在问题(建议修复)

当前代码中Connection、PreparedStatement、ResultSet都没有关闭,长期运行可能导致数据库连接泄漏,建议在finally块中关闭资源:

finally {
    try {
        if (rs != null) rs.close();
        if (pst != null) pst.close();
        if (con != null) con.close();
    } catch (SQLException ex) {
        ex.printStackTrace();
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 07:30:54