Abfrage nach existierender SQL-Tabelle

Einklang.

Bekanntes Mitglied
Hallo,

ich habe eine SQL-Tabelle mit Infos über eine Tabelle - als Namen, spaltennamen und datentyp.

Aus diesen Informationen möchte ich nun die Tabellen selbst erstellen mittels SQL! Funktioniert soweit auch ganz gut mit folgendem Code:

Java:
ResultSet restabellen = lokaldb.executeQuery("Select * from tabelleninfos");
		   // int id_tab = res.getInt(1);
		   
		   while (restabellen.next())
			{
			   String tabellenname = restabellen.getString(2);
			   // Abfrage ob Tabelle schon existent
			
			   Statement lokaldb1 = instanz.connection.createStatement();
				
				ResultSet tabellenspaltentyp = lokaldb1.executeQuery("Select * from tabelleninfos where tabname='"+tabellenname+"'");
				
			   while (tabellenspaltentyp.next())
				{
				   String spaltenname = tabellenspaltentyp.getString(3);
				   String datentyp = tabellenspaltentyp.getString(4);
				   sqlabfrage = sqlabfrage + " " + spaltenname + " " + datentyp + ",";
				   
				}
			// Tabelle mit Spalten und Datentyp erstellen mittels "if not exist"
			   System.out.println(tabellenname + sqlabfrage);
			}
		   
		} catch (SQLException ex) {
		   System.out.println("SQL-Exception ist aufgetreten: " + ex.getMessage());
		}

Das Problem ist hier nur, dass in der Tabelle mit den Infos jeder Datensatz für einen Spaltennamen besteht - also Datensatz 1 ist tabellenname1 - spaltennamen1 - datentyp1
Datensatz 2 ist tabellenname1 - spaltenname2 - datentyp2
usw

Der erste Datensatz funktioniert super - Tabellenname wird erkannt, alle Spaltennamen und Datentyp werden ausgelesen und zu einem String zusammengefügt........!
Beim zweiten Datensatz allerdings fängt das Problem an, da im zweiten Datensatz die gleiche Tabelle als Tabellenname drin steht - also sucht er von der gleichen Tabelle wie im ersten Datensatz nach den Spalten und Datentyp..............!

Was fehlt ist eine Überprüfung des Tabellennamens, ob diese SQL-Tabelle schon erstellt wurde....... und dann dementsprechend zum nächsten Datensatz geht bis eben ein neuer Tabellenname gefunden wird.......!

Nur wie mach ich diese Abfrage, ob eine SQL-Tabelle besteht?


danke
 
A

aw3e1245

Gast
Sinnvoller wäre, das richtig zu programmnieren:

- durch eine gruppierte Abfrage feststellen, wie viele Tabellen es überhaupt gibt
- dann die DB-Abfrage derart durchführen, dass alle Datensaätze zu der jeweiligen Tabelle geholt werden
- dann die Tabelle mit ihren Spalten erzeugen
 

Evil-Devil

Top Contributor
Falls du MySQL verwendest kannst du in den Systemtabellen von MySQL nachschauen ob jene Tabelle existiert. Denn MySQL legt diese Informationen und den Aufbau selbst in Tabellen ab.
 
N

nillehammer

Gast
Bin nicht sicher, ob ich Deinen Anwendungsfall 100% verstanden habe. Glaube aber, dass es garnicht nötig ist, eine Tabelle mit Tabelleninfos vorzuhalten. Bei JDBC gibt es das Interface
Code:
DatabaseMetaData
. Darüber kann man sehr viel abfragen, z.B. auch welche Tabellen in einem Schema/einer Datenbank vorhanden sind. Holen tust Du Dir es so:
Java:
DatabaseMetaData metadata = connection.getMetaData();
Und hier der Link zur API-Doku: Java Platform SE 7 - DatabaseMetaData
 

Einklang.

Bekanntes Mitglied
Sinnvoller wäre, das richtig zu programmnieren:

- durch eine gruppierte Abfrage feststellen, wie viele Tabellen es überhaupt gibt
- dann die DB-Abfrage derart durchführen, dass alle Datensaätze zu der jeweiligen Tabelle geholt werden
- dann die Tabelle mit ihren Spalten erzeugen

Das mach ich ja, aber bei der Abfrage nach den TAbellen kommt eine Tabelle ja öfters vor dh die Tabelle wird immer wieder abgearbeitet mit diesen drei Schritten! Genau das ist nämlich das Problem...! :)
(ok in dem Code von oben wird die Tabelle noch gar nicht erzeugt, aber das hat mit dem Problem nichts zu tun...)

Falls du MySQL verwendest kannst du in den Systemtabellen von MySQL nachschauen ob jene Tabelle existiert. Denn MySQL legt diese Informationen und den Aufbau selbst in Tabellen ab.

Wie nillehammer geschrieben hat mit getMetaData()?

Bin nicht sicher, ob ich Deinen Anwendungsfall 100% verstanden habe. Glaube aber, dass es garnicht nötig ist, eine Tabelle mit Tabelleninfos vorzuhalten.

Doch weil es nicht Informationen zu einer lokalen Datenbank sind sondern das ist eine TAbelle in der ich eine SQL Tabelle auf einem Server ausgelesen habe - damit ich später weiß wo welche Daten sind! JEtzt habe ich mich dazu entschlossen, die Datenbankstruktur zu behalten und einfach lokal die gleiche Tabellenstruktur zu erstellen.... daher auch einfach die Tabellen erstellen mit den Infos zu den Tabellen auf dem Server....!

Mit der Metaabfrage könnte ich aber immer wieder Abfragen ob es die Tabelle nun gibt - da müsst ich schauen was in den Metadaten steht......... das wär also auf jeden Fall eine Lösung!
Was mir heute vormittag einfiel: Ich könnte auch ganz einfach eine Variable erstellen und dort nach der ERstellung der Tabellen den Namen eintragen und später bzw bei einem neuen SChleifendurchgang genau diese Variable dann nach dem TAbellennamen durchsuchen..... also einfach gedacht! :-D
 
A

aw3e1245

Gast
Wo machst du das? Mit Select * from tabelleninfos" holst du dir alle Datensätze und nicht erstmal die Gruppe der überhaupt zu erstellenden Tabellen. Und selbstveständlich holst du dir auch nicht in einer zweiten Abfrage nur die Datensätze die zu einer zu erzeugenden Tabelle gehören

Was mir heute vormittag einfiel: Ich könnte auch ganz einfach eine Variable erstellen und dort nach der ERstellung der Tabellen den Namen eintragen und später bzw bei einem neuen SChleifendurchgang genau diese Variable dann nach dem TAbellennamen durchsuchen..... also einfach gedacht!

