2017-06-13 62 views
-2

如何在下面的代碼的參數中使用%?它工作,如果我只是直接在查詢沒有使用rset.setString()。謝謝!在JAVA中使用帶準備語句參數的符號

try (Connection con = DriverManager.getConnection(connection); 
     PreparedStatement prepstmt = con.prepareStatement("SELECT {fn SUBSTRING(VS_TABLE_KEY,3,18)} FROM VP_SD_TABLE WHERE {fn SUBSTRING(VS_DESCRIPT,3,62)} LIKE ?"); 
     ResultSet rset = prepstmt.executeQuery() 

    ) { 
     prepstmt.setString(1,"DI%"); 
     while (rset.next()) { 
      System.out.println(rset.getString("VS_TABLE_KEY")); 
     } 
    } catch (SQLException e) { 
     e.printStackTrace(); 
     System.exit(1); 
    } 
+1

當您嘗試該代碼時發生了什麼? – Alfabravo

+0

不返回結果 – Scott

+0

您需要給'substring()'表達式提供一個別名。你的結果集沒有列名「VS_TABLE_KEY」 –

回答

2

在設置參數之前,您正在執行查詢。運行此代碼時,您應該會遇到異常,而不僅僅是空的結果集。

+0

謝謝!我一直在工作10小時,事情開始變得毛茸茸。不能相信我忽略了這一點。 – Scott