hsqldb (beziehungen zw. Tabellen)

  • Themenstarter Themenstarter Baaron
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
B

Baaron

Gast
Hallo @all,

ich wollte später mit hsqldb arbeiten zuerst wollte ich paar sachen ausprobieren
hab diesen bsp.: http://javamagazin.de/itr/online_artikel/psecom,id,312,nodeid,11.html

ich versuche grad 2 Tabellen(A und B) zu erstellen in A ist ID primärschlüssel
in B ist Primärschlüssel ID und Fremdschlüssel sollte ID_Name sein.
Primärschlüssel mach ich so:ID INTEGER IDENTITY
Fremdschlüssel? FOREIGN KEY (id_name) REFERENCES A (id) ???

A
id name
1 blub
2 test

B
id id_name xxx
1 1 22
2 1 23
3 1 24
4 2 5

eine andere Frage wie krieg ich hin, dass angelegte Tabelle auch im pfad bleibt? und nit gelöscht wird?
sonst muss ich ja jedesmal create table aufrufen, bevor ich insert mache 🙂
 
sry kannst du mir vlt. link geben wo ich den sql-syntax für foreign key finde? ich hab meistens mit Dbmanager gearbeitet, da musste ich nur rumklicken, was der keys anging...

also vlt. hab ich falsch verstanden..ich dachte hsqldb lässt die erstellte tabelle irgendwo auf hd gespeichert.

oder muss ich jedesmal bevor ich ein insert ausführe auf eine Tabelle, diese vorher jedesmal neu erstellen?
ich wollte eigentlich Tabelle anlegen mit Daten und dann wenn user z.B daten ansehen will, dann sollte einfach nur ein select ausgeführt werden und nicht nochmal ein create und insert der daten..
bei dem bsp. was ich jetzt habe...muss ich jedesmal create table machen. Wenn ich das weglasse und nur insert mache, dann sagt er das die Tabelle nicht gibt....
 
FOREIGN KEY (spalte) REFERENCES AndereTabelle(spalte)

Wie erstellst du denn deine HSQLDB? Du hast die Möglichkeit deine Tabelle komplett im Speicher zu lassen oder alternativ die Daten auf die Festplatte zu speichern. Imho sollte bei einem einfachen CREATE TABLE die Tabelle direkt in die DB auf der Festplatte gespeichert werden.
 
tippe
sql create foreign
in google ein, dann findest du was

-------

diese DB existiert nur im Hauptspeicher, nicht auf der Festplatte,
zu jedem Programmstart musst du bei 0 anfangen
(edit: oder doch, siehe Hobbit 😉 )
 
thx für die Antworten
also ich erstelle meine Tabelle so wie hier im beispiel:
http://javamagazin.de/itr/online_artikel/psecom,id,312,nodeid,11.html
also ich möchte die Daten auf festplatte ablegen...könnte mir evtl. jemand sagen, was ich im code ändern sollte? irgendwie finde ich zur hsql nicht soviel im Netz, außer der description, da sind leider keine beispiele....
noch eine evtl. blöde frage 🙂
wenn ich fk erstellen kann, dann haben die 2 tabellen beziehung?
z.B. in so einem DB manager kann man ja 1:n beziehung machen.
ist das in hsql auch möglich?
 
Von deinem Link kommt man direkt auf die HSQLDB Seite und von da aus in die FAQ, wo beschrieben wird wie man eine neue DB anlegt:

http://hsqldb.org/web/hsqlFAQ.html#NEWDB

Ein Foreign Key sagt einfach nur, dass der Wert in einer anderen Tabelle bereits existieren muss. Warum sollte man eine 1:n Beziehung in HSQL nicht realisieren können? Musst doch einfach nur auflösen :bahnhof:
 
ok thx...soweit alles ok...jetzt läuft es auch alles so wie ich es wollte
nur ich hab folgendes Problem.
Ich lasse in eclipse programm laufen, dann bin ich in QuantumDB rein um die Tabelle anzugucken. Dann gehe ich wieder in eclipse will code laufen lassen und krieg diesen fehler
Exception in thread "main" java.sql.SQLException: The database is already in use by another process: org.hsqldb.persist.NIOLockFile@1926d970...........
also die Db wird auch in prozess von javaw.exe benutzt.
kann ich das irgendwie umgehen?oder wie beende ich den alles was java grad benutzt? ohne clipse zu beenden
 
Du solltest eine HSQL-DB mit dem Shutdown-Statement runterfahren. Ansonsten alle java bzw. javaw Prozesse die nicht auf Eclipse zurückzuführen sind killen.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben