Zugriff auf Derby-Datenbank will einfach nicht klappen

Status
Nicht offen für weitere Antworten.

Toast78

Mitglied
Guden Tach!

Ich versuche schon seit einiger Zeit den Zugriff auf eine Derby-DB2 hinzubekommen, aber irgendwie will es nicht klappen. Die Entscheidung fiel auf Derby, da sie bereits in Java/NetBeans integriert ist und die Kollegen von mir einen Mac bzw. ubuntu benutzen.

Ich selbst habe Windows XP mit JDK 1.5_06 mit NetBeans 6.1 in Benutzung.

Bisher wollte ich es eigentlich mittels

Code:
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
con = DriverManager.getConnection("jdbc:derby:"
        + "E:/FH-GE/08-09_WS/PPR/NewOrderDB");
versuchen, aber schon beim Class.forName steigt mir das Programm mit der Meldung "Failed to start database 'E:/FH-GE/08-09_WS/PPR/NewOrderDB', see the next exception for details." aus.

Ich habe bereits auch versucht, laut diesem Tipp die derby.jar in mein Projekt zu integrieren. Die derby.jar wurde sowohl in das entsprechende Package kopiert, als auch in das lib-Verzeichnis des JDKs kopiert. Dann wurde auch unter den Project-Properties die derby.jar aus dem lib-Verzeichnis eingebunden, was aber auch nicht half.
Wenn ich bei der import-Anweisung "org." eingebe, dann wird mir auch schon von apache das derby-Paket angezeigt, aber kompilieren kann ich das dann immer noch nicht, da ich die Meldung erhalte: "package org.apache.derby doesn't exist"
 
M

mg_666

Gast
hast es mal so versucht?

Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance();
con = DriverManager.getConnection("jdbc:derby:DBName;create=true");

Von NetBeans habe ich leider keine Ahnung.
 

Toast78

Mitglied
Das mit dem Class.forName funktioniert jetzt soweit, nur den DriverManager anzusprechen funktioniert nicht. Für den DB_Path habe ich auch nochmal die Slashes / durch Backslashes \\ ersetzt, aber das wollte auch nicht funktionieren.
Man sagte mir, dass man die Datenbank stoppen sollte, damit die Lock-Datei (LCK-Endung) gelöscht werden kann. Dazu habe ich dann in den Services auch die Datenbank getrennt. Trotzdem lautet beim getConnection die Fehlermeldung nach wie vor die gleiche.
 
M

mg_666

Gast
Kannst Du mit eine Client wie squirrel auf die DB zugreifen oder geht da auch nichts?
 
G

Guest

Gast
Die Class.forName-Anweisung funktioniert ja. Den Treiber kann ich also schonmal ansprechen.
Zugriff auf die Datenbank mittels NetBeans funktioniert ja auch, ansonsten hätte ich die Datenbank schlecht erstellen können.
 
G

Guest

Gast
naja, wenn du mit einem Client auf der Datenbank bist und Du gleichzeitig mit Java drüber ruckeln willst, dann geht dieses nicht, wegen dem gleichen bzw. in meinem Fall gar nicht vorhandenen Nutzer.... sind meine Erfahrungen.
 

HoaX

Top Contributor
Anonymous hat gesagt.:
naja, wenn du mit einem Client auf der Datenbank bist und Du gleichzeitig mit Java drüber ruckeln willst, dann geht dieses nicht, wegen dem gleichen bzw. in meinem Fall gar nicht vorhandenen Nutzer.... sind meine Erfahrungen.

willst du damit sagen man kann pro benutzer nur eine verbindung aufbauen? das geht definitiv, wäre ja unsinn wenn nicht.
 
M

mg_666

Gast
was geht definitiv das ich mehrere Verbindungen aufbaue wenn ich keinen Nutzer angelegt habe und mich trotzdem verbinde?
 
M

mg_666

