Mostrar query sql existente em um .properties c/ valores variáveis no console de saída

4 respostas
M

Saudações

Como imprimir a query sql qdo eu a tirei do meu .java e coloquei-a em um arquivo properties??

tenho a seguinte classe:

public class QueryManager {
  
    
    private Properties queries;    
    private static QueryManager instance;
    
    public static QueryManager getInstance(String arquivo) throws IOException {
        if (instance == null) {
            instance = new QueryManager(arquivo);
        }
        return instance;
    }

   public String getString(String queryName) {
        return queries.getProperty(queryName);
    }
    
    private QueryManager(String arquivo) throws IOException {    
        queries = new Properties();        
        queries.load(new FileInputStream(arquivo)); 
       
    }
    
    public PreparedStatement getPreparedStatement(Connection con, String queryName) throws SQLException {        
        String query = queries.getProperty(queryName);      
        return con.prepareStatement(query, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);        
    }
e o seguinte código:
QueryManager qm = QueryManager.getInstance("S:/Marco/Projetos/RTFGTS/src/properties/EvValFGTS.properties");
. . .
PreparedStatement ps = qm.getPreparedStatement(con, "query");
                ps.setObject(1, strbi);//essas variáveis são String
                ps.setObject(2, strci);
                ps.setObject(3, strei);
                ps.setObject(4, strfi);
                ps.setObject(5, strhi);             
                ResultSet rs = ps.executeQuery();

tentei c/ o método getString(String queryName) de QueryManager mas aí ele me retorna a query SQL com os '?', ou seja, não preenchidos c/ as variáveis setadas no código acima (ps.setObject(1, strbi)). O código fuciona blz, o q significa q essas variáveis estão sendo setadas corretamente na query, porém gostaria d imprimir no console de saída da aplicação a query executada com os valores setados.

Grato

4 Respostas

von.juliano

Tive um problema parecido um bom tempo atrás: http://www.guj.com.br/java/79061-duvida-com-callablestatement-resolvido

É uma dúvida diferente, mas a solução me parece a mesma. Acho que vai te ajudar!

Flw! :thumbup:

M

von.juliano, através do teu post antigo acabei testando o p6spy, mas o log q ele gera nao mostra exatamente o sql executado c/ os valores, certo?

M

sim mostra, eu tava vendo o log errado …

Grato

M

Aproveitando o tópico:

QueryManager qm = QueryManager.getInstance("S:/Marco/Projetos/RTFGTS/src/properties/EvValFGTS.properties");

o caminho do arquivo properties, por estar localizado na pasta do próprio projeto nao precisaria estar informado desde o S:/…, certo?
uma vez parece q eu vi algo do tipo: “…/src/properties/EvValFGTS.properties” … mas dessa forma ele nao acha o caminho …

Criado 12 de agosto de 2011
Ultima resposta 12 de ago. de 2011
Respostas 4
Participantes 2