【发布时间】:2015-12-14 12:19:33
【问题描述】:
我问了一个关于我在 Eclipse 上开发的 JDBC 登录应用程序的问题,它无法识别我在表单中输入的凭据。您可能想先read 来了解我的问题。
在玩弄了我的代码之后(并进行了几次测试以检查 JDBC 驱动程序是否已加载并内置到类路径中),我认为该错误更多地与 ResultSet 没有返回我请求的特定行有关我的查询。我只是想知道这是常见的情况还是我的代码有误?
这是 Login 类的(编辑过的)代码:
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/game"+"?verifyServerCertificate=false"+"&useSSL=true";
String user = "root";
String pass = "password";
String sql = "SELECT username, password FROM player WHERE username = ? AND password = ?";
String username = "uname";
String password = "pword";
try {
Class.forName(driver);
Connection connection = DriverManager.getConnection(url, user, pass);
PreparedStatement statement = connection.prepareStatement(sql);
statement.setString(1, username);
statement.setString(2, password);
ResultSet resultSet = statement.executeQuery();
boolean loginSuccess = false;
while (resultSet.next()) {
loginSuccess = true;
System.out.println("Congrats! You are logged in as " + resultSet.getString("username") + ".");
}
} catch (Exception e) {
throw new RuntimeException("Login failed", e);
}
非常感谢任何形式的帮助。谢谢!
【问题讨论】:
-
当然。如果你的 where 子句不返回匹配项
-
@Stultuske 奇怪的是我 100% 确定我的 SQL 查询是正确的。我觉得这与我的代码有关,但我看不出我哪里做错了。
-
您是否调试过您的代码?您确定您的连接信息正确吗?
-
@Stultuske 这就是我不确定的。你能看看我的代码并仔细检查一下吗?
-
...不。我没有你的数据库,我不知道你提供什么输入,...