Conexão com Oracle 11g e gerar XML em java

Ola, fiz um script para retornar um XML após uma consulta ao Banco de dados. o mesmo script funciona perfeitamente no BD Postgre mas no BD Oracle 11g não estou conseguindo ja testei dois driver um ojdbc14.jar e o ojdbc6.jar porem ele se conecta e não executa o rs.next alguem consegue me ajudar nessa situação. Segue o script abaixo. [code]package AcessoBD;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.swing.JOptionPane;

public class AcessoBD_Oracle {

public static void main(String[] args) throws IOException{

	try {
		Class.forName("oracle.jdbc.driver.OracleDriver");
		System.out.println("Driver JBDC carregando...");
		
		try {
			Connection cnx = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE", "user", "senha");
			System.out.println("Conectou");
			
			Statement st = cnx.createStatement();
            ResultSet rs = st.executeQuery("SELECT * FROM PROVA");
            
           

            BufferedWriter arquivo;
			arquivo = new BufferedWriter(new FileWriter("./arquivo1.xml"));
			arquivo.write("<?xml version='1.0' encoding='UTF-8' ?> ");
			arquivo.write(System.getProperty("line.separator"));
			arquivo.write("<lista_funcionarios>");
			arquivo.write(System.getProperty("line.separator"));
			 

			// processa o resultado da consulta e escreve no arquivo XML.
			while(rs.next()) {
				System.out.println(rs.getString("nomefuncionario"));  
				
				arquivo.write("<funcionario>");
				arquivo.write(System.getProperty("line.separator"));
				arquivo.write(" <codigo_f>" + rs.getString("CodigoFuncionario") + "</codigo_f>");
				arquivo.write(System.getProperty("line.separator"));
				arquivo.write(" <nome_f>" + rs.getString("NomeFuncionario") + "</nome_f>");
				arquivo.write(System.getProperty("line.separator"));
				arquivo.write(" <numero_filhos_f>" + rs.getString("NumeroFilhos") + "</numero_filhos_f>");
				arquivo.write(System.getProperty("line.separator"));
				arquivo.write("</funcionario>");
				arquivo.write(System.getProperty("line.separator"));			
			}

			// finaliza o arquivo XML.
			arquivo.write("</lista_funcionarios>");
			arquivo.write(System.getProperty("line.separator"));
			arquivo.flush();
			arquivo.close();

			System.out.println("Arquivo.xml gerado");
			
			
		} catch (SQLException e) {
			JOptionPane.showMessageDialog(null, "Problemas ao conectar com o BD;" + e.getMessage());
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	} catch (ClassNotFoundException e) {
		// TODO Auto-generated catch block
		JOptionPane.showMessageDialog(null, "Não encontrei o driver JDBC:" + e.getMessage());
	}
	
}

}
[/code]

Olá AndreZenzen blz Cara!!!

Seguinte estou usando o driver ojdbct6.jar para conexao com o banco!
porém vc fez a chamada do driver e o class.forname de forma incorreta, acertei o que vc fez e deu certinho sem problemas!
Procure nao fazer a chamada do driver de conexao na propria classe, eu fiz outra classe para conexao, veja a forma melhor de fazer!!!
vou colocar os arquivos aqui , qualquer coisa estou a disposição!!!

Classe para Conexao

package connectionfactory;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class ConnectionFactory {

    public Connection getConnection() throws ClassNotFoundException, SQLException {


        try {
            Class.forName(&quot;oracle.jdbc.OracleDriver&quot;);
            return DriverManager.getConnection(&quot;jdbc:oracle:thin:@//localhost:1522/ORCL12G&quot;, &quot;login&quot;, &quot;senha&quot;);


        } catch (SQLException e) {
            throw new RuntimeException(e);

        }
    }
}

Sua nova Classe arrumada

package AcessoBD;

import connectionfactory.ConnectionFactory;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.swing.JOptionPane;

public class AcessoBD_Oracle {

    public static void main(String[] args) throws IOException, SQLException {

        try {

            Connection con = new ConnectionFactory().getConnection();


            try {

                Statement st = con.createStatement();
                ResultSet rs = st.executeQuery(&quot;SELECT * FROM clientes&quot;);

                BufferedWriter arquivo;
                arquivo = new BufferedWriter(new FileWriter(&quot;./arquivo1.xml&quot;));
                arquivo.write(&quot;&lt;?xml version='1.0' encoding='UTF-8' ?&gt; &quot;);
                arquivo.write(System.getProperty(&quot;line.separator&quot;));
                arquivo.write(&quot;&lt;lista_funcionarios&gt;");
                arquivo.write(System.getProperty("line.separator"));


                // processa o resultado da consulta e escreve no arquivo XML.  
                while (rs.next()) {
                    System.out.println(rs.getString("idusuario"));

                    /*arquivo.write("&lt;funcionario&gt;");  
                    arquivo.write(System.getProperty("line.separator"));  
                    arquivo.write(" &lt;codigo_f&gt;" + rs.getString("CodigoFuncionario") + "&lt;/codigo_f&gt;");  
                    arquivo.write(System.getProperty("line.separator"));  
                    arquivo.write(" &lt;nome_f&gt;" + rs.getString("NomeFuncionario") + "&lt;/nome_f&gt;");  
                    arquivo.write(System.getProperty("line.separator"));  
                    arquivo.write(" &lt;numero_filhos_f&gt;" + rs.getString("NumeroFilhos") + "&lt;/numero_filhos_f&gt;");  
                    arquivo.write(System.getProperty("line.separator"));  
                    arquivo.write("&lt;/funcionario&gt;");  
                    arquivo.write(System.getProperty("line.separator"));              
                     * 
                     */

                    arquivo.write("&lt;idusuario&gt;");
                    arquivo.write(System.getProperty("line.separator"));
                    arquivo.write("&lt;nome&gt;" + rs.getString("nome") + "&lt;/nome&gt;");
                    arquivo.write(System.getProperty("line.separator"));
                    arquivo.write("&lt;login&gt;" + rs.getString("login") + "&lt;/login&gt;");
                    arquivo.write(System.getProperty("line.separator"));
                    arquivo.write("&lt;senha&gt;" + rs.getString("senha") + "&lt;/senha&gt;");
                    arquivo.write(System.getProperty("line.separator"));
                }

                // finaliza o arquivo XML.  
                arquivo.write("&lt;/lista_funcionarios&gt;");
                arquivo.write(System.getProperty("line.separator"));
                arquivo.flush();
                arquivo.close();

                System.out.println("Arquivo.xml gerado");


            } catch (SQLException e) {
                JOptionPane.showMessageDialog(null, "Problemas ao conectar com o BD;" + e.getMessage());
                // TODO Auto-generated catch block  
                e.printStackTrace();
            }

        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block  
            JOptionPane.showMessageDialog(null, "Não encontrei o driver JDBC:" + e.getMessage());
        }

    }
}

Oi.

Só vim dar conselho. Procure usar uma API para gerar seu XML usando objeto, ao invés de usar um Writer da vida.
Eu diria para utilizar o JAXB, é simples e eficiente. Outro conselho que já vi muitos dando (nunca usei) é utilizar o XStream.

Se decidir utilizar o writer, acho mais vantajoso, inclusive em termos de perfomance (mesmo que seja pouco), usar um StringBuffer para gerar o seu XML e ao fim, aplicar isso ao seu writer, ao invés de ir escrevendo linha a linha.

Fica a seu critério.

[quote=nel]Oi.

Só vim dar conselho. Procure usar uma API para gerar seu XML usando objeto, ao invés de usar um Writer da vida.
Eu diria para utilizar o JAXB, é simples e eficiente. Outro conselho que já vi muitos dando (nunca usei) é utilizar o XStream.

Se decidir utilizar o writer, acho mais vantajoso, inclusive em termos de perfomance (mesmo que seja pouco), usar um StringBuffer para gerar o seu XML e ao fim, aplicar isso ao seu writer, ao invés de ir escrevendo linha a linha.

Fica a seu critério.[/quote]

[quote]
Muito Obrigado pela dica, tenho mais uma duvida se puder me ajudar agradeço desde já.
Gostaria de fazer um .properties onde irei colocar a consulta que será executada. o nome do Arquivo XML que será criado e o caminho físico onde este arquivo será salvo.
teira como me auxiliar para realizar da melhor forma possivel.

[quote=snowblacksoul]Olá AndreZenzen blz Cara!!!

Seguinte estou usando o driver ojdbct6.jar para conexao com o banco!
porém vc fez a chamada do driver e o class.forname de forma incorreta, acertei o que vc fez e deu certinho sem problemas!
Procure nao fazer a chamada do driver de conexao na propria classe, eu fiz outra classe para conexao, veja a forma melhor de fazer!!!
vou colocar os arquivos aqui , qualquer coisa estou a disposição!!!

Classe para Conexao

package connectionfactory;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class ConnectionFactory {

    public Connection getConnection() throws ClassNotFoundException, SQLException {


        try {
            Class.forName(&quot;oracle.jdbc.OracleDriver&quot;);
            return DriverManager.getConnection(&quot;jdbc:oracle:thin:@//localhost:1522/ORCL12G&quot;, &quot;login&quot;, &quot;senha&quot;);


        } catch (SQLException e) {
            throw new RuntimeException(e);

        }
    }
}

Sua nova Classe arrumada

package AcessoBD;

import connectionfactory.ConnectionFactory;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.swing.JOptionPane;

public class AcessoBD_Oracle {

    public static void main(String[] args) throws IOException, SQLException {

        try {

            Connection con = new ConnectionFactory().getConnection();


            try {

                Statement st = con.createStatement();
                ResultSet rs = st.executeQuery(&quot;SELECT * FROM clientes&quot;);

                BufferedWriter arquivo;
                arquivo = new BufferedWriter(new FileWriter(&quot;./arquivo1.xml&quot;));
                arquivo.write(&quot;&lt;?xml version='1.0' encoding='UTF-8' ?&gt; &quot;);
                arquivo.write(System.getProperty(&quot;line.separator&quot;));
                arquivo.write(&quot;&lt;lista_funcionarios&gt;");
                arquivo.write(System.getProperty("line.separator"));


                // processa o resultado da consulta e escreve no arquivo XML.  
                while (rs.next()) {
                    System.out.println(rs.getString("idusuario"));

                    /*arquivo.write("&lt;funcionario&gt;");  
                    arquivo.write(System.getProperty("line.separator"));  
                    arquivo.write(" &lt;codigo_f&gt;" + rs.getString("CodigoFuncionario") + "&lt;/codigo_f&gt;");  
                    arquivo.write(System.getProperty("line.separator"));  
                    arquivo.write(" &lt;nome_f&gt;" + rs.getString("NomeFuncionario") + "&lt;/nome_f&gt;");  
                    arquivo.write(System.getProperty("line.separator"));  
                    arquivo.write(" &lt;numero_filhos_f&gt;" + rs.getString("NumeroFilhos") + "&lt;/numero_filhos_f&gt;");  
                    arquivo.write(System.getProperty("line.separator"));  
                    arquivo.write("&lt;/funcionario&gt;");  
                    arquivo.write(System.getProperty("line.separator"));              
                     * 
                     */

                    arquivo.write("&lt;idusuario&gt;");
                    arquivo.write(System.getProperty("line.separator"));
                    arquivo.write("&lt;nome&gt;" + rs.getString("nome") + "&lt;/nome&gt;");
                    arquivo.write(System.getProperty("line.separator"));
                    arquivo.write("&lt;login&gt;" + rs.getString("login") + "&lt;/login&gt;");
                    arquivo.write(System.getProperty("line.separator"));
                    arquivo.write("&lt;senha&gt;" + rs.getString("senha") + "&lt;/senha&gt;");
                    arquivo.write(System.getProperty("line.separator"));
                }

                // finaliza o arquivo XML.  
                arquivo.write("&lt;/lista_funcionarios&gt;");
                arquivo.write(System.getProperty("line.separator"));
                arquivo.flush();
                arquivo.close();

                System.out.println("Arquivo.xml gerado");


            } catch (SQLException e) {
                JOptionPane.showMessageDialog(null, "Problemas ao conectar com o BD;" + e.getMessage());
                // TODO Auto-generated catch block  
                e.printStackTrace();
            }

        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block  
            JOptionPane.showMessageDialog(null, "Não encontrei o driver JDBC:" + e.getMessage());
        }

    }
}

[/quote]

[quote]Muito obrigado pela dica.
Abraços até mais
[/quote]