Murks
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R SQL Abfrage, je nach ausgewählten Parametern Datenbankprogrammierung 11
T Eintragung in einer Spalte nach Abfrage Datenbankprogrammierung 11
D JAVA hängt nach SQL Abfrage Datenbankprogrammierung 7
M Abfrage trennt Ergbnis eines Atrributes nach den Leerzeichen Datenbankprogrammierung 4
B Wie kann ich eine Jtable mit Inhalt einer SQL Abfrage füllen Datenbankprogrammierung 14
J SQLite Abfrage fehlerhaft - komme nicht weiter - please help. Datenbankprogrammierung 3
L PostgreSQL Abfrage mit EclipseLink Datenbankprogrammierung 7
S Berechnung des Datumsunterschieds in der SQL-Abfrage Datenbankprogrammierung 1
Zrebna Probleme bei Überführung von SQL-Code in eine HQL-Abfrage Datenbankprogrammierung 3
btwX28 mysql abfrage über phpmyadmin Datenbankprogrammierung 8
M Alle Records Felder kriegen für DB Abfrage Datenbankprogrammierung 14
pkm PostgreSQL Kann mit mybatis einen Parameter für eine postgreSQL-Abfrage nicht übergeben. Datenbankprogrammierung 5
nonickatall MySQL SQL Abfrage erneut ausführen oder rs aktualisieren Datenbankprogrammierung 14
Kirby.exe Verständnisproblem bei SQL Abfrage Datenbankprogrammierung 27
N SQL-Abfrage in JTextField ausgeben Datenbankprogrammierung 6
N java sql abfrage bestimmer Datumszeitraum Datenbankprogrammierung 9
F Mapping einer SQL Abfrage in eine Klasse Datenbankprogrammierung 4
N Java Abfrage über GUI, Daten hinzufügen Datenbankprogrammierung 54
Bluedaishi Datenbank Abfrage Datenbankprogrammierung 36
W MySQL DB Abfrage in Array, gemischte Array, generelles vorgehen Datenbankprogrammierung 4
D SQL Abfrage optimieren Datenbankprogrammierung 35
D MySQL Abfrage Datenbankprogrammierung 5
D MySQL Abfrage sortieren Datenbankprogrammierung 4
D MySQL Abfrage SUM datediff Datenbankprogrammierung 3
D Regelmäßige Abfrage aus Workbench Datenbankprogrammierung 6
M SQL-Statement Hilfe bei SQL-Abfrage Datenbankprogrammierung 2
D Abfrage - Spalte(Datum) ändern (Oracle) Datenbankprogrammierung 7
D Datenbank Abfrage Datenbankprogrammierung 7
H MySQL Benutzer Login System mit Datenbank Informationen (Abfrage zu User ist auf DB gesichert) Datenbankprogrammierung 42
D MySQL Abfrage mit kumulierten Werten Datenbankprogrammierung 16
M MySQL Anbindung und Abfrage an die Datenbank Datenbankprogrammierung 2
RowdyN SQLite Einfache Abfrage mit temporäre Tabelle, die nur innerhalb der Abfrage gültig ist Datenbankprogrammierung 0
E Abfrage auf HSQLDB Datenbankprogrammierung 4
M MySQL SQL Abfrage in JTable mit Berechnung Datenbankprogrammierung 3
S Abfrage von Gruppentickets(Mehrere Resorts an einem Tag) Datenbankprogrammierung 1
S SQL Abfrage Datenbankprogrammierung 2
F Abfrage der letzten Einträge Datenbankprogrammierung 2
J SELECT Abfrage/Suche Datenbankprogrammierung 4
U SQLite Für mich etwa komplexe Abfrage via 2 Tabellen Datenbankprogrammierung 5
OnDemand SQL Abfrage und Equals Datenbankprogrammierung 4
B MySQL MySQL-Abfrage von aufsummierter Zeit Datenbankprogrammierung 3
M MySQL MySQLSyntaxError in Java, obwohl Abfrage in HeidiSQL korrekt Datenbankprogrammierung 2
ruutaiokwu sql abfrage mit rekursion, mit oder ohne cte... Datenbankprogrammierung 5
J SQLite Abfrage ausführen stoppt für Zyklus? Wie es zu lösen? Datenbankprogrammierung 3
L JSONArray/JSONObject MySQL-Servlet Abfrage Datenbankprogrammierung 2
H Derby: SYSCS_UTIL.SYSCS_EXPORT_QUERY mit String Abfrage in wehre-Klausel nicht möglich Datenbankprogrammierung 3
L SQL-Abfrage bricht vor dem Ende ab Datenbankprogrammierung 2
S MySQL Abfrage über mehrere Tabellen + Einträge werden überschrieben Datenbankprogrammierung 1
M Derby/JavaDB Komplexe Abfrage vereinfachen Datenbankprogrammierung 2
S SQL-Abfrage, Filewriter .txt Datei Datenbankprogrammierung 2
P Datenbank- Abfrage mit null'en Datenbankprogrammierung 2
Bluedaishi MySQL Abfrage Problem :-) Datenbankprogrammierung 21
D MySQL Erstellen der richtigen Abfrage Datenbankprogrammierung 3
D MySQL DB Abfrage Prüfen Datenbankprogrammierung 10
D JDBC insert mit select abfrage Datenbankprogrammierung 5
E PostgreSQL Exception too ...many clients already bei DB-Abfrage Datenbankprogrammierung 14
M MySQL SQL Abfrage Problem Datenbankprogrammierung 6
W No data found: SQL-Abfrage funktioniert nur beim Debuggen Datenbankprogrammierung 3
H JSON Array abfrage beschleunigen Datenbankprogrammierung 2
S MySQL Abfrage: Wenn Feld leer, alles anzeigen Datenbankprogrammierung 5
Mrtwomoon Abfrage-Ergebnisse in einem Fenster darstellen Datenbankprogrammierung 8
0 SQL Abfrage Bestellung Datenbankprogrammierung 15
G SQLite SQLite Abfrage Datenbankprogrammierung 4
C Mit jsp über Java eine DB Abfrage durchführen --> java.lang.ClassNotFoundException Datenbankprogrammierung 4
Dit_ Hibernate, effiziente SQL-Abfrage definieren Datenbankprogrammierung 5
B My-SQL Abfrage - Out Of Memory Error Datenbankprogrammierung 13
C MySQL Problem mit UPDATE Abfrage Datenbankprogrammierung 13
K SQLite Einfache DB-Abfrage Datenbankprogrammierung 2
C Problem mit SQL-Abfrage Datenbankprogrammierung 5
C Sortierung bei SQL-Abfrage Datenbankprogrammierung 3
B Bei Abfrage schießt der Speicher in die Höhe Datenbankprogrammierung 6
M SQL Abfrage Dupliakte bei Kreuzvergleich Datenbankprogrammierung 2
M Access Abfrage mit Parameter & Access/Java liefern unterschiedliche Ergebnisse Datenbankprogrammierung 2
G SQL Abfrage Datenbankprogrammierung 5
C SQL-Abfrage Datenbankprogrammierung 4
B SQL-Abfrage Datenbankprogrammierung 4
C Wert in SQL-Abfrage zählen lassen Datenbankprogrammierung 8
R Memory leaks bei DB Abfrage Datenbankprogrammierung 16
S Abfrage auf SQLite-DB Datenbankprogrammierung 2
I Belastet es das System zu sehr einen Timer jede 0.2 Sekunden eine DB Abfrage machen zu lassen? Datenbankprogrammierung 9
L MySQL Probleme mit PreparedStatement für SQL-Abfrage in Java Datenbankprogrammierung 2
G Abfrage von Teilnehmern Datenbankprogrammierung 4
B HSQLDB Probleme mit Select...Where Abfrage Datenbankprogrammierung 16
G JOIN Abfrage über mehrere Tabellen Datenbankprogrammierung 15
F MySQL SQL Abfrage für u.a. Spaltenname key Datenbankprogrammierung 4
G SQLite Abfrage, ob in Tabelle X Spalte Y existiert Datenbankprogrammierung 4
A MySQL Ergebnss aus SQL Abfrage in Hauptklasse verwenden Datenbankprogrammierung 3
N Geschwindigkeit bei if Abfrage Datenbankprogrammierung 11
J sql abfrage ... Problem mit Datumswert Datenbankprogrammierung 3
G Performante SQL- Abfrage (LIKE %) Datenbankprogrammierung 21
G Join Abfrage Datenbankprogrammierung 12
M db abfrage fehlerhaft Datenbankprogrammierung 5
C MySQL Abfrage mit flexibler WHERE bedingung Datenbankprogrammierung 10
C Datenbank-Abfrage, if im Select Datenbankprogrammierung 9
S MySQL Frage zu LeftJoin Abfrage Datenbankprogrammierung 2
G SQL Abfrage über mehrere Tabellen Datenbankprogrammierung 28
H SQL Abfrage - zwei tabellen vergleichen. Datenbankprogrammierung 2
H MySQL Datenbank Abfrage Datenbankprogrammierung 10
André Uhres SQL Abfrage erkennt keine Buchstaben mit Akzenten (z. B. é, è) Datenbankprogrammierung 3
E MySQL Klasse zur Abfrage statisch oder Standard Datenbankprogrammierung 5

Ähnliche Java Themen

Neue Themen


Oben