Unbekannte Datenbank über Metadaten auslesen?

Status
Nicht offen für weitere Antworten.

NiBurhe

Mitglied
Hallo,

wir sollen für die BA ein Java Programm schreiben, was aus einer unbekannten Datenbank möglichst viele Informationen aus den Metadaten holt. Leider weiss ich nicht wirklich, wie ich da an brauchbare Daten rankommt, weil das eine Fülle an Daten sind, die mir aber alle nicht wirklich was sagen.

Wie komme ich z.B. an Tabellennamen in der DB?
Wie komme ich an die Spaltennamen in den jeweiligen Tabellen?
.
.
.

Gibt es irgendwo eine gute Übersicht für sowas?

Vielen Dank!
NiBurhe
 

NiBurhe

Mitglied
DP hat gesagt.:
welches dbms? access, mysql, txt, ... ?
Gibt es da einen Unterschied, dachte durch das jdbc würden die alle die gleichen Methoden haben?
H2 und MySQL hatte ich mir jetzt erstmal so vorgenommen.
Gast hat gesagt.:
Siehe: java.sql.DatabaseMetaData
Das Problem ist, dass ich nicht wirklich weiss, welche ich davon benötige, weil das ja doch einige sind.

Danke
NiBurhe[/quote]
 
G

Guest

Gast
Hier ein simples Beispiel
Code:
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;

public class DatabaseMetaDataTest {

   private static void printResultSet(ResultSet rs) throws SQLException {
      try {
         ResultSetMetaData rsmd = rs.getMetaData();
         while(rs.next()) {
            for(int i=1, n=rsmd.getColumnCount(); i<=n; i++) {
               System.out.print(String.format("%s = %s; ", rsmd.getColumnName(i), rs.getString(i)));
            }
            System.out.println();
         }
      }
      finally {
         rs.close();
      }
   }
   
   public static void main(String[] args) throws Exception {
      Connection connection = null;
      try {
         Class.forName("org.h2.Driver");
         connection = DriverManager.getConnection("jdbc:h2:tcp://localhost/db", "user", "password");

         DatabaseMetaData dbmd = connection.getMetaData();
         printResultSet(dbmd.getCatalogs());
         System.out.println();
         printResultSet(dbmd.getSchemas());
         System.out.println();
         printResultSet(dbmd.getTables(null, null, "%", null));
         System.out.println();
         printResultSet(dbmd.getColumns(null, null, "%", "%"));
      }
      finally {
         if(connection != null) {
            connection.close();
         }
      }
   }

}
 

NiBurhe

Mitglied
Danke

aber gibt es auch eine Möglichkeit an die User Tabellen dranzukommen? Das scheinen jetzt ja nur die Systeminternen Tabellen zu sein und nicht die, die der User angelegt hat.

MfG
NiBurhe
 
G

Guest

Gast
NiBurhe hat gesagt.:
aber gibt es auch eine Möglichkeit an die User Tabellen dranzukommen? Das scheinen jetzt ja nur die Systeminternen Tabellen zu sein und nicht die, die der User angelegt hat.
Die vom User angelegte Tabellen sind doch auch dabei. Schau dir doch die Beschreibung zu getTables an.
In meinem Beispiel wird so gut wie alles ausgegebe, du kannst die Auswahl aber einschränken.
 

NiBurhe

Mitglied
Hallo,

ich habe es jetzt soweit, dass er mir die Tabellen ausgibt, leider nur die Systemtabellen

Folgende Abfragen werden bearbeitet
Code:
			setTable(dbmd.getCatalogs());
			System.out.println();
			setTable(dbmd.getSchemas());
			System.out.println();
			setTable(dbmd.getTables(null, null, "%", null));
			System.out.println();
			setTable(dbmd.getColumns(null, null, "%", "%"));

Mit dem Ergebnis:
Code:
Tabellen
CATALOGS
	CATALOG_NAME
COLLATIONS
	NAME
	KEY
