Probleme mit Datenbanken

K

KlemensyXYZ

Gast
Moin,

ich habe dazu zwei Fragen:

1.)
Kann ich den Datenbanktreiber irgendwie mit in eine .jar Datei packen?
Ich habe das bis jetzt hier
(C:\Program Files (x86)\Java\jre6\lib\ext\mysql-connector-java-5.1.15-bin.jar)
liegen gehabt. Das funktioniert so für mich zuhause ja ganz gut, nur ich kann ja nicht vorraussetzten das jeder den Treiber da installiert hat.
Ich habe das schon versucht: (Create and Export MySQL JDBC driver bundle - Eclipsepedia)
das sieht bei meiner eclipse Version aber alles anders aus.

2.)
Kann man auch Datenbanken mit in die .jar Datei packen?
Finde ich irgendwie ganz praktisch.
Bei mir liegen die im Ordner C:\xampp\mysql\data.
Müssen die da immer liegen?
und brauche ich immer xampp o.ä. damit die laufen?

Danke
 

nrg

Top Contributor
1.) leg sie halt in ./lib/ und mach das deiner .jar im classpath in der manifest.mf klar, dass es dort danach suchen muss

2.) entweder du hast irgendein ini/properties-gesteuerten data-path oder du legst das ins user.dir, oder du legst das einfach relativ zu deinem classpath > ./data/
 
K

KlemensyXYZ

Gast
1.) leg sie halt in ./lib/ und mach das deiner .jar im classpath in der manifest.mf klar, dass es dort danach suchen muss

ist ./lib/ jetzt ein package oder ein normales verzeichnis?
dann den mysql connector als jar da rein oder entpackt?

ich habe bei einem projekt noch nie die manifest datei oder den classpath verändert
(jedenflass hat das noch nie funktioniert)
was muss ich denn dan da in welche datei genau schreiben?

2.) entweder du hast irgendein ini/properties-gesteuerten data-path oder du legst das ins user.dir, oder du legst das einfach relativ zu deinem classpath > ./data/

hö?
ganz GROSSER Bahnhof :bahnhof:
 

nrg

Top Contributor
Du hast einen Ordner Namens "DeinProgramm". Darin befindet sich ein Ordner Namens "lib" und deine .jar Datei. Der Ordner "lib" enhält die Datei mysql_con.jar.

Jetzt machst du deine .jar mit einen Entpackungstool (WinRAR o.ä.) auf, gehst in META-INF und öffnest die MANIFEST.MF

Dort erweiterst du dann den Class-Path:
Code:
Manifest-Version: 1.0
Main-Class: DeineMainClass (Packagestruktur beachten)
Class-Path:[B] lib/mysql_con.jar [/B].
(die Leerzeile am Ende - Zeile 4 - ist wichtig!)

zu Zweitens:
System (Java Platform SE 6)

System.getProperty("user.dir"); liefert dir das Benutzerverzeichnis. Darin könntest du z.b. embedded DBs ablegen.

Oder im Ordner DeinProgramm gibt es eine DeinProgramm.ini oder DeinProgramm.properties. Dort wäre dann ein data folder gesetzt:

datafolder = ./data
oder
datafolder = c:/data


Oder halt einfach immer das aktuelle Verzeichnis im Code nehmen ./data
 
K

KlemensyXYZ

Gast
Du hast einen Ordner Namens "DeinProgramm". Darin befindet sich ein Ordner Namens "lib" und deine .jar Datei. Der Ordner "lib" enhält die Datei mysql_con.jar.

ich habe nirgendwo einen "lib" ordner oder ähnliches.
Ich kann zwar bei packen des jar files einen erstellen, der ist dann aber leer

Fangen wir mal ganz von vorne an:

Also ich habe ein eclipse Projekt im Worspace liegen
Darin liegt der src und der bin Ordner.
Diese enthalten die .java und .class Dateien für das Programm was auf die Datenbank zugreifen soll.
Außerdem ist dort eine .projekt Datei, eine .classpath Datei und ein .settings Ordner der die Datei
org.eclipse.jdt.core.prefs enthält.

