首頁  >  問答  >  主體

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

PHP中文网PHP中文网2741 天前574

全部回覆(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
  • 取消回覆