Gast
Ich wollte nur wissen was Du mit Deiner Aussage gemeint hast.

So wie ich es verstanden habe baust Du eine Verbindung mit Squirrel und gleichzeitig startest Du Dein Javaprogramm wo auch eine Verbindung zur Datenbank aufgebaut wird. Diese beiden unterschiedlichen Anwendungen loggen sich mit "keinem" Nutzer an und der Verbindungsaufbau funktioniert trotzdem.
 

Felli

Mitglied
Dass man sich zwei oder mehrere Male auf eine eingebettete Derby-Datenbank anmelden kann, funktioniert meines Wissens nicht. Gelingt der Zugriff nicht, so besteht vermutlich schon eine andere Verbindung.

Möchte man mehrere Verbindungen haben, so sollte man die Client-Server-Variante wählen. Dazu ist der Server zu starten (startNetworkServer.ksh), die Datei derbyclient.jar in den Klassenpfad aufzunehmen und der ClientDriver zu wählen.
 

cjarlie

Mitglied
y, will kein neues Thema eröffnen da ich ei
n ähnliches Problem habe. Jedoch wird bei mir der Driver org.apache.derby.jdbc.EmbeddedDriver
nicht gefunden.

Die Exception sieht wiefolgt aus:

Code:
Exception in thread "main" java.lang.ClassNotFoundException: org.apache.derby.jdbc.EmbeddedDriver
        at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:169)
        at sebase.Database.<init>(Database.java:20)
        at sebase.SebaseApp.main(SebaseApp.java:43)
Java Result: 1
BUILD SUCCESSFUL (total time: 0 seconds)

Dazu Folgender Code:


Code:
Connection con;
    String path = "jdbc:derby://localhost:1527/sebase";
    String username = "sebase";
    String password = "password";

    Database() throws Exception {
            String driver = "org.apache.derby.jdbc.EmbeddedDriver";
            Class.forName(driver).newInstance();
            con = DriverManager.getConnection(path, username, password);
    }

benutze Vista, JDK 6, Apache Derby 10.3.* und NetBeans 6.5
 

Felli

Mitglied
Tja, das Problem ließe sich bestimmt einfach lösen, wenn derby.jar im Klassenpfad aufgenommen wird. Des Weiteren ist die Pfadangabe wie bei einem Client-Server-Zugriff. Ich würde eher so etwas probieren:

Code:
String path = "jdbc:derby:/tmp/meinedb;create=true";
Wenn du allerdings wirklich Zugriff auf eine Derby-Datenbank im Client-Server-Modus haben möchtest, so verwende ClientDriver statt EmbeddedDriver.
 

mephi

Bekanntes Mitglied
Felli hat gesagt.:
Dass man sich zwei oder mehrere Male auf eine eingebettete Derby-Datenbank anmelden kann, funktioniert meines Wissens nicht. Gelingt der Zugriff nicht, so besteht vermutlich schon eine andere Verbindung.

Möchte man mehrere Verbindungen haben, so sollte man die Client-Server-Variante wählen. Dazu ist der Server zu starten (startNetworkServer.ksh), die Datei derbyclient.jar in den Klassenpfad aufzunehmen und der ClientDriver zu wählen.


hatte eben ein ähnliches problem und hab mich deswegen mal umgeschaut..

aus dem derby admin guide:

Multi-connection and multi-threading:
Derby allows multiple simultaneous connections to a database, even in embedded mode.
Derby is also fully multi-threaded, and you can have multiple threads active at the same
time. However, JDBC semantics impose some limitations on multi-threading. See the
Derby Developer's Guide for more information.

Ich hab es aber auch dass ich nicht auf die DB connecten kann, wenn ich eine Connection mit dem Eclipse Data Source Explorer offen habe.
 

HoaX

