mikrocontroller.net

Forum: PC-Programmierung Datenbanken in Java


Autor: jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, ich habe mir in SQL eine kleine Datebank gemacht, und möchte mich 
mit Java damit verbinden.

Dies ist mein erster Versuch mit Datenbanken.

Wenn ich in Eclipse

[c]

public class d {

  /**
   * @param args
   */
  public static void main(String[] args) {
     Class.forName("org.hsqldb.jdbcDriver");
     Connection con = 
DriverManager.getConnection("jdbc.hsqldb:file:c:\te.db");

Autor: jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
eingebe, kommt ein Fehler.
Was ist falsch?

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und welcher Fehler?

Autor: jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

public class d {

  /**
   * @param args
   */
  public static void main(String[] args) {
     Class.forName("org.hsqldb.jdbcDriver");
     Connection con =
DriverManager.getConnection("jdbc.hsqldb:file:c:\ddd.db3");
}

}

Fehler:

Exception in thread "main" java.lang.Error: Unresolved compilation 
problem:
  Invalid escape sequence (valid ones are  \b  \t  \n  \f  \r  \"  \' 
\\ )

  at d.main(d.java:9)




Was mache ich falsch?

Autor: hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
schreib mal \\ statt \

Autor: jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
DriverManager.getConnection("jdbc.hsqldb:file:c:\\ddd.db3");

so?

Dann kommt der Fehler

Exception in thread "main" java.lang.Error: Unresolved compilation 
problems:
  Connection cannot be resolved to a type
  DriverManager cannot be resolved

  at d.main(d.java:8)

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
du must noch das passende Packet importieren

Autor: jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
welches wäre das?

Ich hab mal

import java.sql.*;
import java.io.*;
import java.util.*;

drüber geschrieben, aber weiterhin Fehler.
Muss man in Windows eigentlich noch was verstellen?
Was mach ich falsch?

Autor: jo (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hier mal der fehler angehängt

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist ebend das Problem wenn man gleich mit einer IDE anfängt. Wenn du 
es auf der kommandozeile kompilierst sehen die Fehlermeldungen 
hilfreicher aus.
Ich würde erstmal mit einem "Hallo World" anfangen, dennn für SQL und 
java braucht man ein paar Grundlagen.
Wie gehen ich mit Exeption um?
ist es überhaupt sinnvoll das Programm in die main zu schreiben?
import java.sql.*;

public class d {
  public static void main(String[] args) {
   try {
     Class.forName("org.hsqldb.jdbcDriver");
     Connection con = DriverManager.getConnection("jdbc.hsqldb:file:c:\\ddd.db3");
   } catch ( Exception ex ) {
   }
   }
}

Autor: jo (Gast)
Datum:
Angehängte Dateien:
  • preview image for f2.JPG
    f2.JPG
    14,5 KB, 317 Downloads

Bewertung
0 lesenswert
nicht lesenswert
Danke für deine Hilfe.
Die Java Grundlagen kenne ich schon.

So klappt es auch ohne Fehler. Allerdings kann ich es nicht laufen 
lassen. Die Meldung wieder angehängt.
Danke

Autor: jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
P.S.
das buch, das ich benutze hat es auch in der main, daher hab ich es da 
drin.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Haha du kennst also die Grundlagen, aber erkennt nicht das die Meldung 
überhaupt nichts mit dem Programm zu tun hat sondern das Eclipse ein 
Problem mit dem Zeichensatz beim Speichern einer Datei hat?

Autor: jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich bin kein Freak, bisher kam dieser Fehler noch nicht und ich weiß 
nicht was ich machen soll, damit es läuft.
Ich habe bisher eine Vorlesung zu Java gehabt, und möchte nun für die 
nächste etwas vorarbeiten.

Autor: Jorge (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hsql ist eine Krankheit, nimm "derby.jar" (IBM) alias cloudscape.
Mit dem Fehler hat es freilich nix zu tun, aber mit den samples kommst 
du weiter.
Kennst du http://www.squirrelsql.org/. Ein Frontend für alle Dingens für 
die es ein jdbc interface gibt.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry bei Eclipse kann ich nicht helfen. Kann nur vermuten das beim 
Kopieren aus dem Internet sich ein ungültiges Zeichen eingeschlichen 
hat. mache mal die Datei leer und schreibe den kompletten Inhalt ab (das 
Trainert gleich).

Autor: jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
okay danke ich glaub es klappt.
Vielen Dank für Eure Hilfe soweit.

Und in der Datei ddd.db3
sollen jetzt einfach die SQL Befehle stehen, die meine Tabelle 
definieren?

Im Internet und in den Büchern steht man muss noch ODBC Treiber 
installieren, und in der Systemsteuerung hinzufügen, was hat es damit 
auf sich, wieso klappt es hier ohne diese Sachen?

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
was in der Datei ddd.db3 steht entscheidet der Treiber ( 
org.hsqldb.jdbcDriver ) es kann klartext oder auch nur unlesbare Daten 
sein.

Einen ODBC Treiber braucht du nur wenn du über ODBC auf die Datenbank 
zugreifen willst, java bringt in den meisten Fällen aber seinen eigenen 
Treiber mit, für java braucht du also kein ODBC.

ODBC braucht du wenn du z.b. mit Excel oder Access auf die Datenbank 
zugreifen willst.

Autor: jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aber wenn ich jetzt mit SQL auf die Datenbank zugreifen möchte, muss die 
doch auch richtig erstellt sein(wenn ich z.B. einen neuen Eintrag machen 
möchte usw) , verstehe ich das richtig, dass man die Datenbank vorher 
erstellen muss?
Oder kann ich jetzt in Java beginnen, die Tabellen zu erzeugen?

Autor: jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn ich den Code von eben ausführe wird die Exception ausgelöst, das 
sollte im Normalfall doch eigentlich nicht sein, oder?

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> wird die Exception ausgelöst
und warum schreibst du nicht hin, wie die Exception heist und welchen 
Text sie hat?

Du hast jetzt erstmal eine Datenbankverbindung aufgebaut. Als erstes 
muss du mit SQL eine Tabelle erzeugen wo du die Werte abspeichern 
kannst.

Autor: jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für deine Antwort.
import java.sql.*;

public class d {
  public static void main(String[] args) {
   try {
     Class.forName("org.hsqldb.jdbcDriver");
     Connection con = DriverManager.getConnection("jdbc.hsqldb:file:c:\\ddd.db3");
     
     
   } catch ( Exception ex ) {
     System.out.println("huhu");
   }
   }
}


Bei diesem Code wird "huhu" ausgegeben.
Verstehe ich das richtig, dass das eigentlich nicht sein sollte?
Ich weiß ja nicht was das für eine Exception ist...

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann schau dir doch mal die Methoden von der Exception an.
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/...

Da wirst du bestimmt auch etwas finden, wie man den Text ein Exception 
ausgibt.

Autor: jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab

    System.out.println( ex.getMessage());

hinzugefügt.

Ausgegeben wird

   org.hsqldb.jdbcDriver

Autor: jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
java.lang.ClassNotFoundException: org.hsqldb.jdbcDriver

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Teste mal bitte mit printStackTrace oder toString, normalerweise sollte 
da etwas aussagekräftigeres rauskommen.

Autor: jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bei to. String kommt wieder
java.lang.ClassNotFoundException: org.hsqldb.jdbcDriver

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das ist doch schon was, der ClassPath ist vermutlich falsch, er findet 
die Klasse  "org.hsqldb.jdbcDriver" nicht.

Autor: jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie kann ich schauen ob er falcsh ist? Ich habe ein neues Projekt 
gemacht, da tritt der Fehler wieder auf

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich kenn jetzt org.hsqldb.jdbcDriver nicht, aber kann es sein das du dir
es es runterladen musst?
http://sourceforge.net/project/showfiles.php?group_id=23316

Dort bekommst du ein jar file (hsqldb.jar), das legst du in dein 
Programm verzeichniss.

Autor: jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie machst du es denn immer mit der Datenbank?ich versuchs grad mal

Autor: jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also ich hab die Datei in das Workspace und in das Projekt kopiert, 
leider bleibt der Fehler

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Java habe ich bloss mal private nebenbei gemacht. Ich finde Java 
persönlich nicht sehr schön.

Für mich ist eine Datenbank erst eine wenn ein richtiger Server läuft( 
Mysql, Postgresql, Oracle, MSSQL) dann kreift man über eine 
Schnittstelle (ODBC, JDBC) darauf zu.

Du sollest aber wirklich erstmal noch mit den Grundlagen zu java 
beschäftigen, alle wollen gleich ganz gross anfangen. Dazu gehört auch 
das lesen der doku von Sun und das selbständige lösen von Fehlern (auch 
mal ohne Goolge, einfach mit Probieren und dabei lernen). Was hilft es 
dir wenn dir jemand den Quellcode schreibt du aber bei jede kleinen 
Fehlermeldung andere Leute fragen muss.

Autor: jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
habs irgendwie geschafft das jar zu importieren, danke;)

jetzt noch

huhu
java.sql.SQLException: No suitable driver found for 
jdbc.hsqldb:file:c:\ddd.db3
  at java.sql.DriverManager.getConnection(Unknown Source)
  at java.sql.DriverManager.getConnection(Unknown Source)
  at d.main(d.java:7)

Autor: jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
die datei ist zu 100% in dem pfad c:\

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wiegesagt ich kenn Eclipse nicht, es sollte im "Arbeitsverzeichniss" der 
Anwendung liegen und im ClassPaht muss der "." eingetragen sein - 
bestimmt gibt ein in Eclipse ein jar mit einzugegen wo weiter Klassen 
liegen.

Autor: jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das jar hab ich jetzt einbezogen, eine exception
java.sql.SQLException: No suitable driver found for
jdbc.hsqldb:file:c:\ddd.db3
  at java.sql.DriverManager.getConnection(Unknown Source)
  at java.sql.DriverManager.getConnection(Unknown Source)
  at d.main(d.java:7)

kommt jetzt. Was könnte das sein?

Autor: jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mit

     Connection con = 
DriverManager.getConnection("jdbc.hsqldb:file:c:\\ddd.db3");

geht auch nich

Autor: jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
zu deinem posting von eben:
ich möchte einfach nur wissen, wie ich mich mit einer Datenbank 
verbinde, Befehle ausführe und daten auslesen kann.
Ich möchte dabei nicht rumtüfteln, oder auf Probleme stoßen, ich möchte 
nur wissen wie es geht, ich will kein Ingenieur sein ;)

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum dann Java?
Dann installier die mysql und schon kannst du dich mit dem mysqlclient 
mit der DB verbinden und kannst sql-Befehle absenden.

Ich vermute immer noch das der Treiber nicht richtig gefunden wird, habe 
jetzt aber keine Lust es hier nachzubauen.

Autor: jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
naja okay, dann danke jedenfalls

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auch wenn es Dich annervt: Gib mal bei Google folgenden Suchstring ein:

java.sql.SQLException: No suitable driver found for jdbc.hsqldb

Gleich der erste Treffer...

Gruß
Markus

P.S.: Vieleicht findest Du ja noch jemanden, der Dir 'ne fertige Lösung 
liefert...

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe noch vergessen: Bei Google "Seiten auf Deutsch" aktivieren.

Autor: jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das hatte ich shcon gefunden, damit klappt's auch nicht

Autor: jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
die jar Datei hab ich in die
JRE System Libary hinzugefügt

Autor: jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
aber du scheinst ja zu wissen, Markus, woran es liegt, was muss ich tun, 
damit es klappt? ODer ist das zuviel verlangt?

Autor: jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bitte helft mir doch ich weiß nicht was ich noch tun kann

Autor: Daniel F. (df311)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
meine kristallkugel sagt hibernate

um welches db-system gehts hier überhaupt?

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Daniel F.
> meine kristallkugel sagt hibernate
> um welches db-system gehts hier überhaupt?
Eventuell sollte man den Thread erstmal durchlesen befor man kommentare 
abgibt.

Autor: jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe mir das hsqldb Paket jetzt runtergeladen.

Dort ist eine Datei runManagerSwing.bat
Wenn man diese startet öffnet sich ein Programm, wenn man dann bei URL
jdbc:hsqldb:file:c:\neu
angibt wird auf C eine Datei
neu.script angelegt.

Jetzt kann man sich verbinden, mit dieser Vorkehrung.


Wenn ich jetzt mit dem Programm und der Datei an einen anderen PC gehe 
und dort in Eclipse das ganze ausführe, gibt's wieder einen Fehler.

Muss man immer vorher das Programm  hsqldb starten und einstellen?
Das kann aber doch nicht im Sinne des Erfinders sein, dass derjenige der 
ein Programm bekommt erst noch mit dem Tool hsqldb rumspielen muss??!

Autor: Sebi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

das Thema ist zwar schon etwas älter, ich hatte aber das gleiche (/ein 
ähnliches) Problem.

Die folgende Exception wurde geworfen:
java.sql.SQLException: No suitable driver found for 
jdbc:hsqldb:mem:testdb

Der "Java Buld Path" war in Eclipse korrekt eingestellt.
(Projekt -> Properties -> Java Build Path -> Libraries -> Add External 
JARs... : Pfad zu "hsqldb.jar" richtig angegeben)

Anfangs habe ich versucht die Datenbank auf die folgende Weise zu 
öffnen:
Connection connection = null;

try {
  connection = DriverManager.getConnection("jdbc:hsqldb:mem:testdb", "SA", "");
} catch (Exception e) {
  System.out.println("ERROR: failed to connect HSQLDB JDBC driver.");
  e.printStackTrace();
}

Bei mir hat's erst funktioniert, als ich zuvor noch die statische 
Methode
static Class<?> forName(String className)
aufgerufen habe:
Connection connection = null;

try {
  Class.forName("org.hsqldb.jdbcDriver");
} catch (Exception e) {
  System.out.println("ERROR: failed to load HSQLDB JDBC driver.");
  e.printStackTrace();
}

try {
  connection = DriverManager.getConnection("jdbc:hsqldb:mem:testdb", "SA", "");
} catch (Exception e) {
  System.out.println("ERROR: failed to connect HSQLDB JDBC driver.");
  e.printStackTrace();
}

Vielleicht hilft's ja jemandem.

Viele Grüße
Sebi

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.