Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich möchte mich in HSQLDB einarbeiten, habe bisher null Schimmer wie ich sowas in Java(Ecplise) einbinde.
Ebenso bin ich verwirrt über die Syntax. Wird HSQLDB wie SQL über die selbe Syntax angesprochen?
Mein Programm soll auf eine interne Datenbank zugreifen, ich brauche aber keine Datenbank die auf einem Server liegt und sich erst connecten muss. Soweit ich das verstehe ist das bei SQL zwingend erforderlich.
Was könnt ihr mir empfehlen, TUT(in Englisch geht auch aber nicht in indisches Englisch) oder Lektüren in Deutsch die HSQLDB und Java behandeln.
Eine relationale DB wird IMMER mit SQL angesprochen. Du kannst in der ConnectionURL angeben, welche DB du meinst und beispielsweise User/Passwort angeben.
ich brauche aber keine Datenbank die auf einem Server liegt und sich erst connecten muss.
So etwas nennt man üblicherweise Embedded-DB, weil die DB in deine Applikation integriert/embedded ist und genutzt werden kann OHNE ein Serverprogramm zu starten.
Vorteil ist das du einfach eine DB anlegen und nutzen kannst. Nachteil ist, das nur ein Programm auf die DB zugreifen kann und nicht mehrere parallel. Dies ist manchmal doof, wenn deine Applikation läuft und du mit einem SQL-Tool wie Squirrel nachschauen möchtest wie es gerade in den Tabellen aussieht. Dann KANNST du HSQLDB im Servermodus starten oder deine Applikation beenden und danach mit dem SQL-Tool nachschauen. Musst du entscheiden, was dir genehmer ist. Ich verwende lieber embedded-Modus und beende meine Applikation.
Java:
Connection c = DriverManager.getConnection("jdbc:hsqldb:file:testdb", "SA", "");
Mit diesem Kommando beispielsweise öffnest du eine Verbindung zur lokalen DB testdb. Dieses startet die DB im embedded-Mode. Dazu musst du "nur" die hsqldb.jar im Classpath liegen haben.
Java:
Connection c = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/xdb", "SA", "");
Mit diesem Kommando öffnest du eine Verbindung zu einer DB im Servermodus auf localhost.
Ich habe mir gestern SQuirrel angesehen, und komme überhaupt nicht mit den Begrifflichkeiten klar. Mir erschließt sich überhaupt nicht was ein Aliase zb. sein soll. Bzw. brauche ich das Programm überhaupt? Eigentlich ist es doch nur eine Art-Viewer oder?
Kann ich alternativ nicht auch odb Datenbanken einbinden, sind doch auch HSQL-Datenbanken oder nicht? Also da empfinde ich die Verwaltung über Openoffice um einiges angenehmer.
Geht dann die Connection genau so wie du beschrieben hast?
EDIT: Achja, kann ich mir Bücher über SQL besorgen die von 2004 sind, oder hat sich über die Jahre hinweg extrem viel verändert hinsichtlich der Syntax?
Mit odb Datenbanken kenne ich mich nicht aus. Meine aber gelesen zu haben, das sie nur im Servermodus funktionieren und dies genau das ist was du NICHT haben wolltest. odb-Dateien sind aber auch "nur" zip-Dateien, die du mit einem zip-Tool auspacken kannst und darin ist eine hsqldb-database enthalten. Habe ich aber noch nie probiert.
Ich gebe zu, das Squirrel "gewöhnungsbedürftig" ist, insbesondere wenn man wenig Ahnung von DBs hat In der Tat ist Squirrel ein Viewer, um sich Datenbankinhalte anzuschauen. ABER daneben kannst du via SQL eine DB anlegen, ändern und Daten pflegen. Ist also das "Schweizer-Taschenmesser" wenn es darum SQL-DB zu manipulieren.
Squirrel kann auf jede DB zugreifen, sofern ein JDBC-Treiber vorhanden ist. Damit der für hsqldb gefunden wird, musst du den Pfad zur JAR-Datei unter Driver im Tab Extra-Classpath in Squirrel bekannt machen.
Danach kannst du einen Alias einrichten. Dies ist die Bekanntmachung einer Datenbank, in deinem Fall für eine HSQLDB-Datenbank, die den Driver verwendet, den du im obigen Schritt eingerichtet hast. Hier kannst du Werte angeben in der Connection-URL festlegen. Wichtig ist hier besonders der Pfad wo denn die DB auf der Platte liegen soll.
Ich bin gerade ziemlich unsicher wie ich an mein "Problem" heran gehen soll/sollte.
Mein Programm ist in Swing geschrieben, liest aus mehreren Sheets(genau 10) "etliche" Datensätze aus einer ods Tabelle. Das sind ca. 10 Zeilen pro Sheet. Dabei können die Zeilen erweitert werden und die Spalten auch, also die Datensätze können beliebig verändert werden durch mein Programm und mit neuen Daten gefüllt werden.
Warum ich jetzt auf eine Datenbank umschwenken will, ist folgender Grund,
1. desto mehr Datensätze ich daraus lese umso länger dauert der ganze Lade-Prozess, dauert jetzt schon 5 Sekunden.
2. Der Programmieraufwand ist enorm, wenn ich irgendwelche neue Statistiken einbauen will. Ich muss permanent mit doppelten for Schleifen die Zellen abfragen.
3. Dann ist es ebenso sehr aufwändig die aktualisierten Datensätze in die Tabelle zu schreiben.
4. Das nervigste ist aber, die ods also die Tabelle wird außerhalb der jar gelagert und somit ist sie anfällig. Anfällig in der Hinsicht, sobald ich das Dokument öffne und ausversehen eine nicht beschriebene Zelle beschreibe zb. mit einer Leertaste, ist mein ganzer Code hinfällig. Denn ich muss die Spaltenköpfe/Zeilenköpfe bestimmen und sobald eine Zelle mehr vorhanden ist als es sollte, gibt es schon Probleme mit der Zellenabfrage.
Jetzt komme ich zur meiner abschließenden Frage, ist für eine Tabelle mit 10 Sheets, die zurzeit jeweils 10 Zeilen und im Schnitt pro Sheet 26 Spalten besitzt, sinnig eine embedded Datenbank aufzusetzen? Oder gibt es noch etwas anderes. Sollte es nichts anderes geben, mit welchen Programm außer MS-Acess kann ich die Datenbank erstellen und die die Datensätze aus meiner bisherigen Tabelle in meine DB verlagern? Oder muss ich das alles in meinen JavaCode festhalten?
EDIT: Achja, was mir noch einfällt, die Datensätze wie sie in meiner Tabelle gezeigt werden, werden NIE so dargestellt in meiner GUI. Also ich programmiere keine Datenverarbeitungssoftware oder ähnliches. Mir geht es mehr darum, Statistiken zu erstellen die im Hintergrund innerhalb der DB abgefragt werden. Ich hoffe ich habe mich nicht zu kompliziert oder unpräzise ausgedrückt.
EDIT2 : Ich möchte auch nicht in der GUI irgendwelche SQL Befehle eingeben können. Eigentlich suche ich nur eine Möglichkeit Daten lokal abzuspeichern die bei Bedarf aktualisiert werden.
Normalerweise ist die Anzahl der Spalten einer Tabelle in einem RDBMS konstant, sprich festgelegt. Nehmen wir als Beispiel die Tabelle Buch. Diese besteht aus den Spalten BuchID,Autor,Verlag,Verlagsjahr,Titel,Datum.
Nun kannst du Datensätze in die Tabelle einfügen, indem du ein SQL-Kommando an die DB sendest
Code:
insert into Buch(BuchID,Autor,Verlag,Verlagsjahr,Titel,Datum) values (12,'Galileo Galilei', 'Inquisition International', 1640, 'Eppur si muove', 1641)
Die Anzahl der Zeilen ist dabei ziemlich unwichtig und hat höchstens Auswirkungen wenn wir hier über mehrere Millionen reden. Aber im Bereich von 10-1000 ist das nicht relevant. Ich tendiere immer zu einer DB-Lösung weil du so sehr flexibel bist und notfalls auf eine völlig andere DB wechseln kannst ohne deinen Code ändern zu müssen.
Aber du kannst nicht so einfach die STRUKTUR der Tabelle ändern und weitere Spalten hinzufügen. Denn unter anderem müsstest du ja für alle bereits existierenden Datensätze festlegen, welche Werte in der neuen Spalte stehen sollen.
Also solltest du als Erstes die Tabellenstruktur(en) festlegen, die du benötigst.
Nun, das wird auch mit einem RDBMS so sein. Aber es gibt hinreichende Möglichkeiten die DB so zu schützen, das du nicht unbeabsichtigst Änderungen machen kannst.
der Auszug bezog sich auf die ods Tabellen also nicht auf eine Datenbank. Da gibt es nur so viele Spalten und Zeilen wie beschrieben worden sind.
Ich habe mir jetzt Access angeschaut, und ich glaube ich werde das mit Access bewerkstelligen, weil es einfach viel mehr TUT gibt als es die für OPenOffice (odb) existieren. Ansprechen geht wohl auch ziemlich schnell und mit wenig Aufwand. Ich muss halt vorher schon eine Datenbank anlegen mit all den Datensätzen aus meiner alten Tabelle. Und mit Acess kann ich "schnell" eine aufsetzen.
Die Frage die ich mir nun Stelle, wenn ich das Programm auf nen anderen Rechner laufen lassen ohne Access, inwiefern das Programm noch Zugriff hat auf die Datenbank?
Von Access rate ich ab, denn u.a. ist die DBC-ODBC Bridge (sun.jdbc.odbc.JdbcOdbcDriver) im neuesten Java entfernt worden und du benötigst einen entsprechenden JDBC-Treiber.
Und, abseits von Access, sind eigentlich die meisten RDBMS ziemlich gleich, vergleichbar und gut einsetzbar. Da braucht es eigentlich keine Tut speziell für deine DB. Ansonsten kannst du hier im Forum ja gerne fragen.
Beispielsweise solltest du mal versuchen aus der odb-DB die HSQLDB zu extrahieren und mit einem SQL-Tool zu betrachten. Genau diese Struktur benötigst du anscheinend in deiner eigenen HSQLDB-Variante.