Dann habe ich den mysql connector als .jar Datei.
Zurzeit in C:\Program Files (x86)\Java\jre6\lib\ext\
und einmal als Sicherheitskopie im Download Ordner in den Dokumenten.

was muss ich nun als nächstes tun?
 

nrg

Top Contributor
habe ich dir doch schon geschrieben. ich kann dir nicht jeden einzelnen schritt erklären.

- du erstellst in eclipse aus deinem projekt eine jar-datei und packst dort nur den ordner src rein
- du legst diesen zusammen mit einem lib-ordner, worin die mysql.jar ist, in einen ordner
- erweiterst den classpath in der jar-datei (siehe oben)

punkt 2 lass ich jetzt erstmal weg. eins nach dem anderen :)
 
K

KlemensyXYZ

Gast
habe ich dir doch schon geschrieben. ich kann dir nicht jeden einzelnen schritt erklären.

- du erstellst in eclipse aus deinem projekt eine jar-datei und packst dort nur den ordner src rein
- du legst diesen zusammen mit einem lib-ordner, worin die mysql.jar ist, in einen ordner
- erweiterst den classpath in der jar-datei (siehe oben)

punkt 2 lass ich jetzt erstmal weg. eins nach dem anderen :)

ok ich habs :toll:
nur das der blöde explorer dabei ständig abschmiert :eek:

aber egal ich habs hinbekommen

so und nun zu punkt 2 ;-)
 

nrg

Top Contributor
naja du gibst ja irgendwo einen pfad der embedded db an. diesen kannst du ja aufs user.dir setzten oder auf einen properties-gesteuertes datadir oder einfach relativ zum aktuellen verzeichnis (mit ./data o.ä).

z.b. bei h2 geht das auch so (weiß net wie das bei mysql ist):
Quickstart
The database URL jdbc:h2:~/test opens the database test in your user home directory
 
K

KlemensyXYZ

Gast
naja du gibst ja irgendwo einen pfad der embedded db an.

Was ist denn embedded?
und nein bei mysql habe ich keinen pfad
Da mach ich das so:
con = DriverManager.getConnection("jdbc:mysql://host:port/"dbName", "user", "passwort");

diesen kannst du ja aufs user.dir setzten oder auf einen properties-gesteuertes datadir oder einfach relativ zum aktuellen verzeichnis (mit ./data o.ä).

das habe ich immer noch nicht kapiert
 

nrg

Top Contributor
dann hast du local eine serverinstallation? kenn mich mit mysql nicht so aus aber das geht glaub sowohl als auch
 
K

KlemensyXYZ

Gast
is theoretisch nen server der nur für mich on ist und auch nur wenn ich den dazugehörigen dienst starte.

Meinst du deine h2 datenbank wäre hirmit einfacher zu bewerkstelligen?

Oder kennt sich jemand anderes damit aus?
 

nrg

Top Contributor
ich nehm immer h2. kann ich nur empfehlen. habe zwar keine anderen getestet sein aber scheint mir das neuste und von den benchmarks auch das schnellste zu sein. dachte fälschlicherweiße, dass eine mysql auch embedded geht (meinte es irgendwo gelesen zu haben) aber das ist glaub nicht so (oder es gibt ne extra mysql embedded version - kp, von mysql - wie gesagt - keine ahnung :D). ich bin in dem thema jetzt aber auch noch net so lange drin, aber wennste eine db nur für deine applikation willst, würde sich da eine embedded db schon anbieten. wenn die db für jeden gleich ist, dann halt einfach ins programmverzeichnis. ansonsten bietet sich z.b. das user.dir an
 
K

KlemensyXYZ

Gast
ich nehm immer h2. kann ich nur empfehlen. habe zwar keine anderen getestet sein aber scheint mir das neuste und von den benchmarks auch das schnellste zu sein.

tja nur irgendwie steige ich da nicht durch ???:L
wo wird denn diese db abgespeichert?
irgendwie muss die ja ans Programm

dachte fälschlicherweiße, dass eine mysql auch embedded geht (meinte es irgendwo gelesen zu haben) aber das ist glaub nicht so (oder es gibt ne extra mysql embedded version)

wenn ich das richtig verstanden habe kann man sich mysql embedded srver kaufen

aber wennste eine db nur für deine applikation willst, würde sich da eine embedded db schon anbieten

Ich habe das jetzt so verstanden, dass embedded eingebettet heißt.
Ist diese Datenbank dann noch durch ein Programm veränderbar?
 

ARadauer

Top Contributor
tja nur irgendwie steige ich da nicht durch ???:L
wo wird denn diese db abgespeichert?
irgendwie muss die ja ans Programm

Also wie gesagt ich denke das mit mysql wird schwer werden. MySQL ist ein Server auf den du dich verbindest, den kann man nicht einfach in ein jar kopieren.

Du brauchst eine embedded Datenbank wie H2 oder Java DB

Was heißt du blickst da nicht durch? Wie viel Zeit hast du schon auf H2 Database Engine (redirect) verbracht? les dir das mal genau durch...
 
K

KlemensyXYZ

Gast
ah da liegen so ein paar sachen rum
- .boxit.ini
- .h2.server.properties
- .javafx_eula_accepted
- .jose.user.prefrences
- .Sti_Trce.log
- test.h2.db
- test.lock.db

was gehört davon denn jetzt zur db?
ich denke mal die kursiven auf jeden fall
und kann ich das dann auch in einen ordner schmeißen?
 
Zuletzt bearbeitet von einem Moderator:

nrg

Top Contributor
klar. gib halt einfach bei der Connection den Pfad an (statt ~/test halt c:/deinOrdner/test)

Aber das steht auch alles auf der Homepage von H2. Die Library ist echt mal sehr gut dokumentiert. Du musst es nur nutzen ;)
 

