Tabela inteira em XML

3 respostas
crpablo

Estou utilizando WebRowSet para pegar uma tabela inteira de meu BD e serializar em XML para depois fazer o inverso, criar a tabela no BD a partir desse file criado. Porém o XML está vindo somente com a estrutura da tabela, as propriedades e os metadados, os dados não estão sendo serializados no XML.
Alguém pode ajudar com isso?

Código:

import java.io.FileOutputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.sql.rowset.WebRowSet;

import com.sun.rowset.WebRowSetImpl;
import com.sun.rowset.internal.WebRowSetXmlReader;
import com.sun.rowset.internal.WebRowSetXmlWriter;

public class WebRowSetTeste {

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

		Connection conn = getConnection();

		PreparedStatement p = conn
				.prepareStatement("select *from TIPOEQUIPAMENTO");

		ResultSet rs = p.executeQuery();

		while (rs.next()) {
			System.out.println(rs.getString(1));
			System.out.println(rs.getString(2));
			System.out.println(rs.getString(3));
			System.out.println(rs.getString(4));

		}

		WebRowSet wrs = new WebRowSetImpl();

		wrs.populate(rs);

		p.close();

		conn.close();

		wrs.writeXml(new FileOutputStream("tipoequipamento.xml"));

		wrs.close();

	}

	private static Connection getConnection() throws ClassNotFoundException,
			SQLException {

		try {
			Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance();
		} catch (InstantiationException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		}

		Connection conn = DriverManager
				.getConnection("jdbc:derby:XXX;user=XXX;password=XXX");

		return conn;

	}
}

3 Respostas

T
ResultSet rs = p.executeQuery();

		while (rs.next()) {
			System.out.println(rs.getString(1));
			System.out.println(rs.getString(2));
			System.out.println(rs.getString(3));
			System.out.println(rs.getString(4));

		}

		WebRowSet wrs = new WebRowSetImpl();

		wrs.populate(rs);

… hum, dá a impressão que é melhor não esvaziar o resultset antes de popular o webrowset. Elimine essa chamada a “while (rs.next())” antes da população.

crpablo

Cara, acho que deu certo…

Valeu mesmo… vou fazer mais uns testes aqui. Se rolar mais algum bug eu peço outro help…

Abraço!!!

crpablo

Valeu Tiago…

Funcionou como eu queria…

Abraço

Criado 13 de novembro de 2007
Ultima resposta 14 de nov. de 2007
Respostas 3
Participantes 2