# Metadaten / DatenbankAttribute Auslesen



## ObiKenobi (19. Mrz 2012)

Hallo,
für ein Datenbankprojekt muss ich mithilfe eines Java Tools sämtliche "Tabellendaten" auslesen und vergleichen.

Das heißt, Tabellennamen, Tabellenspalten und Tabellenattribute.
Unterschiede sollen dabei ausgegeben werden.

Tabellennamen und Tabellenspalten kann ich auch ohne probleme auslesen und miteinander vergleichen.

Probleme habe ich mit dem Auslesen (und vergleichen) der Metadaten, also ob die Spalte _nullable_
ist welchen Datentyp sie nutzt usw.

Unten angehängt der Codefetzen übe den noch zusätzlich besagte metadaten ausgelesen werden sollen.


```
Statement stmtRowA = connA.createStatement();
			ResultSet resRowA;

			for (int i = 0; i < equalTableList.size(); i++) {
				resRowA = stmtRowA.executeQuery("SHOW COLUMNS FROM " + equalTableList.get(i));
				
				ResultSetMetaData metaDataRowA = resRowA.getMetaData();
				
				while (resRowA.next()) {
					tableRowsA.add(equalTableList.get(i) + "." + resRowA.getString(1));
				}
				
				System.out.println("Columns: " + metaDataB.getColumnCount());

				for (int j = 1; j <= metaDataRowA.getColumnCount(); j++) {
					System.out.println("COLUMN: " + metaDataRowA.getColumnName(j));
//					System.out.println("COLUMN getColumnType: " + metaDataRowA.getColumnType(j));
//					System.out.println("COLUMN getColumnTypeName: "+ metaDataRowA.getColumnTypeName(j));
					
				}
				
			}
```

Das Programm soll mit Oracle und MYSQL funktionieren.

Grüße,
Obi


----------



## SlaterB (21. Mrz 2012)

beschreibe doch deine Probleme, bisher ist keine Frage erkennbar,
die richtigen Befehle scheinst du zu verwenden,
sofern die Daten überhaupt und besonders noch in einheitliche Weise abfragbar sind


----------



## ObiKenobi (21. Mrz 2012)

Hi,

Ja Fragestellung war etwas schiefgelaufen.

Ich wollte wissen mit welchen Befehlen ich die MetaDaten aus der Tabelle rausbekomm. Das hab ich jetzt folgendermaßen gemacht.



```
Statement stmtColumnB = connB.createStatement();
			ResultSet resColumnB;

			for (int i = 0; i < equalTableList.size(); i++) {
				resColumnB = stmtColumnB.executeQuery("SELECT * FROM " + equalTableList.get(i));

				ResultSetMetaData metaDataColumnB = resColumnB.getMetaData();

				while (resColumnB.next()) {
				}

				for (int j = 1; j <= metaDataColumnB.getColumnCount(); j++) {
					ColumnRawData columnRawB = new ColumnRawData();
					columnRawB.columnName = (equalTableList.get(i) + "." + metaDataColumnB.getColumnName(j));
					columnRawB.isNullable = metaDataColumnB.isNullable(j);
					columnRawB.isAutoIncrement = metaDataColumnB.isAutoIncrement(j);
					columnRawB.isCaseSensitive = metaDataColumnB.isCaseSensitive(j);
					columnRawB.isCurrency = metaDataColumnB.isCurrency(j);
					columnRawB.isDefinitelyWritable = metaDataColumnB.isDefinitelyWritable(j);
					columnRawB.isReadOnly = metaDataColumnB.isReadOnly(j);
					columnRawB.isSearchable = metaDataColumnB.isSearchable(j);
					columnRawB.isSigned = metaDataColumnB.isSigned(j);
					columnRawB.isWritable = metaDataColumnB.isWritable(j);

					columnRawDataB.add(columnRawB);
				}

			}
```


----------



## ARadauer (21. Mrz 2012)

Mit den Befehlen die du benutzt hast... das sind die MetaDaten


----------



## ObiKenobi (21. Mrz 2012)

Ja weiß, hab den teil des Programms mittlerweile fertig aber danke


----------

