kostenloser Webspace werbefrei: lima-city


Java + MySQL -> DatabaseMetaData

lima-cityForumProgrammiersprachenJava

  1. Autor dieses Themas

    p**i

    Moin,

    also ich versuche gerade ein Datenbankverwaltungsprogramm zu schreiben,
    ?hnlich wie phpMyAdmin, nur halt als Anwendung.
    Ist vorteilhafter f?r Leute, die direkt am Server sitzen...

    Mein Problem:
    Ich will von einer Connection die Datenbank-MetaDaten ermitteln,
    also sowas wie 'Wieviele Datenbanken stehen bei der Verbindung zur Verf?gung' oder 'Wieviele Tabellen hat eine einzelne Datenbank und Auflistung dieser'...

    Hier mal ein wenig Code der sowas verdeutlicht:

    import java.sql.*;
    public class DBMetaData
    {
    public static void main( String args[] ) throws Exception
    {
    Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );
    Connection conn = DriverManager.getConnection( "jdbc:odbc:Pflanzen" );
    DatabaseMetaData meta = conn.getMetaData();
    System.out.println( "ProduktnameDatabase : " +
    meta.getDatabaseProductName() ); // ACCESS
    System.out.println( "Version der Datenbank : " +
    meta.getDatabaseProductVersion() ); // 03.50.0000
    System.out.println( "Anzahl erlaubter Verbindungen : " +
    meta.getMaxConnections() ); // 64
    System.out.println( "Version des DB-Treibers : " +
    meta.getDriverVersion() ); // 2.0001 (04.00.6019)
    System.out.println( "Update im Batchbetrieb : " +
    meta.supportsBatchUpdates() ); // true
    System.out.println( "Gespeicherte Prozeduren : " +
    meta.supportsStoredProcedures() ); // true
    conn.close ();
    }
    }

    Das DatabaseMetaData-Objekt besitzt noch viele weitere Methoden zum Auslesen der DB.
    Der gezeigte Code gibt jedesmal einen String zur?ck, wie zu erkennen ist.
    Aber bei anderen Methoden bekommt man ein ResultSet zur?ck und ich weiss nicht wie es realisieren kann,
    dass das gest?ckelt und als einzelne Strings ausgegeben wird...

    Als Beispiel die Methode getCatalogs():
    Diese Methode gibt mir ein ResultSet der Datenbanken meiner Verbindung zur?ck.
    Jede einzelne Datenbank soll als Auswahl (wie bei phpMyAdmin) in eine ComboBox geschrieben werden,
    damit man ausw?hlen kann mit welcher DB man arbeiten m?chte.

    Kann mir jemand ungef?hr n?herbringen bzw. hat es schonmal gemacht,
    wie man dieses ResultSet zerst?ckeln und ausgeben kann?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 2**s

    du kannst das ganze z.B. so realisieren
    // ...
            try {
                ResultSet rs = meta.getCatalogs();            
                ResultSetMetaData rsMeta = rs.getMetaData();
                while (rs.next()) {
                    for (int i = 0; i < rsMeta.getColumnCount(); i++) {
                        String colName = rsMeta.getColumnName(i);
                        Object o = rs.getObject(colName);
                        
                        // Der EIntrag lautet dann z.B.
                        System.out.println(i+" -> "+colName+"\t"+o);
                    }                
                }            
                rs.close();
            }
            catch (SQLException sqlE) {
                // Tu was mit der Exception
                sqlE.printStackTrace();
            }


    das ganze nur als beispiel und ungetestet....


    EDIT
    Ein DB Verwaltungstool zu schreiben, ohne zu wissen, wie man resultsets auswerten kann, finde ich aber schon etwas gewagt...

    ?ber das ResultSetMetaData Objekt kriegst du auch genaue Infos ?ber das ResultSet. (Spaltennamen, Klassen, Typen)

    Und guck dir mal das AquqDataStudio von Aquafold an
    http://www.aquafold.com/index.html

    Die haben sowas schon in Java realiisert ind es ist kostenlos

    ***EDIT***
    Uuppps
    Sorry f?r den Doppelpost....
    habe wohl auf quote anstatt auf edit gedr?ckt

    Beitrag ge?ndert am 5.11 07:22 von 2mas
  4. Autor dieses Themas

    p**i

    Danke Dir ...

    Ja hast Recht, ist gewagt, aber anders kann ich es ja nicht lernen ge? *g*
    Aber wenn ich mir das jetzt so anschaue,
    ist das alles logisch, simpel und verst?ndlich zugleich...
    Und wozu dieses Forum, wenn keine Probleme auftauchen w?rden :D

    Ich habe es jetzt so realisiert:

    DatabaseMetaData meta = conn.getMetaData();
    ResultSet rs = meta.getCatalogs();
     while (rs.next()) {
      String dbname = rs.getString("TABLE_CAT");
      jComboBox_db_db.addItem(dbname);
     }


    Beitrag ge?ndert am 6.11 10:47 von puni

    Beitrag ge?ndert am 6.11 10:48 von puni
  5. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!