nrg

Top Contributor
test.h2.db ist deine datenbank und test.lock.db ist das lock, welches mit conn.close() freigegeben wird. die properties werden, falls nicht vorhanden, mit den default-werten gefüllt. also um die brauchste dich in den meisten fällen nicht kümmern
 
K

KlemensyXYZ

Gast
ok also lag ich da gar nicht so falsch

und eine (vermutlich) letzte frage dazu:

Dort erweiterst du dann den Class-Path:
Code:
Manifest-Version: 1.0
Main-Class: DeineMainClass (Packagestruktur beachten)
Class-Path:[B] lib/mysql_con.jar [/B].
(die Leerzeile am Ende - Zeile 4 - ist wichtig!)

kann man da auch mehrere Pfade in die Manifest datei packen?
und wenn ja wie
vielleicht mit einem komma oder semikolon?
 

nrg

Top Contributor
ne einfach mit einem leerzeichen
Code:
Class-Path: lib/mysql_con.jar lib/h2.jar .
 
K

KlemensyXYZ

Gast
so ich habe mit der h2 console grade versucht ne tabelle zu erstellen :autsch:

und zwar damit
SQL:
CREATE TABLE rohstoffe (RID INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
Rohstoff VARCHAR(30), Menge INT, gesamt INT, Punkte INT)AUTO_INCREMENT=1;

ist dass denn keine normale SQL Syntax?
bei mysql hat der Befehl wunderbar funktioniert
 

nrg

Top Contributor
gut. welche sqlexception bekommst du?

so sollte es gehn:
SQL:
CREATE TABLE rohstoffe (RID INT NOT NULL PRIMARY KEY AUTO_INCREMENT,Rohstoff VARCHAR(30), Menge INT, gesamt INT, Punkte INT)
 
Zuletzt bearbeitet:
K

KlemensyXYZ

Gast
habs hinbekommen
h2 mag scheinbar überhaupt kein auto increment
ist zwar schade aber nicht so schlimm

ähm wenn die datenbank im jar drin ist kann die dann noch durch nen update befehl o.ä. verändert werden?
 

nrg

Top Contributor
also bei mir hat das mit dem autoincrement funktioniert..
im zweifelsfall sollte es mit ALTER TABLE ... ALTER COLUMN ... klappen.

würde die datenbank nicht in die jar legen. macht für mich keinen sinn und kann auch imho nicht funktionieren. aber gewöhne dir doch mal etwas try&error an ;)

edit: achja. vergess den index nicht
 
K

KlemensyXYZ

Gast
aber gewöhne dir doch mal etwas try&error an ;)
oh ich hatte gestern genug try und noch mehr error mit mysql
da hab ich mir gdacht ich frag besser mal vorher;)

