# MSSQL - Datenbank mit Punkt



## a.schroden (22. Sep 2008)

Hallo,

mein Progrämmchen zum Auslesen aller Datenbanken eines Servers, der Tabellen und Spalten nimmt langsam Formen an. Ich habe allerdings ein kleines Problem, bei dem ich nicht weiterkomme. Einer der Datenbanknamen beginnt mit "www.". (z.B. "www.test.de"). Möchte ich die Tabellen auslesen, kommt es zu folgender Exception:

java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][SQL Server]Der Server 'www' konnte in sysservers nicht gefunden werden. Führen Sie sp_addlinkedserver aus, um den Server zu sysservers hinzuzufügen.


```
for (Enumeration<String> en = ms.getCatalogs().keys(); en.hasMoreElements() ;) {
	String catalog = en.nextElement();
	try {
		db.setCatalog(catalog);
		ResultSet rsTables = dbm.getTables(catalog, null, null, null);
		while(rsTables.next()) {
			ModelCatalogTable table = new ModelCatalogTable();
			table.setCat(rsTables.getString("TABLE_CAT"));
			table.setSchem(rsTables.getString("TABLE_SCHEM"));
			table.setName(rsTables.getString("TABLE_NAME"));
			table.setType(rsTables.getString("TABLE_TYPE"));
		}						
	} catch (Exception e) {
		System.out.println("Fehler beim Laden von " + catalog);
		e.printStackTrace();
		break;
	}
}
```

Muss ich den String "catalog" irgendwie escapen?

Mit dem Microsoft-üblichen

```
"[" + catalog + "]"
```
gings nicht bei mir, selber fehler.

Viele Grüße
Andreas


----------



## maki (23. Sep 2008)

MS SQL per OBDC Krücke auszulesen ist voll daneben, nimm einen JDBC Treiber, wie zB. jTDS.


----------



## Guest (23. Sep 2008)

Hallo,

da ich Beispielcode hatte, der diesen Treiber verwendet hat, dachte ich, ich lass es am besten so. Ich habs jetzt mal auf den von dir vorgeschlagenen Treiber umgestellt. Ging sehr unkompliziert und es läuft einwandfrei. 

Danke

Viele Grüße
Andreas


----------



## maki (23. Sep 2008)

Erspart auch viele zukünftige Probleme und bietet bessere Performance 

Die sog. JDBC-ODBC Brücke war eine Übergangslösung als JDBC rausgekommen ist und es noch keine treiber von Herstellern gab, war nur für Demos gedacht und sollte nie Produktiv eingesetzt werden. 
Leider finden sich im Netz immer noch soviele Beispiele obwohl das Ding längst verboten gehört.


----------