Top Contributor
wenn du mehrere connections auf eine embedded datenbank willst dürfen diese nur innerhalb der selben vm/prozess kommen. d.h. du kannst mir dem eclipse data source explorer x verbindungen öffnen. willst du mit einem zweiten programm zugreifen musst du den servermode nehmen
 

mephi

Bekanntes Mitglied
ok, d.h. also wenn ich über ein servlet in eine DB schreib, dann reicht die embedded? auch wenn das servlet mehrmals zur selben zeit aufgerufen wird?
 

HoaX

Top Contributor
genau.

trotzdem würde ich auch fürs servlet den servermode bevorzugen, denn dann kann man auch korrekturen/... mit externen tools machen ohne die seite lahmlegen zu müssen
 

mephi

Bekanntes Mitglied
ja da hast schon recht. habs nur noch nicht hinbekommen dass ich mein server aus der applikation heraus starten und ansprechen kann. dann kann ich nämlich zu demo zwecken einfach eine war rausgeben ohne die ganzen einstellungen machen zu müssen
 

HoaX

Top Contributor
beste lösung:
lass doch den "benutzer" im servletcontainer nen datasource definieren auf den du dann im servlet zugreifst. dann kann es dir egal sein ob embedded oder nicht.

schlechte lösung: (will ich dir wirklich nicht empfehlen)
ich habe auch schon eine anwendung geschrieben die eine derby-db mitstartet:
Code:
nsc = new org.apache.derby.drda.NetworkServerControl(InetAddress.getByName(address), port);
nsc.start(new PrintWriter(System.out, true));
 

mephi

Bekanntes Mitglied
hmm. was ist denn daran so schlecht? das könnte ich doch in die init methode meines servlets schreiben.

was muss ich denn für die variable "address" nehmen? was ich will?


p.s. aktuell bin ich ja schon froh wenn es irgendwie funktioniert :)
 

HoaX

Top Contributor
weil es nicht aufgabe des servlets sein sollte. nicht jeder will die datenbank mit starten, evtl will nichtmal jeder derby verwenden, vielleicht will jemand eine bestehende datenbank auf einem anderen server verwenden? was ist wenn auf einem rechner zwei mal das servlet laufen soll, test- und livesystem?

per datasource bist du unabhängig. geht soweit dass du sogar derby durch mysql ersetzten könntest ohne am servlet was machen zu müssen (vorausgesetzt es werden keine speziellen sql-befehle im servlet verwendet)

