# select-statement aus mysql in ein xml-file umwandeln



## top (16. Dez 2005)

Hallo Leute, 

ich bin neu hier und habe das folgende Problem: 

ich will mittels Java-Code aus einer MySQL DB ein select-Statement extrahieren und das Ergebnis als XML-File erzeugen. Dabei sollen die Spaltenbezeichnungen der DB die childs sein. Den XML-Root kann ich ohne Probleme im Code vorgeben (z. B.: Adresse). 

Gut funzt der Connect mit der DB. Auch kann ich natürlich den XML-Tree künstlich im Code erzeugen. Aber gibt es keine andere Möglichkeit als die folgende: 


```
//xml-file erzeugen
 
import java.sql.*; 

public class dbxy { 
  public static void main (String args[]) { 
    String URL = "jdbc:mysql://localhost/dbxy"; 
    String benutzername = "root"; 
    String passwort = ""; 

    // Treiber laden 
    try { 
       Class.forName("com.mysql.jdbc.Driver"); 
    } 
    catch (Exception e) { 
       System.out.println("JDBC/ODBC-Treiber konnte nicht geladen werden."); 
       return; 
    } 

    // Verbindung zu Datenbank aufbauen 
    Statement befehl = null; 
    Connection verbindung = null; 
    try { 
       verbindung = DriverManager.getConnection ( 
                      URL, 
                      benutzername, 
                      passwort); 
       befehl = verbindung.createStatement(); 
    } 
    catch (Exception e) { 
       System.err.println("Verbindung zu "+URL+" konnte nicht hergestellt werden"); 
    } 

    // Daten auslesen 
    try { 
       ResultSet datenmenge; 
       datenmenge = befehl.executeQuery("Select * from .....); 

       /*Überschriften ausgeben 
       System.out.println(); 
       System.out.println(" ID \t Name \t Vorname \t Homepage \t EMail "); 
       System.out.println();*/ 

       // Einzelne Datensätze ausgeben 
       int             ID; 
       String        Name; 
       String        Vorname; 
       String        Homepage; 
       String        EMail; 
       
         while(datenmenge.next()) { 
         ID = datenmenge.getInt("ID"); 
         Name = datenmenge.getString("Name"); 
         Vorname = datenmenge.getString("Vorname"); 
         Homepage = datenmenge.getString("Homepage"); 
         EMail = datenmenge.getString("EMail"); 
        
        //Nun also das XML-Schema angeben
         System.out.println("\n"); 
         System.out.println("<ID>"+ID+"<ID>"); 
         System.out.println("<Name>"+Name+"<Name>"); 
         System.out.println("<Vorname>"+Vorname+"<Vorname>"); 
         System.out.println("<Homepage>"+Homepage+"<Homepage>"); 
         System.out.println("<EMail>"+EMail+"<EMail>"); 
         
       verbindung.close(); 
    } 
    catch (Exception e) { 
       e.printStackTrace(); 
    } 
  } 
}
```

Was ich konkret suche ist eine Klasse die unter Verwendung der Spaltenbezeichnung aus dem select-statement automatisch ein XML-Dokument generiert. 

Vielen Dank vorab für Eure Antworten. 

Salut 
top


----------



## KSG9|sebastian (19. Dez 2005)

- zuerst mal würde ich ne XML API nehmen und nicht alles mit println machen
- du könntest die Spaltennamen festhalten (z.B. in ner properties-Datei) und die XML-Datei dynamisch erzeugen


----------



## KSG9|sebastian (19. Dez 2005)

aehm..sowas hier geht:


```
ResultSet res = ..
ResultSetMetadata meta = res.getMetaData();
int cols = meta.getColumnCount();
```

Über die Metadata kannst du dann die Namen und Typen der Spalten herausfinden


----------



## top (23. Dez 2005)

@KSG9lSebastian,

vielen Dank für Deinen Request. tut mir leid, daß ich mich erst jetzt wieder melde (grippaler Infekt läßt grüßen). Ich werde Deinen Hinweis mal ausprobieren und melde mich dann wieder. Vorab schon mal frohes Fest.

salut
top


----------

