Zum Inhalt springen

hsqldb Connection-Problem


Alex_winf01

Empfohlene Beiträge

Ich versuche mich gerade in HSQLDb einzuarbeiten. Das ist eine DB, die kann ich meiner Java-Applikation hinzufügen, ohne dass ich beim Anwender etwas installieren muss. Nun habe ich bereits etwas ausprobiert, Treiber wird geladen und ich bekomme folgende Fehlermeldung:

Und hier der Code dazu:

import java.sql.*;


import java.util.logging.*;




public class UseHSQLDB {


   static Logger log = Logger.getLogger("de.myname.UseHSQLDB");




   public static void main(String[] args)


      throws SQLException, ClassNotFoundException { // Doit better ...




   log.log(Level.INFO, "Starting to load JDBCDriver... ");


   //Class.forName("org.hsqldb.jdbcDriver");


   log.log(Level.INFO, "JDBC Driver successfully loaded!");




   Connection con =


      DriverManager.getConnection( // tmp must exist. Right slash.

         "jdbc:hsqldb:C:/tmp/musicShop","sa","");


   log.log(Level.INFO, "Connection established!");




   Statement stmt = con.createStatement();


   String sqlQuery =


      "CREATE TABLE cdShop (cdNr INTEGER, cdArtist CHAR(20), cdTitle CHAR(20));";


   ResultSet rs = stmt.executeQuery(sqlQuery);




   sqlQuery = "INSERT INTO cdShop VALUES (1,'Groeni','Mensch')";


   rs = stmt.executeQuery(sqlQuery);


   sqlQuery = "INSERT INTO cdShop VALUES (2,'Sting','Fields of Gold')";


   rs = stmt.executeQuery(sqlQuery);


   sqlQuery = "INSERT INTO cdShop VALUES (3,'Bach','Pluratorium')";


   rs = stmt.executeQuery(sqlQuery);




   sqlQuery = "UPDATE cdShop SET cdTitle='W-Oratorium' WHERE cdNr=1";


   rs = stmt.executeQuery(sqlQuery);




   sqlQuery = "SELECT * FROM cdShop";


   rs = stmt.executeQuery(sqlQuery);


   System.out.println("\n\n\nCD Shop DB\n=============\n");


   int counter = 0;


   while (rs.next()) {


      System.out.println(counter++ +".Datensatz:");


      int cdNr = rs.getInt("cdNr");


      System.out.println("\t[cdNr ->" + cdNr + "]");


      String cdArtist = rs.getString("cdArtist");


      System.out.println("\t[cdArtist ->" + cdArtist + "]");


      String cdTitle = rs.getString("cdTitle");


      System.out.println("\t[cdTitle ->" + cdTitle + "]\n");


   }


   con.close();


   }

   }
Ich weiss, dass es an der Zeile
Connection con =


      DriverManager.getConnection( // tmp must exist. Right slash.

         "jdbc:hsqldb:C:/tmp/musicShop","sa","");

liegen muss.

Ich stehe nur auf dem Schlauch. Das Verzeichnis existiert an dem angegebenen Ort.:confused:

Fehlermeldung.zip

Link zu diesem Kommentar
Auf anderen Seiten teilen

Zunächst mal:

Ich hatte aus Versehen die Zeile

Class.forName("org.hsqldb.jdbcDriver");

auskommentiert. Dadurch kam es zu einer Exception in Thread "main"

java.sql.SQLExceptio: No suitable driver.

Sobald ich diese Zeile wieder reinnehme (die ja wichtig ist für das Laden des Treibers) bekomme ich die Fehlermeldung, dass er den Treiber nicht finden kann.

Folgendes: Mein Programm liegt unter c:\Eigene Dateien. Das JAR-File hsqldb liegt auch dort. Ich weiss, dass ich die JAR-File in der CLASSPATH-Variable reinschreiben muss.

Wie muss ich HSQLDB in den Java-Pfad aufnehmen? Welchen Befehl brauche ich dazu? Mein Java liegt unter c:\j2sdk 1.4.2_07\bin.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also, habe den Treiber jetzt in das Verzeichnis gelegt, in dem auch mein Java-Programm liegt. Der Treiber wird geladen und ich bekomme beim Ausführen folgende Fehlermeldung:

java.lang.NoClassDefFound Error: org/javagroups/Message:confused:

Ich bin sicher, den richtigen Treiber zu haben.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Beim JDBC-Treiber kenne ich die Möglichkeiten, den Treiber entweder in der Classpath einzubinden oder in den entsprechenden Ordner zu kopieren. Wenn man es in den Ordner kopiert, wo auch die Anwendung liegt, greift die Anwendung ohne Probleme auf den Treiber zu.

So habe ich das auch mit dem Ordner javagroups gemacht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Beim JDBC-Treiber kenne ich die Möglichkeiten, den Treiber entweder in der Classpath einzubinden oder in den entsprechenden Ordner zu kopieren. Wenn man es in den Ordner kopiert, wo auch die Anwendung liegt, greift die Anwendung ohne Probleme auf den Treiber zu.
Dann muss die Anwendung aber entsprechend Konfiguriert sein, was über verschiedenste Wege passieren kann. Möglich sind Einträge in der Manifest-Datei, Angabe des Classpaths auf Komandozeile oder Verwendung eines eigenen ClassLoaders mit Auto Discovery Möglichkeiten. Solange du nicht genauer beschreibst wie deine Applikation gestartet wird, und woraus sie überhaupt besteht (JAR Dateien, offene .class Dateien im Verzeichnis, WebStart, ...) kann dir auch niemand wirklich eine Lösung präsentieren.
Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich wollte mal den HSQLDB austesten und habe mir den Code wie in meinem ersten Beitrag als Beispiel besorgt. Dieser Code liegt bei mir unter c:\Eigene Dateien, wo auch der Treiber liegt.

Das Programm ist in kein JAR-File eingebunden, sondern ich starte das Programm über meinen Editor Programm --> ausführen. Also das gleiche, was der Befehl java über Kommandozeile bewirkt.

Wie kann ich denn die notwendigen JAR-Files (hsdql.jar und javagroups.jar) in die CLASSPATH aufnehmen? Mal angenommen die JAR-Files liegen auch unter c:\Eigene Dateien

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...