address ist die lokale adresse auf der es lauschen soll
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Beginner22 Zugriff auf Datenbank aus Java über mariadb Datenbankprogrammierung 3
H MariaDB-Zugriff mittels Java SE Datenbankprogrammierung 3
X MySQL Java hat keinen Zugriff auf MySQL Datenbankprogrammierung 9
M Datenbank vor unerlaubtem Zugriff durch Benutzer schützen Datenbankprogrammierung 3
L Zugriff auf ein Resultset Datenbankprogrammierung 7
R jdbc-Zugriff Nicht erlaubt ? Datenbankprogrammierung 16
K Eclipse: JBoss Hibernate Tool: Kein Zugriff auf Datenbank Datenbankprogrammierung 5
D Gleichzeitiger Zugriff auf der DB Datenbankprogrammierung 11
J mySQL- Java Application - Zugriff über Internet Datenbankprogrammierung 3
D JavaFX Anwendung zugriff auf MySQL DB. Datenbankprogrammierung 2
F Zugriff auf ein bestimmte Row Datenbankprogrammierung 13
S HSQLDB Zugriff auf Access Datenbank Datenbankprogrammierung 0
K MySQL Datenbank 2facher Zugriff Datenbankprogrammierung 1
M DB-Zugriff funktioniert nach JAR-Erstellung nicht mehr Datenbankprogrammierung 3
P Datenbank Zugriff fehlgeschlagen Datenbankprogrammierung 9
B MySQL JDBC Zugriff auf entfernt Datenbank, fehlende Rechte Datenbankprogrammierung 2
L Zugriff auf lokal gespeicherte mySQL Datenbank Datenbankprogrammierung 3
L MySQL App/Java Zugriff auf Mysql-DB funktioniert nicht Datenbankprogrammierung 1
W MySQL -Server Einstellung -- Zugriff übers lokale Netzwerk Datenbankprogrammierung 1
R Oracle jdbc Zugriff auf Oracle Datenbankprogrammierung 2
T Derby/JavaDB Zugriff auf DB mit exportiertem Programm Datenbankprogrammierung 12
A MySQL-Zugriff auf Raspberry Pi Datenbankprogrammierung 2
T PostgreSQL Best Practice: Konkurrierender DB-Zugriff mit meherern Programmen? Datenbankprogrammierung 20
D .mdb Datenbank Zugriff fehlgeschlagen Datenbankprogrammierung 5
B Datenbanken schützen vor Zugriff Datenbankprogrammierung 3
E Zugriff auf MySQL-Datenbank Datenbankprogrammierung 4
K MySQL Zugriff auf Remote-DB verweigert Datenbankprogrammierung 6
G MySQL Zugriff auf Datenbank Objekt Datenbankprogrammierung 19
C Hibernate n:m mittels Zwischentabelle und bidirektionaler Zugriff Datenbankprogrammierung 2
M Zugriff auf mdb via ODBC steuern Datenbankprogrammierung 2
A Zugriff auf DB-Tabellen mit Objekten Datenbankprogrammierung 3
D Was passiert bei absolut zeitgleichem Zugriff auf eine Tablerow Datenbankprogrammierung 7
I Zugriff auf Datenbank nach Erstellen einer Executable Jar Datei verweigert Datenbankprogrammierung 10
I Zugriff auf eine Datenbank auf dem Webserver Datenbankprogrammierung 2
J Derby/JavaDB Zugriff ohne Entwicklungsumgebung Datenbankprogrammierung 5
E H2 - Globalen Zugriff auf die Datenbank? Datenbankprogrammierung 10
J Zugriff auf MySQL-Datenbank Datenbankprogrammierung 5
F Zugriff auf MS Access-Datenbank mit jackcess Datenbankprogrammierung 10
F suche Erstanschub für DB-Zugriff Datenbankprogrammierung 9
E einfache Frage bei DB-Zugriff Datenbankprogrammierung 11
P MySQL Remote Zugriff Datenbankprogrammierung 2
C Gleichzeitiger Zugriff auf Datensatz Datenbankprogrammierung 5
T Problem bei Zugriff auf Access Datenbank Datenbankprogrammierung 7
T MySQL Zugriff ohne Angabe der Datenbank Datenbankprogrammierung 3
M Zugriff auf eine Access-Datenbank innerhalb eines jar-Files Datenbankprogrammierung 7
N Wie kann ich Zugriff auf eine MS Access DB (mit JDBC) über Netzwerk erreichen? Datenbankprogrammierung 7
J Frage zu Synchronisation bei parallelem Zugriff, speziell mit JPA Datenbankprogrammierung 2
T DB Zugriff mit Java Web Datenbankprogrammierung 6
R Zugriff auf SQL im PreparedStatement Datenbankprogrammierung 4
F Zugriff auf MS Access DB Datenbankprogrammierung 3
J Nullpointer Exception bei Zugriff auf Datenbank Datenbankprogrammierung 13
J Zugriff auf Access-Datenbank Datenbankprogrammierung 3
A Zugriff auf Remote MySQL-DB mit JAR-File Datenbankprogrammierung 7
R Java DB Zugriff Datenbankprogrammierung 2
G Zugriff auf Datenbank im Internet Datenbankprogrammierung 6
J Java DB Zugriff auf Access (Migration auf andere DB) Datenbankprogrammierung 8
G treiber für datenbank zugriff Datenbankprogrammierung 3
L Datenbank URL Zugriff Datenbankprogrammierung 9
G Wie baut man eine Anwendung mit DB Zugriff Datenbankprogrammierung 3
QDog JPA persistence.xml auslagern/extern Zugriff Datenbankprogrammierung 2
A HSQLDB Performance bei erstem Zugriff Datenbankprogrammierung 6
S Datenbank zugriff optimieren - zugriff ohne cursor? Datenbankprogrammierung 7
A Zugriff auf DB-Pool, der von Servlet initialisiert wurde Datenbankprogrammierung 4
J MYSQL-Zugriff mittels einer Java-Bean Datenbankprogrammierung 42
M mySQL zugriff funktionert nach ca4 stündiger laufzeit nicht Datenbankprogrammierung 6
J Zugriff mit DataSource Datenbankprogrammierung 7
M Zugriff für andere sperren Datenbankprogrammierung 11
K Zugriff mittels JDBC funktioniert nur lokal Datenbankprogrammierung 5
S Zugriff auf eine große Datenmenge von MS Access per JDBC Datenbankprogrammierung 11
G Hibernate Zugriff Datenbankprogrammierung 5
E JDBC Oracle Fehler, zugriff auf datenbank (Cluster) Datenbankprogrammierung 5
D ODBC Zugriff auf MDB-Datenbank, Insert Into ohne Funktion Datenbankprogrammierung 2
T Zugriff auf MS-Access-DB ist grottenlangsam. Normal? Datenbankprogrammierung 9
G Verwendung neuen Treiber für JDBC-Zugriff auf OracleDB Datenbankprogrammierung 5
G Access Zugriff, DB auf Server, Applet Datenbankprogrammierung 4
D Problem beim Zugriff auf eine Oracle-DB Datenbankprogrammierung 23
D Kann nicht auf MySQL Datenbank Zugriff Datenbankprogrammierung 9
G Policy Eintrag für SQL Zugriff im Netzwerk Datenbankprogrammierung 10
S Java SQL-Exception bei Zugriff auf MSAccess Datenbankprogrammierung 2
S JDBC Zugriff auf SQLServer Datenbankprogrammierung 9
D Datenbank zugriff über Client/Server Datenbankprogrammierung 4
M Zugriff auf PostgreSQL mit JAva! Datenbankprogrammierung 7
F Zugriff auf ODBC-Datenbank übers Netzwerk Datenbankprogrammierung 6
G Problem beim Zugriff SQL 2000 Datenbankprogrammierung 2
T Verwaltungsystem mit grafischer Oberfläche mit Zugriff auf. Datenbankprogrammierung 6
C Zugriff auf MS Access Datenbankprogrammierung 4
D Zugriff auf Paradox-Datenbank Datenbankprogrammierung 10
B ResultSet aus Session geladen, aber kein Zugriff möglich Datenbankprogrammierung 6
D HSQLDB Datenbank Zugriff! Datenbankprogrammierung 4
L Programm-Architektur bei DB-Zugriff Datenbankprogrammierung 6
R Zugriff auf MySQL-Datenbank im Internet Datenbankprogrammierung 13
L Zugriff von Applet auf mysql-DB Datenbankprogrammierung 2
K Zugriff auf Access-Datenbank Datenbankprogrammierung 4
R Datenbank zugriff funktioniert nur offline Datenbankprogrammierung 2
G Fehlermeldung beim Zugriff auf SQL-Server-DB Datenbankprogrammierung 3
D Mysql zugriff aus java nicht moeglich Datenbankprogrammierung 2
thor_norsk Datenbank: Apache Derby Datenbankprogrammierung 6
O apache derby in eclipse für Datenbanken einbauen Datenbankprogrammierung 3
F Derby Datenbankprogrammierung 5
T importierte Derby DB währen der Laufzeit einlesen Datenbankprogrammierung 2

Ähnliche Java Themen

Neue Themen


Oben