Foros del Web » Programación para mayores de 30 ;) » Java »

Generar Xml con una consulta a un Base de Datos

Estas en el tema de Generar Xml con una consulta a un Base de Datos en el foro de Java en Foros del Web. Hola Os dejo este código que pretende hacer una consulta a una base de datos y guardar el resultado en un archivo xml, haber si ...
  #1 (permalink)  
Antiguo 03/10/2008, 00:54
 
Fecha de Ingreso: septiembre-2008
Mensajes: 137
Antigüedad: 15 años, 7 meses
Puntos: 0
De acuerdo Generar Xml con una consulta a un Base de Datos

Hola
Os dejo este código que pretende hacer una consulta a una base de datos y guardar el resultado en un archivo xml, haber si vosotros veis en que falla, por que aunque me conecta, solo me crea el archivo sin escribirmelo. os dejo la traza de fallo que me da:

run:
java.sql.SQLException: [Microsoft][Administrador de controladores ODBC] Índice de descriptor no válido
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc .java:6958)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java :7115)
at sun.jdbc.odbc.JdbcOdbc.SQLColAttributesString(Jdbc Odbc.java:2668)
at sun.jdbc.odbc.JdbcOdbcResultSetMetaData.getColAttr ibuteString(JdbcOdbcResultSetMetaData.java:793)
at sun.jdbc.odbc.JdbcOdbcResultSetMetaData.getColumnN ame(JdbcOdbcResultSetMetaData.java:355)


Y el código es el siguiente, es un pequeño prototipo que tengo antes de implementarlo en la apli buena:

import java.sql.Connection;
import java.sql.Statement;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.io.*;


class JDBCapp {

static Connection con;

public static void main (String args[]) {

ResultSet rs = null;
Statement stmt = null;
String sql, nombre;


try {

// conexion base de datos
con = AccessCon.getConnection();

sql = "select * from HISTCOMM";
stmt = con.createStatement();
rs = stmt.executeQuery(sql);

ResultSetMetaData rsmd = rs.getMetaData();
int colCount = rsmd.getColumnCount();


java.io.FileWriter fw= new java.io.FileWriter("c:/consulton.xml");


fw.write("<?xml version=\"1.0\" ?>");
int numColumnas = rs.getMetaData().getColumnCount();

String[] nombreColumnas = new String[numColumnas];

for (int i=0; i<numColumnas; i++){
nombreColumnas [i] = rs.getMetaData().getColumnName(i);
}
while(rs.next()){
fw.write(System.getProperty("line.separator"));
fw.write("<registro>");
fw.write(System.getProperty("line.separator"));

for (int i=0; i<numColumnas; i++){
fw.write(" <" + nombreColumnas [i]+ ">" + rs.getString(i) + "</" + nombreColumnas [i]+ ">");
fw.write(System.getProperty("line.separator"));
}
fw.write("</registro>");

fw.close();
}

}
catch (Exception e) {
e.printStackTrace();
}
finally {
try {
if (con != null) con.close();
if (stmt != null) stmt.close();
if (rs != null) rs.close();
}
catch (Exception e) {
}
}
}

}

class AccessCon {
public static Connection getConnection() throws Exception {
Driver d = (Driver)Class.forName
("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
Connection c = DriverManager.getConnection
("jdbc:odbc:datos");
return c;
}
}
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:13.