COLUMNS
	TABLE_CATALOG
	TABLE_SCHEMA
	TABLE_NAME
	COLUMN_NAME
	ORDINAL_POSITION
	COLUMN_DEFAULT
	IS_NULLABLE
	DATA_TYPE
	CHARACTER_MAXIMUM_LENGTH
	CHARACTER_OCTET_LENGTH
	NUMERIC_PRECISION
	NUMERIC_PRECISION_RADIX
	NUMERIC_SCALE
	CHARACTER_SET_NAME
	COLLATION_NAME
	TYPE_NAME
	NULLABLE
	IS_COMPUTED
	SELECTIVITY
	CHECK_CONSTRAINT
	REMARKS
COLUMN_PRIVILEGES
	GRANTOR
	GRANTEE
	TABLE_CATALOG
	TABLE_SCHEMA
	TABLE_NAME
	COLUMN_NAME
	PRIVILEGE_TYPE
	IS_GRANTABLE
CONSTANTS
	CONSTANT_CATALOG
	CONSTANT_SCHEMA
	CONSTANT_NAME
	DATA_TYPE
	REMARKS
	SQL
	ID
CONSTRAINTS
	CONSTRAINT_CATALOG
	CONSTRAINT_SCHEMA
	CONSTRAINT_NAME
	CONSTRAINT_TYPE
	TABLE_CATALOG
	TABLE_SCHEMA
	TABLE_NAME
	CHECK_EXPRESSION
	COLUMN_LIST
	REMARKS
	SQL
	ID
CROSS_REFERENCES
	PKTABLE_CATALOG
	PKTABLE_SCHEMA
	PKTABLE_NAME
	PKCOLUMN_NAME
	FKTABLE_CATALOG
	FKTABLE_SCHEMA
	FKTABLE_NAME
	FKCOLUMN_NAME
	ORDINAL_POSITION
	UPDATE_RULE
	DELETE_RULE
	FK_NAME
	PK_NAME
	DEFERRABILITY
DOMAINS
	DOMAIN_CATALOG
	DOMAIN_SCHEMA
	DOMAIN_NAME
	COLUMN_DEFAULT
	IS_NULLABLE
	DATA_TYPE
	PRECISION
	SCALE
	TYPE_NAME
	SELECTIVITY
	CHECK_CONSTRAINT
	REMARKS
	SQL
	ID
FUNCTION_ALIASES
	ALIAS_CATALOG
	ALIAS_SCHEMA
	ALIAS_NAME
	JAVA_CLASS
	JAVA_METHOD
	DATA_TYPE
	COLUMN_COUNT
	RETURNS_RESULT
	REMARKS
	ID
FUNCTION_COLUMNS
	ALIAS_CATALOG
	ALIAS_SCHEMA
	ALIAS_NAME
	JAVA_CLASS
	JAVA_METHOD
	POS
	COLUMN_NAME
	DATA_TYPE
	TYPE_NAME
	PRECISION
	SCALE
	RADIX
	NULLABLE
	COLUMN_TYPE
	REMARKS
HELP
	ID
	SECTION
	TOPIC
	SYNTAX
	TEXT
	EXAMPLE
INDEXES
	TABLE_CATALOG
	TABLE_SCHEMA
	TABLE_NAME
	NON_UNIQUE
	INDEX_NAME
	ORDINAL_POSITION
	COLUMN_NAME
	CARDINALITY
	PRIMARY_KEY
	INDEX_TYPE_NAME
	IS_GENERATED
	INDEX_TYPE
	ASC_OR_DESC
	PAGES
	FILTER_CONDITION
	REMARKS
	SQL
	ID
	SORT_TYPE
IN_DOUBT
	TRANSACTION
	STATE
LOCKS
	TABLE_SCHEMA
	TABLE_NAME
	SESSION_ID
	LOCK_TYPE
RIGHTS
	GRANTEE
	GRANTEETYPE
	GRANTEDROLE
	RIGHTS
	TABLE_SCHEMA
	TABLE_NAME
	ID
ROLES
	NAME
	REMARKS
	ID
SCHEMATA
	CATALOG_NAME
	SCHEMA_NAME
	SCHEMA_OWNER
	DEFAULT_CHARACTER_SET_NAME
	DEFAULT_COLLATION_NAME
	IS_DEFAULT
	REMARKS
	ID
SEQUENCES
	SEQUENCE_CATALOG
	SEQUENCE_SCHEMA
	SEQUENCE_NAME
	CURRENT_VALUE
	INCREMENT
	IS_GENERATED
	REMARKS
	CACHE
	ID
SESSIONS
	ID
	USER_NAME
	SESSION_START
	STATEMENT
	STATEMENT_START
SETTINGS
	NAME
	VALUE
TABLES
	TABLE_CATALOG
	TABLE_SCHEMA
	TABLE_NAME
	TABLE_TYPE
	STORAGE_TYPE
	SQL
	REMARKS
	ID
TABLE_PRIVILEGES
	GRANTOR
	GRANTEE
	TABLE_CATALOG
	TABLE_SCHEMA
	TABLE_NAME
	PRIVILEGE_TYPE
	IS_GRANTABLE
TABLE_TYPES
	TYPE
TRIGGERS
	TRIGGER_CATALOG
	TRIGGER_SCHEMA
	TRIGGER_NAME
	TRIGGER_TYPE
	TABLE_CATALOG
	TABLE_SCHEMA
	TABLE_NAME
	BEFORE
	JAVA_CLASS
	QUEUE_SIZE
	NO_WAIT
	REMARKS
	SQL
	ID
TYPE_INFO
	TYPE_NAME
	DATA_TYPE
	PRECISION
	PREFIX
	SUFFIX
	PARAMS
	AUTO_INCREMENT
	MINIMUM_SCALE
	MAXIMUM_SCALE
	RADIX
	POS
	CASE_SENSITIVE
	NULLABLE
	SEARCHABLE
USERS
	NAME
	ADMIN
	REMARKS
	ID
VIEWS
	TABLE_CATALOG
	TABLE_SCHEMA
	TABLE_NAME
	VIEW_DEFINITION
	CHECK_OPTION
	IS_UPDATABLE
	STATUS
	REMARKS
	ID

Das sind aber nur die Systemtabellen und nicht die vom User, wie man in folgendem Bild sehen kann
db.jpg


Wie bekomme ich die User Tabellen auch noch mit rein? Hier in dem Beispiel die Test Tabelle, oder habe ich die Tabelle an sich falsch angelegt?

MfG
NiBurhe[/img]
 
G

Guest