edit: achja. vergess den index nicht
wofür brauch ich den denn und wie bekomme ich den????:L
Quickstart hab da nix drüber gefunden

so jetzt habe ich nur noch ein problem :oops:

naja du gibst ja irgendwo einen pfad der embedded db an. diesen kannst du ja aufs user.dir setzten oder auf einen properties-gesteuertes datadir oder einfach relativ zum aktuellen verzeichnis (mit ./data o.ä).

ich muss da ja einen relativen Pfad verwenden, da ich ja nicht weis was der Endbenutzer für eie Verzeichnisstruktur hat und wo er das Programm ablegt.
Also ich würde neben dem "lib" jetzt einen Ordner "data" anlegen und da die db reinschmeißen.
Dann den Pfad so setzen:
jdbc:h2://data/spielstand
oder geht das nicht?
 

nrg

Top Contributor
Where are the Database Files Stored?

When using database URLs like jdbc:h2:~/test, the database is stored in the user directory. For Windows, this is usually C:\Documents and Settings\<userName>. If the base directory is not set (as in jdbc:h2:test), the database files are stored in the directory where the application is started (the current working directory). When using the H2 Console application from the start menu, this is <Installation Directory>/bin. The base directory can be set in the database URL. A fixed or relative path can be used. When using the URL jdbc:h2:file:data/sample, the database is stored in the directory data (relative to the current working directory). The directory is created automatically if it does not yet exist. It is also possible to use the fully qualified directory name (and for Windows, drive name). Example: jdbc:h2:file:C:/data/test

edit: wobei ich es glaub so machen würde:
Code:
jdbc:h2:/data/test
musste einfach mal testen. vllt auch
Code:
jdbc:h2:./data/test
:)

Quickstart hab da nix drüber gefunden
die seite besteht aus mehr, als nur den "Quickstart" ;).

kuck mal unter SQL-Grammar bei CREATE INDEX. im faq findest du da auch was dazu
 
Zuletzt bearbeitet:

andiv

Bekanntes Mitglied
Ein Index wird verwendet um die Suche nach Datensätzen zu beschleunigen. Wenn du also häufig anhand einer ID-Spalte Einträge suchst, dann solltest du einen Index für diese Spalte erstellen.

Mehr dazu z.B. in Wikipedia:
Datenbankindex
 

nrg

Top Contributor
ja kommt natürlich auf die größe der db an aber allgemein ist ein index nie verkehrt. schadet ja nicht :)

