Executar um query que se encontra no xml

6 respostas
S

Olá Todos

Tenho esse xml com um select declarado e gostaria de executar essa query na classe java buscando do xml, alguem poderia me dizer como faria isso ?

Não posso tirar-lo do xml, tem que estar no xml a classe java apenas chamaria esse xml e essa query e executaria e retornaria os dados!

Meu banco de dados é oracle 10g

<?xml version="1.0" encoding="UTF-8"?>
<sql>
<Cliente>
    <selectWholesale><![CDATA[
	
        select id, nome, endereco, cidade  from cliente  where nome >= ? 
		
    ]]></selectWholesale>
</Cliente>


</sql>

Grato

José Vieira

6 Respostas

pedruhenrik

olá José,

vc pode “ler” o xml dentro de 1 método java, resgatar a query e utiliza la dentro da sua classe de persistência.

eu utilizo jdom para leitura de xml.

att,

T

Minha dúvida é semelhante a do criador do tópico. Consegui recuperar a query do xml mas não sei como farei no while…A query trará o que estiver estabelecido na mesma.

Meu método está assim:

private List<IndicadorBean> executarQuery(){
		
		XStream xstream = new XStream(new DomDriver());
		xstream.alias("indicadores", IndicadorBean.class);
		File arquivo = new File("xml/IndicadorConfig.xml");
		
		FileInputStream arquivoXML = new FileInputStream(arquivo);
		IndicadorBean indicador = (IndicadorBean) xstream.fromXML(arquivoXML);
//		System.out.println(indicador.getSql());
//		System.out.println(indicador.getTempo());
//		System.out.println(indicador.getNomeArquivoSaida());
		
		try{
			List<IndicadorBean> indicadores = new ArrayList<IndicadorBean>();
			PreparedStatement pstmt = this.connection.prepareStatement(indicador.getSql());
			ResultSet rs = pstmt.executeQuery();
			
			while(rs.next()){
				//estou sem idéia de como farei aqui.
			}
		}
		
		
		return "";
	}

Se alguém puder ajudar…ficarei grato, pois minha dúvida pode ser a de outros tb.

T

Não sei se eu poderia fazer a escrita em um arquivo txt…
Tipo, executar a query buscada do xml e gravar os dados em um arquivo txt…

Será que dá pra fazer isso??

pedruhenrik

tiagofla,

não entendi muito bem, o q vc quer fazer???

salvar os resultados no txt? xml?

dá sim, vc colocar o resultado da query em um txt.

mas tanto a leitura do xml, quanto a escrita no txt eu faria separada da classe de conexão e separado tb do DAO.

att,

T

Isso! O que eu tava querendo fazer é ler o xml, pegar a query lá do xml, executá-la e no while fazer a gravação do resultado da execução da query num arquivo .txt.

Tipo:

while(rs.next()){
  cctoWriter.write("output/"+indicador.getNomeArquivoSaida()+".csv"+"\t"+"\n");
  cctoWriter.flush();
}
pedruhenrik
while(rs.next()){  
  //eu carregaria uma lista de indicadores aqui
} 
rs.close();
pstmt .close();

return listaIndicadores //retornaria a lista aqui para outro metódo preparar o arquivo txt

vc conhece DAO ? [url]http://pt.wikipedia.org/wiki/Data_Access_Object[/url]

nisso tudo, ficaria 1 classe de acesso ao banco, a classe indicador e uma classe "util" para ler o xml(ou metódo private no dao).
acho q eu faria algo por ai.

ajudou?

boa sorte!

att,

Criado 7 de fevereiro de 2011
Ultima resposta 21 de fev. de 2011
Respostas 6
Participantes 3