Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

hsqldb Connection-Problem

Empfohlene Antworten

Veröffentlicht

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

  • Autor

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.

  • Autor

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.

Ich bin sicher, den richtigen Treiber zu haben.
Diese Fehlermeldung hat nichts mit dem JDBC Treiber zu tun, sondern muss aus irgendeiner anderen Komponente kommen, die du noch nicht mit in den Classpath aufgenommen hast.
  • Autor

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.

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.
  • Autor

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.