该查询未执行,并且代码将被 catch block 阻止。 查询中的问题 可能在 whileloop 中......
try {
getConnection();
String user = text.getText().trim();
String pass = password.getText().trim();
String query = "Select name,password from pharmacy.login where name = '" + user + "' and password = '" + pass + "'";
result = statement.executeQuery(query);
System.out.println("hii");
int count = 0;
while (result.next()) {
count++;
}
}
最佳答案
您的代码容易受到 SQL 注入(inject),但考虑到这种情况,请继续阅读。
为了找到查询未执行的原因,您应该捕获异常并记录它。它可能提供有关如何解决您的问题的有用信息。
但是如果您的目标只是计算找到的记录,那么您应该将查询更改为:
select count(*) from pharmacy.login where name='...' and password='...'
但是,您的代码很容易受到 SQL 注入(inject)。
通常,您应该使用 PreparedStatement
和 ?
或 ORM 框架来检索您的用户对象,并且搜索条件应该仅为用户名。
select username, password from pharmacy.login where name = ?
密码字段中的数据库内容应加密,用户输入的密码值也应加密。
检索用户对象后,您应该比较加密的密码字段和加密的输入密码值。
关于java - 如何获取登录程序的Mysql表值(名称,密码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37026353/