Gast
Die User-Tabellen sind bei H2 im PUBLIC-Schema. Systemtabellen in INFORMATION_SCHEMA
Code:
printResultSet(dbmd.getTables(null, "PUBLIC", "%", null));
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
X MySQL Hibernate: Massenupdate auf unbekannte Tabelle Datenbankprogrammierung 4
torresbig MySQL hibernate - could not resolve entity class ... (Datenbank Anfänger) Datenbankprogrammierung 19
M Meine Datenbank lässt sich mit meiner Methode nicht ändern Datenbankprogrammierung 1
I SaaS Applikation: pro Kunde eine Datenbank / Schema oder eine DB für alle Kunden? Datenbankprogrammierung 76
T SQL-Statement Datenbank nach SQL Statement schließen? Datenbankprogrammierung 7
M Datenbank Zugraff nach Umwandlung in .jar-Datei nicht mehr möglich Datenbankprogrammierung 4
Auf MySql Datenbank zugreifen funktioniert nicht Datenbankprogrammierung 8
MongoDB-Datenbank in Androidstudio einbinden Datenbankprogrammierung 1
thor_norsk Datenbank: Apache Derby Datenbankprogrammierung 6
B SQlite Datenbank, trotz Statements wurden nicht alle Zeilen erzeugt? Datenbankprogrammierung 35
M Datenbank mit REST API Datenbankprogrammierung 66
M Entfernte Datenbank Datenbankprogrammierung 11
T Datenbank: Tabelle erstellen bei Web-Applikation Datenbankprogrammierung 4
D SQLite Datenbank in Android Studio (Java) durchsuchen Datenbankprogrammierung 3
M MySQL Datenbank in Array Datenbankprogrammierung 2
S Den letzten Eintrag aus Datenbank ziehen (Oracle SQL Dev.) Datenbankprogrammierung 14
N Datenbank abfragen nach bestimmten Wort Datenbankprogrammierung 7
Beginner22 Zugriff auf Datenbank aus Java über mariadb Datenbankprogrammierung 3
ma095 value NULL- Datenbank Postgresql Spring - intellij community Datenbankprogrammierung 0
raptorrs Plötzlich keine Verbindung zur Datenbank mehr möglich Datenbankprogrammierung 14
Davee SQLite SQLite Datenbank lässt sich nicht auf anderen PCs öffnen Datenbankprogrammierung 8
P Datenbank Tool - besser als oracle SQL Developer gesucht mit effizinte Verbindungsverwaltung Datenbankprogrammierung 2
X JPA (EclipseLink) und Oracle Datenbank Datenbankprogrammierung 2
T Datenbank auf einer Webseite aus einer Exceltabelle erstellen Datenbankprogrammierung 5
L SQL Datenbank Datenbankprogrammierung 7
L SQL Datenbank INSERT INTO Datenbankprogrammierung 6
L SQL Datenbank Tabelle insert Datenbankprogrammierung 7
L SQL Datenbank Tabelle erstellen Datenbankprogrammierung 6
nonickatall MySQL Auf neue Datensätze in einer Datenbank reagieren Datenbankprogrammierung 5
W MYSQL Datenbank Login Android Datenbankprogrammierung 3
anton1 Online Datenbank Datenbankprogrammierung 7
krgewb H2-Datenbank öffnen Datenbankprogrammierung 8
J Datenbank abfragen Datenbankprogrammierung 6
P Verbindung zu einer Access Datenbank per Eclipse oder Intellij Datenbankprogrammierung 0
O SQL Abfragen mit Mini Datenbank Datenbankprogrammierung 12
Z Datenbank Choicebox wird nicht befüllt Datenbankprogrammierung 15
S Suche In SQL Datenbank mit array Datenbankprogrammierung 6
P Enum in der Datenbank Datenbankprogrammierung 1
Z SQL- Datenbank 1.PK zu 2.FK Datenbankprogrammierung 3
E netbeans - jsp Daten in Datenbank hinzufügen Datenbankprogrammierung 2
bueseb84 Spring Boot : Update Mysql Datenbank Datenbankprogrammierung 1
Avalon Attribute werden mit Unterstrich in eine MySQL Datenbank eingetragen Datenbankprogrammierung 10
MiMa wo Datenbank verbinden/trennen? Datenbankprogrammierung 1
H MySQL Verbindung Datenbank und Eclipse (Java) Datenbankprogrammierung 5
DeltaPilot12 Datenbank connect Funktion Datenbankprogrammierung 7
J Oracle Datenbank-Tabelle per Combobox (oder ähnliches) auswählen Datenbankprogrammierung 3
N SQL Datenbank Spalte in Java Array Datenbankprogrammierung 2
J JAR-Datei und Datenbank Datenbankprogrammierung 8
Bluedaishi Datenbank Abfrage Datenbankprogrammierung 36
Kirby.exe Zeile aus der Datenbank holen wenn ein match besteht Datenbankprogrammierung 7
Kirby.exe Es werden keine Einträge in der Datenbank gemacht Datenbankprogrammierung 23
C Datenbank anlegen und über eine Website mit Daten füllen? Datenbankprogrammierung 25
J Welche Kriterien haben Einfluss auf die Geschwindigkeit einer Datenbank ? Datenbankprogrammierung 4
B Frage zu Datenbank Design bei Events (ZenDesk) Datenbankprogrammierung 1
M SQLite Datenbank mit SQLite Datenbankprogrammierung 7
C String in Datenbank einfügen Datenbankprogrammierung 11
C Keinen Zugrift auf Datenbank Datenbankprogrammierung 2
C Datenbank zugreifen Datenbankprogrammierung 10
L Auf Strato Datenbank zugreifen Datenbankprogrammierung 7
H Fehler bei getConnection zu MySQL Datenbank Datenbankprogrammierung 18
G Datenbank Statement Datenbankprogrammierung 22
M Datenbank editierbach machen in JTable Datenbankprogrammierung 13
S Datenbank MySQL und Java Datenbankprogrammierung 8
M H2 Verbindung zur Datenbank komplett schließen Datenbankprogrammierung 11
J Aufbau meiner Datenbank/Tabelle - Verbessern? So lassen? Datenbankprogrammierung 39
J Nur CRUD über Datenbank Klasse, oder auch mehr ? Datenbankprogrammierung 2
Dimax MySQL Maximale Datenlänge für eine Spalte einer Datenbank in java ermitteln Datenbankprogrammierung 15
L Appabsturz mit Datenbank Datenbankprogrammierung 4
J Zahlungseingänge von mehreren Kunden wie am besten abbilden in der Datenbank ? Datenbankprogrammierung 8
L Datenbank sichern Datenbankprogrammierung 8
S Daten von SQLite Datenbank nutzen Datenbankprogrammierung 5
J Datenbank VPS Server Datenbankprogrammierung 3
H MySQL MySQL - Keine Verbindung zur Datenbank?! Datenbankprogrammierung 4
NIckbrick MySQL Befehle aus Datenbank auslesen Datenbankprogrammierung 21
S Datenbank/Java true/false Datenbankprogrammierung 8
J JUNIT und CRUD-Datenbank Datenbankprogrammierung 4
F Datenbank/Datenabgleich/Wiederholungsabfrage Datenbankprogrammierung 12
@SupressWarnings() Eure bevorzugte Datenbank-Library Datenbankprogrammierung 9
C datenbank verbindung config Datenbankprogrammierung 23
L MySQL Android zu externer MySQL Datenbank verbinden Datenbankprogrammierung 5
M Datenbank vor unerlaubtem Zugriff durch Benutzer schützen Datenbankprogrammierung 3
U MySQL Aus Servlet in Datenbank schreiben Datenbankprogrammierung 4
H Datenbank Export mit Java Datenbankprogrammierung 3
P Daten in eine mySQL Datenbank einfügen Datenbankprogrammierung 4
S SQL-Statement Datenbank Zeitbereich durchsuchen Datenbankprogrammierung 2
L Messenger App - Wie am besten auf Datenbank zugreifen? Datenbankprogrammierung 4
H MySQL Datenbank auf Xampp nimmt keine Mediumblob an. Datenbankprogrammierung 0
D Datenbank Abfrage Datenbankprogrammierung 7
H MySQL Benutzer Login System mit Datenbank Informationen (Abfrage zu User ist auf DB gesichert) Datenbankprogrammierung 42
L Oracle Datenbank über Java aufrufen Datenbankprogrammierung 29
DaCrazyJavaExpert Derby/JavaDB Unfindbarer Fehler im Datenbank-Code Datenbankprogrammierung 87
DaCrazyJavaExpert Derby/JavaDB Wert einer Variable in der Datenbank direkt auf 1 setzten. Datenbankprogrammierung 71
W MySQL Ausgabe von Datenbank in Java-App Datenbankprogrammierung 6
M portable Datenbank Datenbankprogrammierung 2
S Name aus der Datenbank bekommen Datenbankprogrammierung 2
K Eclipse: JBoss Hibernate Tool: Kein Zugriff auf Datenbank Datenbankprogrammierung 5
MaxG. Datenbank werte vergleichen Datenbankprogrammierung 5
MaxG. Access Datenbank Datenbankprogrammierung 48
@SupressWarnings() HSQLDB Datenbank für mein Dorfbauspiel "Time of Kings" Datenbankprogrammierung 6
K SQLite Datenbank in App integrieren: Vor Auslesen schützbar? Datenbankprogrammierung 6

Ähnliche Java Themen

Neue Themen


Oben