首页  >  问答  >  正文

java - 对于 PreparedStatement ,executeQuery() 不能带有参数的错误

PHP中文网PHP中文网2741 天前580

全部回复(4)我来回复

  • PHP中文网

    PHP中文网2017-04-18 09:25:18

    PrepareStatement的使用流程如下:

    1. 使用占位符SQL实例化

    2. 调用bindXX方法完成参数绑定

    3. 调用executeUpdate或executeQuery方法,这里不传参数了,因为参数都在1、2步处理了

    回复
    0
  • 巴扎黑

    巴扎黑2017-04-18 09:25:18

    你上面已经把sql传给pst了 干嘛还要传给executQuery呢?

    回复
    0
  • 怪我咯

    怪我咯2017-04-18 09:25:18

    你的psr.executeQuery(sql),已经传了参数得到结果集了,,不用再传参数了,,

    回复
    0
  • 巴扎黑

    巴扎黑2017-04-18 09:25:18

    PreparedStatement 类是用与预处理sql语句的。
    例如:
    `ResultSet rs = null;
    PreparedStatement loginStatement =

               sqlDAO.sqlConnection().prepareStatement("SELECT username,password FROM user_table WHERE username = ? AND password = ?");
            loginStatement.setString(1, username);
            loginStatement.setString(2, password);
            rs = loginStatement.executeQuery();`
    

    ?表示占位符,我们可以使用setString(int, String) 等方法来为占位符设置值。其中int 参数为第几个占位符(注意不是从0开始,是数学的第几个)第二个表示参数是我们将要把对应占位符(?)替换的值。这样做可以避免我们的数据库被sql注入。值得注意的是,sql语句关键字不可以被占位符替代,因为占位符会自动为我们指定的String用单引号包裹导致sql语句执行失败。手机码的将就看看

    回复
    0
  • 取消回复