java - 如何获取登录程序的Mysql表值(名称,密码)

标签 java sql security user-interface jdbc

该查询未执行,并且代码将被 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/

相关文章:

SQL IF ELSE 开始结束

sql - 需要帮助理解具有多个连接条件的复杂查询

security - 哪些浏览器支持 HttpOnly cookie?

java - Spring缓存与reflect方法

java - JUnit ExpectedException 规则不起作用

java - 如何检查 HikariCP 连接池是否在 Java 中工作?

python - 密码盐和 secret

java - 测试 Web 服务的工具和最佳实践是什么?

mysql - 如果 Update row_count()=0 则插入

security - 在 Dropbox 上托管是私密的、匿名的吗?