edit um das zu verdeutlichen: select ohne top1 o.ä. auf eine datenbank mit 250000 Datensätzen braucht man ohne index ca. 6 sekunden, mit ca. 20 millisekunden. Nicht auf die werte festsetzen, ich will damit nur sagen, dass es einen deutlichen unterschied macht
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Probleme bei Verwendung short und int im Constuctor Java Basics - Anfänger-Themen 6
D Rekursions Probleme / frage Java Basics - Anfänger-Themen 4
P JDK installieren Probleme bei der Java-Installation Java Basics - Anfänger-Themen 8
C Probleme mit Byte konvertieren nach int Java Basics - Anfänger-Themen 10
P Probleme mit NetBeans: Wie lässt sich jar. Datei an einem MacBook öffnen Java Basics - Anfänger-Themen 21
I Projekte in IDE untereinander sharen / Probleme beim Build Java Basics - Anfänger-Themen 8
MiMa Probleme mit Datentyp long ?? Java Basics - Anfänger-Themen 2
T Probleme beim Import eines Git-Repos Java Basics - Anfänger-Themen 2
Jxhnny.lpz TicTacToe Spiel vs Computer. (Probleme) Java Basics - Anfänger-Themen 7
B Quiz mit RMI Probleme mit RMI start Java Basics - Anfänger-Themen 4
httprt Probleme bei dem erstellen von leveln in meinem Spiel Java Basics - Anfänger-Themen 2
berserkerdq2 Habe eine Klasse, welche public ist, diese hat eine public Methode, die nicht static ist. Wenn ich nun versuche aufzurufen Probleme? Java Basics - Anfänger-Themen 8
V Probleme Guessing Game Java Basics - Anfänger-Themen 8
hebein PDF Ausdruck auf Drucker - Probleme mit Format Java Basics - Anfänger-Themen 17
R JMenu/JMenuItem Probleme Java Basics - Anfänger-Themen 2
B Static vs non static und Probleme daraus Java Basics - Anfänger-Themen 13
J Probleme mit dem Debugger Java Basics - Anfänger-Themen 4
I Probleme mit OutputStream - Datei lässt sich nicht öffnen Java Basics - Anfänger-Themen 4
J Probleme mit Kompilierung Java Basics - Anfänger-Themen 11
B Probleme mit Zugriff auf Dateisystem Windows 10 ( jFileChooser) Java Basics - Anfänger-Themen 17
W Objekte über Scanner Input; ToString Probleme... Java Basics - Anfänger-Themen 4
C Probleme mit paintComponent Java Basics - Anfänger-Themen 13
P Probleme mit JUnit-Tests, es kommt was anderes raus als bei manuellen Tests Java Basics - Anfänger-Themen 5
E JavaFX Editor Probleme mit der Zwischenablage Java Basics - Anfänger-Themen 12
C Probleme mit dem Erstellen und Importieren von Packages Java Basics - Anfänger-Themen 6
3 OOP erste Versuche, OOP zu verstehen. Probleme mit gettern und settern Java Basics - Anfänger-Themen 4
R Erste Schritte Probleme bei 2D Spielfeld, mit einzufügender "Person" Java Basics - Anfänger-Themen 5
P Probleme bei der Installation von JavaFX Java Basics - Anfänger-Themen 3
S Mehrere Probleme im Code Java Basics - Anfänger-Themen 7
D Probleme mit JFrame und der Größe Java Basics - Anfänger-Themen 8
Dimax String Probleme Java Basics - Anfänger-Themen 12
N Probleme beim printen von Arrays durch for Schleife Java Basics - Anfänger-Themen 3
Splayfer Java Array Probleme Java Basics - Anfänger-Themen 3
J Probleme bei IllegalArgumentException "werfen". Java Basics - Anfänger-Themen 1
K Probleme bei der Ausgabe - komme nicht weiter :/ Java Basics - Anfänger-Themen 15
X Probleme im Umgang mit PriorityQueue Java Basics - Anfänger-Themen 75
D Probleme mit dem Windowbuilder und JComboBox Java Basics - Anfänger-Themen 2
M Regex Probleme (mal wieder) Java Basics - Anfänger-Themen 3
tom.j85 TicTacToe - probleme beim Casten Java Basics - Anfänger-Themen 6
J Probleme mit Vererbung Java Basics - Anfänger-Themen 4
X Probleme mit Übungsaufgaben zu Zahlentypen Java Basics - Anfänger-Themen 4
G Probleme bei Aufgabe Java Basics - Anfänger-Themen 12
P Erste Schritte Probleme mit dem Programmieren Java Basics - Anfänger-Themen 12
B Probleme bei einer Aufgabe Java Basics - Anfänger-Themen 19
Franzi1001 Probleme mit Eclipse Java Basics - Anfänger-Themen 7
T Probleme bei Installation von JDK Java Basics - Anfänger-Themen 2
C Probleme mit String-Vergleich Java Basics - Anfänger-Themen 4
C Probleme bei Regex Java Basics - Anfänger-Themen 9
V Probleme mit Arrays Java Basics - Anfänger-Themen 8
D Kleine Probleme mit Split-Befehlen Java Basics - Anfänger-Themen 5
T Probleme mit Strings Java Basics - Anfänger-Themen 6
G Probleme bei Frame aufgaben Java Basics - Anfänger-Themen 6
N Probleme mit dem ActionListener Java Basics - Anfänger-Themen 4
D Probleme beim Kompelieren mache ich etwas falsch ? Java Basics - Anfänger-Themen 3
L Probleme mit Java Java Basics - Anfänger-Themen 3
S Probleme mit abspielen einer .wav Datei Java Basics - Anfänger-Themen 2
J Probleme bei der Umwandlung einer Farbe von Hex zu RGB Java Basics - Anfänger-Themen 8
K Probleme beim Programm schreiben - Lesen von Dateiinhalten -zaehlen von Wörtern/ Buchstaben Java Basics - Anfänger-Themen 4
M Probleme beim aktualisieren eines JPanels Java Basics - Anfänger-Themen 7
J Probleme beim Array ausgeben Java Basics - Anfänger-Themen 4
M Probleme bei rekursiver Zuordnung Java Basics - Anfänger-Themen 1
I Probleme mit 2 dimensionale Arrays Java Basics - Anfänger-Themen 3
H Best Practice View probleme Java Basics - Anfänger-Themen 2
B Probleme mit Kreisberechnung Java Basics - Anfänger-Themen 15
E Probleme mit Scanner Java Basics - Anfänger-Themen 4
J Eclipse Export Probleme Java Basics - Anfänger-Themen 25
M Probleme beim verwenden von Packages Java Basics - Anfänger-Themen 6
D Probleme mit der Übergabe einer BorderPane Java Basics - Anfänger-Themen 2
J Interface Probleme bei der Implementierung Java Basics - Anfänger-Themen 1
BlueFox Tabelle in der Konsole ausgeben - Probleme Java Basics - Anfänger-Themen 1
G Methoden Probleme beim Methodenaufruf Java Basics - Anfänger-Themen 2
V Klassen ObjectInputStream ->ReadObject Probleme Java Basics - Anfänger-Themen 5
P Probleme mit der Do-Schleife Java Basics - Anfänger-Themen 2
F Erste Schritte Compiling Probleme Java Basics - Anfänger-Themen 13
S Neuling und Probleme bei Schulaufgabe Java Basics - Anfänger-Themen 5
J Anfänger: ActionListener und ProcessBuilder machen Probleme Java Basics - Anfänger-Themen 6
S Erste Schritte 2D Grafik Probleme mit KeyListener. Java Basics - Anfänger-Themen 18
M Array mit eigenem Datentyp probleme beim übergeben Java Basics - Anfänger-Themen 6
M Probleme mit Eclipse Java Basics - Anfänger-Themen 20
G Probleme beim casten von double zu int Java Basics - Anfänger-Themen 3
E 2 Probleme - Datum & private finale Variablen Java Basics - Anfänger-Themen 5
S Compiler-Fehler javac hat Probleme mit Paketen unter OSX Java Basics - Anfänger-Themen 2
J Probleme beim schreiben von Dateien Java Basics - Anfänger-Themen 5
B Variablen Probleme mit Eclipse Java Basics - Anfänger-Themen 6
H Mouse- und KeyListener Probleme? Java Basics - Anfänger-Themen 5
A Probleme beim zykl. aktulisieren von Daten in JTable Java Basics - Anfänger-Themen 3
I Probleme bei Verzeichnissanalyse Java Basics - Anfänger-Themen 12
F Probleme mit privaten Klassen (abstrakten Klassen) Java Basics - Anfänger-Themen 1
H Probleme mit Klassen...oder: Eine Uhr Java Basics - Anfänger-Themen 9
G Probleme mit Konsole Java Basics - Anfänger-Themen 4
S Probleme mit GamGrid Spiel-Erstellung => Actor reagiert nicht auf Tastatur Java Basics - Anfänger-Themen 2
G Probleme mit Eclipse oder der URL Klasse Java Basics - Anfänger-Themen 5
W Verständnis Probleme bei der while-Schleife und continue Java Basics - Anfänger-Themen 21
M Probleme mit Anzeigen von String in GUI und if-Anweisung Java Basics - Anfänger-Themen 9
T Konstruktor Probleme Java Basics - Anfänger-Themen 3
W Methoden Probleme mit der Scanner Methode Java Basics - Anfänger-Themen 2
F Ja Nein Abfrage und andere Probleme Java Basics - Anfänger-Themen 5
L If Anweisung mit ArrayList Probleme Java Basics - Anfänger-Themen 6
littles_de Simbad Simulator probleme mit Sensordaten... Java Basics - Anfänger-Themen 0
M Erste Schritte Probleme beim Verknüpfen von Methoden Java Basics - Anfänger-Themen 15

Ähnliche Java Themen

Neue Themen


Oben