1

我正在尝试在 java 中创建一个项目来注册和“登录”用户,但是我已经让注册部分正常工作,我不知道如何为此返回真/假。我有需要使用的查询

public String login(String username, String password) {
    return "SELECT * WHERE Username=\""+username+"\" and Password=\""+password+"\";";
}

虽然,我只是不确定我在做什么,确切地说。有什么帮助吗?

我知道如何写入数据库,只是不知道如何读取。

4

2 回答 2

2

尽管 Rahul Tripathi 的回答会起作用,但它会使您的应用程序遭受 SQL 注入攻击,这意味着我可能会通过输入类似的内容来破坏您的应用程序

'; drop table mytable;

在用户名字段中。由于用户名与 SQL 的其余部分连接在一起,因此将执行以下操作:

SELECT * from mytable WHERE username=''; drop table mytable;

这显然不是你想要的!

相反,使用参数和准备好的语句:

String username = //get entered username from somewhere
String password = //get entered password from somewhere
Connection connection = //get database connection

String sqlString = "SELECT * from mytable WHERE username=? and password=?";

PreparedStatement login = connection.prepareStatement(sqlString);
login.setString(1, username);
login.setString(2, password);
ResultSet rs = login.executeQuery();

这不是一个完整的解决方案,您需要处理异常并处理 ResultSet ...

于 2013-10-20T09:49:33.787 回答
0

不太确定你在问什么,但你可以这样尝试:-

  sql = "SELECT * from mytable WHERE username='" + username + "' and password='"password"'";                                  
   rs = stmt.executeQuery(sql);
   if( rs.next()){
        return true;
   } else {
       return false;
   }

您的声明中也缺少该from子句select

笔记:-

上述解决方案很容易发生 SQL 注入。而是尝试使用 Prepared 语句来避免 SQL 注入。

于 2013-10-20T09:07:25.803 回答