Derby/JavaDB Zugriff auf DB mit exportiertem Programm

Tassimmo

Mitglied
Hallo zusammen,

ich beschäftige mich aktuell während meiner Ausbildung mit dem Zugriff auf Datenbanken.
In der Schule hab ich bisher nur mit MySQL-Datenbanken und xampp gearbeitet. Nun möchte ich jedoch, dass ich auch das Programm exportieren kann und trotzdem auf die Datenbank zugreifen kann.

Ich habe mit Derby eine eingebettete Datenbank gefunden, mit der das möglich sein soll.

Jetzt aber eine Frage, bevor ich den Java-Code für den Zugriff usw. schreibe:
Wie krieg ich die Derby-DB in mein Projekt, sodass es sicher (inkl. DB) exportiert wird? Denn bislang find ich die Datenbank nur in meinem Data Source Explorer, daher bin ich mir nicht sicher, wie sie exportiert werden kann.

Ich hoffe, meine Schilderung war irgendwie verständlich.

Bereits vielen Dank im Voraus für alle Antworten :)

Grüße
Tassimmo
 

turtle

Top Contributor
Es existieren mehre Java-DB, die eingebettet laufen können (Derby, H2, HSLDB und selbst mySQL kann embedded laufen, obwohl ich mySQL nicht kenne.

Auf jeden Fall ist bei allen Szenarien gleich, das dein Programm lediglich eine Verbindung (Connection) zur DB aufbauen muss. Die DB wird im Dateisystem des Rechners abgelegt und du musst "nur" den JDBC-Treiber zur Datenbank integrieren. Daher ist eine Weitergabe des Programms möglich, wenn auch die DB mit geliefert wird.

Also, ist ein Export der DB möglich, aber du überbügelst Dinge in der vorhandenen DB, wenn du einfach dieser mit deiner Version überschreibst.

Das kann der Benutzer aber einfach anpassen, indem er den Connection-String zur DB anpasst.

Ich lege daher häufig zur Entwicklung die DB in einem Subordner des Projektes ab. Dort findet sich ja dein Java-Code, wahrscheinlich unter src-Zweig und daneben gibt es dann noch den Ordner db, in dem die DB steht.
 

Tassimmo

Mitglied
Okay, schonmal vielen Dank für deinen Ratschlag.

Allerdings kann ich meine Datenbank aktuell scheinbar nicht einfach in den src-Folder reinkopieren. Einen derartigen Befehl finde ich leider gar nicht bei meiner Datenbank...

Ich hab aktuell nur meine Datenbank mit einer Tabelle drin. Das SQL-Script kann ich im src-Folder abspeichern, mehr aber auch nicht... Es macht ja auch keinen Sinn, den CREATE-Befehl im SQL-Script zu speichern, und dieses jedes Mal bei Programmstart auszuführen, oder?

Aber wie krieg ich tatsächlich meine DB in das Projekt rein? Dafür hab ich bislang noch nichts gefunden...

Edit:
Eine andere Möglichkeit, die ich grade gesehen habe, wäre es, die Datenbank offline zu speichern. Nur kann ich die DB so als Datei speichern, damit ich sie verschieben kann? :bahnhof:
 
Zuletzt bearbeitet:

turtle

Top Contributor
Redest du hier von der mySQL-Datenbank?

Wenn ja, musst du die Datenbank in eine Datei exportieren (mit mysqldump) und in der embedded-DB wieder einspielen (Tabelle anlegen und Daten importieren).
 

Tassimmo

Mitglied
Nein, ich hab die Datenbank bereits in Eclipse angelegt.
Sie besitzt schon ein paar Beispieldatensätze. Allerdings sehe ich aktuell nicht, wie ich die Datenbank exakt in das Projekt reinkriege. Momentan ist mein Projekt ganz normal im Paket-Explorer, während ich die Datenbank nur im Data Source Explorer aufrufen kann.

Oder kann ich später beim Exportieren auch aus dem Data Source Explorer aussuchen, was ich mitexportieren möchte? :(
 

Tassimmo

Mitglied
Laut meinen DB-Properties hab ich die Datenbank aktuell unter
C:\Users\<Benutzername>\MyDB
gespeichert.

Wenn ich den Pfad jetzt auf meinen Workspace umlege
E:\Eclipse_Workspace\<Projektname>\db
kann ich diese DB nicht anpingen.

Verstehe ich also richtig, dass ich die Datenbank von Anfang an in dieser Location errichten muss? Aber wenn ja, wie krieg ich es dann hin, dass die Datenbank von hier genauso funktioniert wie von seiner bisherigen Adresse?
 

turtle

Top Contributor
Nein, das ist nicht der Connection-String, den ich meine.

Du musst ja eine JDBC-verbindung zur Datenbank aufbauen. und die muss, weil es mySQL ist, so ähnlich heißen wie "jdbc:mysql:<xxx>".
 

Tassimmo

Mitglied
Okay. Ich poste mal die Methode, die den Datenbankzugriff öffnet:
Java:
public class DBVerbindung 
{
	Connection mdbHangman = null;	//Verbindungsobjekt
	Statement stmtSQL = null;		//Hier wird das "SQL-Statement-Objekt" deklariert
	ResultSet rs;
	
	public void oeffneDB()
	{
		try
		{
			//Folgende Zeilen stellen eine Verbindung zu MySQL her:+
			Class.forName("com.mysql.jdbc.Driver");
			mdbHangman = DriverManager.getConnection("jdbc:mysql://C:/Users/<Username>/MyDB", "<Benutzer>", "<Passwort>");
			stmtSQL = mdbHangman.createStatement(); 
		}
		catch(ClassNotFoundException cnfe)
		{
			System.err.println(cnfe);
			System.out.println("Fehler bei ClassNotFoundException!");
			System.out.println(cnfe.toString());
		}
		catch(SQLException sqle)
		{
			System.err.println(sqle);
			System.out.println("Fehler bei SQLException!");
			System.out.println(sqle.toString());
		}
	}

Bis jetzt hab ich wie beschrieben immer mit MySQL und xampp gearbeitet, daher war der jdbc-String immer "localhost/DB-Name". Daher bin ich mir bei dem oben genannten String nicht sicher. Ich muss erst noch eine Funktion einbauen, die die DB nutzt, um zu testen, ob sie so funktioniert.
 
Zuletzt bearbeitet:

Tassimmo

Mitglied
Okay...
Ich hab den Code jetzt mithilfe eines Kollegen soweit umbauen können, dass er wenigstens einen Datenbankzugriff macht. Wenn ich meinen Code debugge, komm ich immerhin schonmal zum ResultSet.
Hier bekomme ich jedoch den Fehler, dass das Schema, dass ich aufrufen möchte, nicht existiert. Das heißt, er greift irgendwie auf eine DB zu (denn die existiert ja scheinbar, hier gibts ja keinen Fehler mehr), nur auf die von mir höchstselbst erzeugte Derby-DB, die schon das aufgerufene Schema und auch Tabellen mit Datensätzen enthält, ruft er nicht auf. :autsch:

Daher meine Frage: Wie kann ich herausfinden, wo sich die Datenbank, die das Programm ansteuert, befindet?
Ich hoffe, meine Schilderung war verständlich. Bereits im Voraus vielen Dank.

Gruß
Tassimmo
 

Tassimmo

Mitglied
Nun gut, wir scheinen eine passende Lösung gefunden zu haben:
Ein Kollege hat mir geholfen, das Projekt in ein Maven-Projekt umzuwandeln. Es ist uns gelungen, in den Run Configurations von Eclipse das Programm so zu starten, dass es sowohl in Eclipse als auch exportiert auf die entsprechende Datenbank zugreifen kann.
Allerdings mussten wir die Zieldatei dazu erst manuell in den Ordner mit der Datenbank kopieren.

War zwar mit Sicherheit nicht die beste Lösung, aber wenigstens eine funktionierende.
 

dzim

Top Contributor
Derby!=MySQL -> Verwende den entsprechenden Treiber für Derby und nicht [c]Class.forName("com.mysql.jdbc.Driver");[/c]
Darüber hinaus ist der Class#forName-Ansatz, glaub ich zumindest, auch Outdated...
 
Ä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
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
T Zugriff auf Derby-Datenbank will einfach nicht klappen Datenbankprogrammierung 22
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
M Programm auf dem PC bringen Datenbankprogrammierung 5
TH260199 Java-Programm. Probleme bei der Umsetzung von einer Kontaktverwaltung. Datenbankprogrammierung 7
P USER Management in SQL übergreifend auf JAVA Programm Datenbankprogrammierung 1
platofan23 MySQL Java Programm findet Treiber für mySQL auf Debian-Server nicht? Datenbankprogrammierung 11

Ähnliche Java Themen


Oben