Dunque, avrei un piccolo problemino:
In questa classe java
come si vede, eseguo una query, utilizzando i prepared statement. I valori che passo come parametri (la condizione è vera quindi viene eseguita la prima query) sono:codice:public static List<MacchineDTO> findBySimilarName(String nome, int codiceProfilo, String tipo, String ip, String netIp, String servizio)throws Exception{ Connection conn=null; PreparedStatement pstmt=null; List<MacchineDTO> result=new ArrayList<MacchineDTO>(); ResultSet res=null; String ipRicerca = "%"; if(netIp.equalsIgnoreCase("*")){ if(!ip.equalsIgnoreCase("*") && !ip.isEmpty()) ipRicerca = ip; }else{ if(ip.equalsIgnoreCase("*") || ip.isEmpty()){ ipRicerca = netIp + "%"; }else{ if(ip.startsWith(netIp)){ ipRicerca = ip; }else{ ipRicerca = netIp; } } } if(ProfiliDAO.findByPK(null, codiceProfilo).getIdentificativo().equalsIgnoreCase("administrator")){ try{ conn=ConnectionHelper.sorroundConnection(conn); pstmt=conn.prepareStatement("SELECT macchine.* FROM macchine, (SELECT interfacce.* FROM interfacce WHERE interfacce.ip LIKE '?') AS ippp WHERE tipo = '?' AND nome LIKE '?' AND macchine.idMacchina = ippp.codiceMacchina;"); pstmt.clearParameters(); pstmt.setString(1,ipRicerca); pstmt.setString(2,tipo); pstmt.setString(3,"%" + nome + "%"); res=pstmt.executeQuery(); result=loadRecords(res); }catch(Exception e){ throw e; }finally{ pstmt.close(); if(res!=null)res.close(); conn.close(); } }else{ try{ conn=ConnectionHelper.sorroundConnection(conn); pstmt=conn.prepareStatement("SELECT macchine.* FROM macchine, (SELECT interfacce.* FROM interfacce, (SELECT * FROM permessi WHERE permessi.codiceProfilo = ?) AS ppp WHERE interfacce.ip = ppp.ip AND interfacce.ip LIKE ?) AS ippp WHERE tipo = ? AND nome LIKE ? AND macchine.idMacchina = ippp.codiceMacchina;"); pstmt.clearParameters(); pstmt.setInt(1, codiceProfilo); pstmt.setString(2, ipRicerca); pstmt.setString(3,tipo); pstmt.setString(4,"%" + nome + "%"); res=pstmt.executeQuery(); result=loadRecords(res); }catch(Exception e){ throw e; }finally{ pstmt.close(); if(res!=null)res.close(); conn.close(); } } return result; }
ipRicerca = "%"
tipo = "c"
nome=""
Il problema non è nella classe, perchè viene compilata e funziona tutto a dovere, ma effettuando il debug mi sono accorto che mi viene restituito un resultset vuoto, quando invece se eseguo la query a mano con gli stessi valori sul db mi viene restituito l'unico record che c'è, come dovrebbe essere.
Da cosa può dipendere???

Rispondi quotando
