我正在用java编写基本的数据库管理系统.当用户提交他的用户名和密码时,程序将在数据库中搜索提交的数据是否正确:
result = stat.executeUpdate("SELECT username,password FROM DB" + "WHERE (username = '"+loginusr.getText()+"',password = '"+loginpwd.getText()+"')");
Run Code Online (Sandbox Code Playgroud)
显然,=符号附近有一个错误.有人可以帮忙解决这个问题吗?
提前致谢
那里有几个问题.
首先,你需要一个空格WHERE:
result = stat.executeUpdate("SELECT username,password FROM DB" + "WHERE (username = '"+loginusr.getText()+"',password = '"+loginpwd.getText()+"')");
// Here ---------------------------------------------------------^
Run Code Online (Sandbox Code Playgroud)
但更根本的问题是你已经将代码扩展到SQL注入攻击和失败.使用PreparedStatement,不要连接字符串以放入参数.这里有一个很好的说明原因:

最后:将密码存储在数据库中并不是最佳做法.相反,通常您存储密码的加密哈希值,而不是密码本身(例如,SHA-256是一种哈希技术).然后,当用户进行身份验证时,您将他们提供给您的密码作为密码进行哈希,并将其与您存储的哈希值进行比较.这样,无法从数据库中检索密码.