# MSSQL - Spalten mit der Option: NULL zulassen



## a.schroden (16. Sep 2008)

Hallo,

ich versuche grade mit Hilfe von JDBC einige Voreinstellungen einer Datenbank auszulesen. Dazu gehören unter anderem alle Tabellen, die Spaltennamen, welche davon die Primary-Keys sind, etc.

Mir fehlen allerdings noch 2 Sachen:

1.) Wie finde ich raus, ob eine Spalte den werd NULL annehmen kann oder nicht (NICHT ob ein Datensatz NULL ist, also mit wasNull)?

2.) Wie finde ich bei Fremdschlüsseln heraus, wo sich der Primärschlüssel befindet?

Mfg

Andreas


----------



## musiKk (16. Sep 2008)

1. ResultSetMetaData
2. DatabaseMetaData

Solltest darin dann eigentlich finden, was du suchst.


----------



## a.schroden (17. Sep 2008)

Danke Manchmal muss man anscheinend doch von anderen nochmal auf die Lösung hingewiesen werden, die man direkt vor Augen hatte. Interessanterweise habe ich schon genau diese beiden Ansätze verwendet, um die gewünschten Daten zu ermitteln und nur 2 Zeilen zum Code hinzufügen müssen*gg*


Hier ein Code-Schnipsel zur Lösung für 1:


```
try {
			ResultSetMetaData rsm = rs.getMetaData();
			
			for(int i=1;i<rsm.getColumnCount();i++) {
				System.out.println("Name: " + rsm.getColumnName(i));
				System.out.println("Datentyp: " + rsm.getColumnType(i));
				System.out.println("Datentyp-Name: " + rsm.getColumnTypeName(i));
				System.out.println("Feldgröße: " + rsm.getPrecision(i));
				System.out.println("Dezimalstellen: " + rsm.getScale(i));

				// Hinzugefuegt :)
				System.out.println("Nullable: " + rsm.isNullable(i));
				System.out.println("Autowert: " + rsm.isAutoIncrement(i));


				System.out.println("");
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
```


zur 2:

In DatabaseMetaData gibt es die Methoden:
- getPrimaryKeys
- getImportedKeys
- getExportedKeys

Habs noch nicht getestet, aber damit sollte sich was anfangen lassen.



Viele Grüße

Andreas


----------

