# Zwischen Datenbanken wählen auf SQL-Server



## fiffi00 (12. Jul 2006)

Hallo,
ich hab folgendes Problem:
ich will mit Java/jdbc eine Verdindung zu einem Server herstellen und danach soll der Benutzer auswählen können, welche Datenbank er angezeigt bekommt! Leider weiß ich nicht wie ich das anstellen soll, ich müsste die Datenbanken, die auf dem Server laufen angezeigt bekommen. Es wäre nett, wenn mir jemand helfen könnte.


Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();

verb = jdbc:microsoft:sqlserver://Servername:1433;

con = java.sql.DriverManager.getConnection(verb,usr,pwd);

Die Verbindung wird hergestellt, leider hab ich keine ahnung wie ich mir jetzt die Datenbanken anzeigen lassen kann, die vorhanden sind!!
Wäre für hilfe sehr dankbar!!

Viele Grüße
fiffi


----------



## SamHotte (12. Jul 2006)

Ist nicht ganz einfach, habe hier mal eine Möglichkeit beschrieben.


----------



## fiffi00 (12. Jul 2006)

hey!!
danke für die antwort, nur half mir das nicht viel weiter!
kann zwar die datenbank-produktversion und so auslesen, aber nicht die Namen der Datenbanken, die auf dem Server laufen...
ich les jetzt schon den ganzen morgen, überall steht nur beschriebe, wie man direkt die datenbank anwählt, aber in meinem programm soll das der Benutzer über ein auswahlfeld tun, also muss ich irgendwie an die Namen der Datenbanken rankommen..
wär um weiter Hilfe unendlich dankbar!!!!

Gruß
fiffi


----------



## SamHotte (12. Jul 2006)

```
List result = new ArrayList(); 
    try { 
      DatabaseMetaData metaData = this.connection_.getMetaData(); 
        System.out.println("Datenbank-Produktname   : " 
            + metaData.getDatabaseProductName()); 
        System.out.println("Datenbank-Produktversion: " 
            + metaData.getDatabaseProductVersion()); 
        System.out.println("Datenbank-Datei         : " + db); 

      ResultSet catalogs = metaData.getCatalogs(); 
      while (catalogs.next()) { 
        String tableCatalog = catalogs.getString("TABLE_CAT"); 
        String catalog = Helper.ersetzeBackslash(tableCatalog); 
          System.out.println("Catalog: " + catalog); 

        // von db noch die Extension '.mdb' abschneiden 
        String cat = db.substring(0, db.indexOf(".mdb")); 
        // Namen der Relationen einlesen 
        if (catalog.equals(cat)) { 
          String[] types = { "TABLE" }; 
          ResultSet tables = metaData 
              .getTables(tableCatalog, null, null, types); 
          List namen = new ArrayList(); 
          while (tables.next()) { 
            namen.add(tables.getString("TABLE_NAME").toLowerCase()); 
          } 

        // hier jetzt die Spalten einlesen und weitermachen ... 

        } 
        else { 
          System.out.println("Nicht relevante DB: " + catalog); 
        } 
      } 
    } 
    catch (SQLException exception) { 
      Sytem.err.println(exception.getMessage()); 
    }
```
Im Beispiel hab ich nur schon den Datenbanknamen in der Variable db gespeichert. Du bekommst aber mit metaData.getCatalogs() ein Array der Datenbanknamen.
In der while-Schleife ab Zeile 12 vergleiche ich halt mit meinem gesuchten Namen - Du müsstest das so umbauen, dass du die Namen ins Auswahlfeld überträgst.


----------



## Caffè Latte (12. Jul 2006)

Hi,

wenn die den Fred richtiog verstanden habe geht es nicht um Access sondern den winzigweichen SQL-Server ...

Wenn dem so ist, welche Version setzt du ein? Und was meinst du mit Datenbank? Ein Schema? SELECTe mal die sysobjects und sys.schemas (wenn es die jeweils gibt). Wenn du da deine Datenbanken findest lass es uns wissen, und falls nicht auch.


----------

