Forum: PC-Programmierung Datenbanken in Java


von jo (Gast)


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");

von jo (Gast)


Lesenswert?

eingebe, kommt ein Fehler.
Was ist falsch?

von Peter (Gast)


Lesenswert?

und welcher Fehler?

von jo (Gast)


Lesenswert?

1
public class d {
2
3
  /**
4
   * @param args
5
   */
6
  public static void main(String[] args) {
7
     Class.forName("org.hsqldb.jdbcDriver");
8
     Connection con =
9
DriverManager.getConnection("jdbc.hsqldb:file:c:\ddd.db3");
10
}
11
12
}
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?

von hans (Gast)


Lesenswert?

schreib mal \\ statt \

von jo (Gast)


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)

von Peter (Gast)


Lesenswert?

du must noch das passende Packet importieren

von jo (Gast)


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?

von jo (Gast)


Angehängte Dateien:

Lesenswert?

hier mal der fehler angehängt

von Peter (Gast)


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?
1
import java.sql.*;
2
3
public class d {
4
  public static void main(String[] args) {
5
   try {
6
     Class.forName("org.hsqldb.jdbcDriver");
7
     Connection con = DriverManager.getConnection("jdbc.hsqldb:file:c:\\ddd.db3");
8
   } catch ( Exception ex ) {
9
   }
10
   }
11
}

von jo (Gast)


Angehängte Dateien:

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

von jo (Gast)


Lesenswert?

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

von Peter (Gast)


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?

von jo (Gast)


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.

von Jorge (Gast)


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.

von Peter (Gast)


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).

von jo (Gast)


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?

von Peter (Gast)


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.

von jo (Gast)


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?

von jo (Gast)


Lesenswert?

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

von Peter (Gast)


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.

von jo (Gast)


Lesenswert?

Danke für deine Antwort.
1
import java.sql.*;
2
3
public class d {
4
  public static void main(String[] args) {
5
   try {
6
     Class.forName("org.hsqldb.jdbcDriver");
7
     Connection con = DriverManager.getConnection("jdbc.hsqldb:file:c:\\ddd.db3");
8
     
9
     
10
   } catch ( Exception ex ) {
11
     System.out.println("huhu");
12
   }
13
   }
14
}

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

von Peter (Gast)


Lesenswert?

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

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

von jo (Gast)


Lesenswert?

Ich hab

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

hinzugefügt.

Ausgegeben wird

   org.hsqldb.jdbcDriver

von jo (Gast)


Lesenswert?

java.lang.ClassNotFoundException: org.hsqldb.jdbcDriver

von Peter (Gast)


Lesenswert?

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

von jo (Gast)


Lesenswert?

bei to. String kommt wieder
java.lang.ClassNotFoundException: org.hsqldb.jdbcDriver

von Peter (Gast)


Lesenswert?

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

von jo (Gast)


Lesenswert?

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

von Peter (Gast)


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.

von jo (Gast)


Lesenswert?

Wie machst du es denn immer mit der Datenbank?ich versuchs grad mal

von jo (Gast)


Lesenswert?

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

von Peter (Gast)


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.

von jo (Gast)


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)

von jo (Gast)


Lesenswert?

die datei ist zu 100% in dem pfad c:\

von Peter (Gast)


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.

von jo (Gast)


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?

von jo (Gast)


Lesenswert?

mit

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

geht auch nich

von jo (Gast)


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 ;)

von Peter (Gast)


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.

von jo (Gast)


Lesenswert?

naja okay, dann danke jedenfalls

von Markus (Gast)


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

von Markus (Gast)


Lesenswert?

Ich habe noch vergessen: Bei Google "Seiten auf Deutsch" aktivieren.

von jo (Gast)


Lesenswert?

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

von jo (Gast)


Lesenswert?

die jar Datei hab ich in die
JRE System Libary hinzugefügt

von jo (Gast)


Lesenswert?

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

von jo (Gast)


Lesenswert?

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

von Daniel F. (df311)


Lesenswert?

meine kristallkugel sagt hibernate

um welches db-system gehts hier überhaupt?

von Peter (Gast)


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.

von jo (Gast)


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??!

von Sebi (Gast)


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:
1
Connection connection = null;
2
3
try {
4
  connection = DriverManager.getConnection("jdbc:hsqldb:mem:testdb", "SA", "");
5
} catch (Exception e) {
6
  System.out.println("ERROR: failed to connect HSQLDB JDBC driver.");
7
  e.printStackTrace();
8
}

Bei mir hat's erst funktioniert, als ich zuvor noch die statische 
Methode
static Class<?> forName(String className)
aufgerufen habe:
1
Connection connection = null;
2
3
try {
4
  Class.forName("org.hsqldb.jdbcDriver");
5
} catch (Exception e) {
6
  System.out.println("ERROR: failed to load HSQLDB JDBC driver.");
7
  e.printStackTrace();
8
}
9
10
try {
11
  connection = DriverManager.getConnection("jdbc:hsqldb:mem:testdb", "SA", "");
12
} catch (Exception e) {
13
  System.out.println("ERROR: failed to connect HSQLDB JDBC driver.");
14
  e.printStackTrace();
15
}

Vielleicht hilft's ja jemandem.

Viele Grüße
Sebi

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.