Im mysql Statement den Tabellennamen als Variabel

Hallo.
Das zweite mal, dass ich verzweifle an eine scheinbar trvialen Aufgabe…
Ich arbeite an einem Programm, mit dessen Hilfe der Benutzer Räumlichkeiten eines Kongresszentrums verwalten kann. Garnicht so umfangreich. Mann soll Echdaten zu den Veranstaltungen des jeweiligen Raums in einem JFrame aingeben. Diese werden in einer mysql Datenbank hinterlegt. Mit den Daten daraus soll final eine Übersicht generiert werden, in der man alle Räume sieht und beim anwählen eines Raums einzelheiten, wie die Beschreibung der Veranstaltung einsehen kann.

Wie weit ich gekommen bin:
Das Fenster zum anlegen der Eckdaten ist soweit fertig und kann ausgelesen werden. Raum, Datum, Beschreibung usw.
Auch das speichern in der Datenbank funktioniert soweit. Ich möchte über eine Auswahl einer Combobox den Tabellennamen im SQL Statement beeinflussen. Hier erstmal der Code:

Ich dachte mir das es genauso funktionieren könnte wie bei den Values. Aber ich bekomme es einfach nicht hin.

folgende Fehlermeldung wird mir ausgegeben:
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ‚‚rheinsaal‘ (Name VA, BIA, Ansprechpartner, Kontakt, Beschreibung, `Lo‘ at line

Auch wenn ich den String (?) in Apostrophen schreibe funktioniert es nicht.
Dann erkennt das Program den String nicht als String sondern als Namen einer Tabelle, die ja nicht existiert.

Auch wenn ich die Variabel als preparedStatement.setString(1, „"+getLocation+"“); schreibe gibt er mir
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ‚‘rheinsaal’ (Name VA, BIA, Ansprechpartner, Kontakt, Beschreibung, `’ at line
aus…

Jemand eine Idee?

Sowas habe ich auch schon versucht und meines Wissens nach geht das nicht.
Was man machen könnte mittels String.format oder replace den Tabellennamen einfügen (was definitiv NICHT zu empfehlen ist hinsichtlich SQL Injection)

Aus dem Text heraus liest es sich so, dass jeder Raum eine Tabelle sein soll, in dem Fall scheint das Datenmodell eher ungünstig zu sein.

Du solltest eine Tabelle mit Räumen haben und eine zweite Tabelle mit den Belegungen die dann die Raum ID als Foreign Key beinhalten (falls es eine 1:n Beziehung ist)

Du bist genial… Ich setzte mich sofort dran und mach das so. Ich hätte gestern sofort damit angefangen aber musste zur Arbeit. Es dreht sich alles nur noch darum in meinem Kopf. Ich bin ein bisschen besessen… :slight_smile:

Danke für deine Hilfe!!!

Ach genial ist so ein großes Wort, da bin ich eher bescheiden^^ (aber für irgendwas muss die 1.0 in der Datenbankvorlesung ja gut gewesen sein (wobei ich mich immernoch frage wie ich das geschafft habe))

@ Clayn oder andere Nerds…
Zum Verständnis… Ich bin ein kompletter Anfänger, der versucht eine Java Applikation zu programmieren, die nicht aufwendig erscheint, mir aber meine Arbeit und damit einen großen Teil meines Lebens sehr viel einfacher gestaltet.

Ich habe einfach mal drauf los „programmiert“ und mir war klar das es viel Arbeit ist, das ist auch nicht das Problem. Das „Problem“ ist dass ich ungestüm und blauaügig an die Sache heran gegangen bin und desswegen schon zum vierten mal von vorme angefangen habe.
Die Hilfestellung in Sachen Datenbank hat mir sehr geholfen und gleichermaßen klar gemacht, dass es ein guter Ratgeber ist, sich erst zu informieren und dann den nächsten Schritt zu machen…

Aus diesem Grund habe ich mir diesemal lange Gedanken über die Datenbankstruktur gemacht und würde gerne eure Meinung dazu hören, bzw ein Feedback bekommen ob ich das überhaupt richtig verstehe und auf dem richtigen Weg bin…

Dazu folgende Folien:

Das grobe Endergebniss meiner Arbeit soll wie gesagt eine tagesaktuelle Übersicht der Veranstaltungen in den Räumlichkeiten eines Kongresszentrums werden… (tagesaktuell im Sinne von: Das Programm stellt in der obrigen Zeile den aktuellen Tag dar. Im gesamten eine Wochenübersicht. Final auch mit der Möglichkeit das Startdatum zu wählen. Eine Art Terminplaner für viele Räume)

Nun möchte ich wie gesagt die Datenbank von anfang an richtig anlegen um nichts zu übersehen, bis ich schließlich merke das das Auslesen der Datenbank nicht so funktioniert, wie ich das gerne hätte.

Im Folgenden drei Lösungsansätze der strukturierung meiner Datenbank…

Variante (1)

Variante (2)

Variante (3)

Ich wäre euch erneut sehr dankbar für eure Hilfe… (malwieder)

Rico

Ich bin für Variante 2.
Stellt eine übliche 1:n Verbindung dar (eine Veranstaltung hat genau ein Raum aber ein Raum hat n Veranstaltungen).

Die erste Spalte (ID) brauchst du natürlich nicht, wenn du deine eigene ID (RaumID) verwendest

Genau so habe ich mir das gedacht. Habe mich gestern noch weiter belesen und ein Beispiel mit Versicherrungsverträgen gefunden. Und dort wird das auch so gelöst.

Ich mache mich ran und lasse euch wissen wie es ausgeht.

Vielen, vielen Dank schoneinmal für Deine Hilfe.