DatenBank Anfänger

Status
Nicht offen für weitere Antworten.

Lexi

Bekanntes Mitglied
Ich möchte mich mal ganz gerne mit Datenbanken auseinandersetzten und damit ein wenig rumprobieren. Leider stehe ich grad komplett wie der Ochse vorm Berg und habe keine Ahnung wo ich anfangen soll.
Ich habe hier ein Buch in dem beschrieben wird was Treiber sind und wofür ich die brauche, wie ich eine Verbindung herstelle und auf die Daten zugreife.
Allerdings weiß ich nicht wo ich meine Datenbank herbekomme. Muss ich da irgenwas installieren, oder muss da was in den Build-Path mit rein ?
Ich bräuchte einen kleinen Antsoß.

Vielen Dank schonmal
 

L-ectron-X

Gesperrter Benutzer
Eine Datenbank wird auf einem Datenbankserver angelegt. Vielleicht hast du Webspace mit MySQL, dann kann man mit Java in vielen Fällen auch auf diese Datenbanken zugreifen.
Wenn du keinen Datenbankserver hast, kannst du dir mal das Projekt XAMPP oder eins der vielen anderen Datenbankprojekte anschauen.
 

L-ectron-X

Gesperrter Benutzer
Ja. Aber das ginge auch bspw. mit HSQLDB, H2, ProstgreSQL etc.
H2 ist 'ne feine Sache. Also wenn du XAMPP (Apache, MySQL, PHP und Perl) nicht brauchst, sondern eine kleine schnelle und in Java geschriebene Datenbank suchst, kannst du dir mal H2 ansehen.
 

JanHH

Top Contributor
Einem absoluten Anfänger würde ich allerdings zu HSQLDB raten, allein deshalb, weil es wohl die in Beispielen und Tutorials meistverwendete Datenbank ist.
 

Meldanor

Bekanntes Mitglied
Eine Datenbank hört sich hochtrapender an, als es ist. Als ich das Datenbanken das erste Mal hörte, dachte ich an Servercluster und riesige Datenstrukturen.
Aber Datenbank sind sehr sehr simple Konstrukte. Also jedenfalls die gut strukturierten ^^
Mit MySQL kannst du einen guten Einstieg machen, da es dafür hundert Anfängertutorials gibt und auch ein Haufen Tools.
Hier ist der Link zum Download des MySQL Server Packs.
MySQL :: MySQL 5.1 GA
Ein Nachschlagewerk und auch teilweise ein Tutorial ist das MySQL 5.1 Referenzbuch, wo ALLE Befehle erläutert werden. Es ist sozusagen die API für MySQL
MySQL :: MySQL 5.1 Referenzhandbuch :: 3 Einführung in MySQL: ein MySQL-Tutorial

Ich hab gelernt mich mit MySQL zurecht zu finden mit diversen Tools.
Wenn du erstmal "nur" eine Datenbank aufstellen willst und auch bei mySQL bleiben willst, kann du dir Workbench ( MySQL :: MySQL Workbench ) runterladen und installieren.
Für Verwalten hab nen Tool Namens NaviCat (Navicat - MySQL Overview - Navicat Oracle, MySQL database Admin Tool - Navicat Oracle, MySQL Admin Tool - the World's Best Oracle, MySQL GUI for Windows, Linux & Mac OS X - Download Now! Support Access to MySQL, Excel to MySQL, MySQL editor, MySQL ad). Dort hast du ein GUI, womit du dich erstmal mit allgemeinen Sachen zurecht finden kannst. Da gibt es auch eine Konsole, womit du die Befehle überhaupt erstmal lernen kannst.
Ich hab mich sozusagen von der Visualisierung über den harten Code vorgearbeitet und kam ganz gut klar

PS: Nein, ich bin kein Mitarbeiter bei MySQL ^^
 
M

MartinDD

Gast
Hallo liebe Leute,

ähnlich wie Lexi darf ich mich für in kleines Projekt ein wenig mit der Erstellung einer Datenbank auseinandersetzen. Allerdings will ich die Datenbank nur nach Einlesen eines Excel-Files erstellen und dann solange damit arbeiten, bis das Programm beendet wird. Es muss also nichts weiter gespeichert werden. Beim nächsten Start wird halt wieder die Excel-Datei eingelesen.

Das Einlesen der Exceldatei klappt mit der JExcelAPI auch sehr gut. Nur habe ich keinen wirklichen Plan wie ich jetzt die Daten aus der Tabelle sinnvoll in die Datenbank bekomme. Nach ein wenig recherechieren hier im Forum favorisiere ich die H2 Database Engine. Hat vielleicht einer von euch einen Link zu einem Beispiel oder einer kurzen Anleitung wie ich meine Daten in die Datenbank bekomme ?

Vielen Dank schonmal und viele Grüße

Martin
 
G

Gast2

Gast
Auf der H2 Seite gibts doch gute Tutorials, hast du dir die schon angeschaut?
 
M

MartinDD

Gast
Hallo,

reingeguckt habe ich, allerdings habe ich den Wald vor lauter Bäumen nicht gesehen und für meinen einfachen Fall kein passendes Beispiel gefunden.
Ich habe so auf die schnelle nur Tutorials gefunden, die eine externe, auf einem Datenbankserver liegende DB nutzen, nichts jedoch wie ich intern in meinem Projekt eine anlege.

Kennt jemand dazu eine gute Quelle ?
 

AlexSpritze

Bekanntes Mitglied
Allerdings will ich die Datenbank nur nach Einlesen eines Excel-Files erstellen und dann solange damit arbeiten, bis das Programm beendet wird. Es muss also nichts weiter gespeichert werden. Beim nächsten Start wird halt wieder die Excel-Datei eingelesen.

Wenn die Excel-Datei immer wieder neu eingelesen wird, brauchst du doch eigentlich keine Datenbank, oder?

Oder willst du die Änderungen in der Excel-Datei aufzeichnen? Um die Daten aus der *.xls in die DB zu bekommen, musst du dir zunächst überlegen, wie die Daten in der DB abgebildet werden sollen. Prinzipiell hast du dort auch eine (oder auch mehrere) beliebig große Tabelle, allerdings müssen die Datentypen für jede Spalte explizit angegeben werden. Hast du da schon Erfahrung mit SQL?
 
G

Gast2

Gast
Ich habe so auf die schnelle nur Tutorials gefunden, die eine externe, auf einem Datenbankserver liegende DB nutzen, nichts jedoch wie ich intern in meinem Projekt eine anlege.
Der Unterschied zu ner in-memory db ist marginal, du musst lediglich den Pfad zur DB anpassen. Alles weitere ist normaler jdbc/sql kram.

Link:
Features
 
M

MartinDD

Gast
Danke erstmal euch beiden,

prinzipiell habe ich ein Excel-File mit einer festen Struktur. Darin sind verschiedene Modelle mit ihren unterschiedlichen Eigenschaften und Möglichkeiten festgehalten. Was ich jetzt in Java machen möchte ist, effektiv in dem excel file zu suchen. Das heißt ich habe eine Eingabemaske in denen ich meine gewünschten Eigenschaften und Features der Modelle eingebe und will jetzt in der Exceldatei suchen, welche Modelle alle meine Anforderungen erfüllen.

Leider habe ich mit Datenbanken bis jetzt noch garnichts zu tun gehabt, sodass auch jdbc und sql zur Zeit noch böhmische Dörfer für mich sind.
 
G

Gast2

Gast
Einfach mal bei google nach jdbc tutorials suchen, die gibts wie sand am meer :)
 
M

MartinDD

Gast
Hallo,

also das Grundgerüst habe ich jetzt glaube ich. Mein Problem ist jetzt noch, wie ich die Daten aus meinem Excel-File in die Datenbank reinbekomme. Ich habe zwar Lösungen gefunden (Read data from Excel worksheet - Real's Java How-to oder jGuru: How can I connect to an Excel spreadsheet file using jdbc?) jedoch kann man doch den Umweg über ODBC auch umgehen oder ?

Die Exceldatei hole ich mir in meiner read-Methode direkt aus einem FileDialog. Was muss ich denn jetzt noch tun um die Daten in die Datenbank zu bekommen ? Das Tabellenblatt auf das ich zugreifen moechte heißt uebrigens "Uebersicht_Java".

Java:
public void read(){
        FileFilter[] filter =  {new ExcelFileFilter()};
        LFTFileDialog openDialog = new LFTFileDialog("OpenExcelFileDialog",LFTFileDialog.OPEN_DIALOG,filter);

        if (openDialog.getFile() != null){
            try {
                Workbook wb = Workbook.getWorkbook(openDialog.getFile());
                if (wb != null){
                    Sheet sheet = wb.getSheet("Uebersicht_Java");

                    try {
                        // Treiber laden
                        // Class c = Class.forName("org.h2.Driver");
                        Class.forName("org.h2.Driver");
                        // Verbindung erstellen
                        conn_ = DriverManager.getConnection("jdbc:h2:mem", "sa", "");
                        System.out.println("Get connection");
                        // Statement-Objekt definieren
                        state_ = conn_.createStatement();
                        // Datenbank einfügen

                        //String sql = "select * from [" + "Uebersicht_Java" + "$]";

                        //ResultSet rs = state_.executeQuery(sql);
                        
                        state_.close();
                        conn_.close();
                    } catch (SQLException ex) {
                        JOptionPane.showMessageDialog(this, "Fehler beim Öffnen der Datenbank!\n" + ex.getMessage(), "Fehler", JOptionPane.ERROR_MESSAGE);
                    } catch (ClassNotFoundException ex) {
                        JOptionPane.showMessageDialog(this, "Fehler beim Öffnen der Datenbank!\n" + ex.getMessage(), "Fehler", JOptionPane.ERROR_MESSAGE);
                    }
                }
            } catch (IOException ex) {
                JOptionPane.showMessageDialog(this, "Fehler beim Öffnen!\n" + ex.getMessage(), "Fehler", JOptionPane.ERROR_MESSAGE);
            } catch (BiffException ex) {
                JOptionPane.showMessageDialog(this, "Fehler beim Öffnen!\n" + ex.getMessage(), "Fehler", JOptionPane.ERROR_MESSAGE);
            }

        }
    }
 

AlexSpritze

Bekanntes Mitglied
Wäre interessant zu wissen wie die Daten in deinem xls aussehen. Wenn es sowas wäre:

Code:
Name1 Zahl1 Ort1
Name2 Zahl2 Ort2
usw.

müsstest du vor dem ersten Gebrauch der Tabelle deren Struktur anlegen, das heißt sowas wie (in Pseudocode :D):

SQL:
CREATE TABLE Uebersicht(
id INTEGER PRIMARY_KEY,
name VARCHAR(255),
zahl NUMBER,
ort VARCHAR(255)
);

Und dann hättest du eine Struktur und könntest da die Zeilen aus deiner Exceltabelle einfügen:

SQL:
INSERT INTO Uebersicht (name, zahl, ort) VALUES ('Name1', Zahl1, 'Ort1');

... um dir zumindest mal grob die Richtung zu zeigen ... ;) Ich hoffe ich habe nichts übersehen.

PS: Also vor dem Gebrauch der Datenbank musst du die Struktur definieren, das ist anders als bei Excel, wo in jeder Zeile irgendwas stehen kann.
 

z-mon

Bekanntes Mitglied
Hallo,

reingeguckt habe ich, allerdings habe ich den Wald vor lauter Bäumen nicht gesehen und für meinen einfachen Fall kein passendes Beispiel gefunden.
Ich habe so auf die schnelle nur Tutorials gefunden, die eine externe, auf einem Datenbankserver liegende DB nutzen, nichts jedoch wie ich intern in meinem Projekt eine anlege.

Kennt jemand dazu eine gute Quelle ?

Hallo Martin,

auf meinem Blog findest du hilfreiche Tutorials die du ohne weiteres nachvollziehen solltest:
- Java HSQLDB (HyperSQL) Tutorial
- Java MySQL (JDBC) Tutorial

Viel Spaß :)
 

MartinDD

Mitglied
Vielen dank euch beiden,

meine Tabelle sieht in etwa folgendermaßen aus:

[head]Version|Name|Eigenschaft_1|Eigenschaft_2|Eigenschaft_3|Eigenschaft_4|...
V1|Modell1|Y|Y||Y
V1|Modell2||Y||Y
V1|Modell3|Y|Y|Y
V2|Modell1|Y||Y|
V2|Modell2|Y||
V2|Modell3|Y|Y|Y

In den ersten Spalten stehen Strings und in den folgenden quasi boolsche Werte. Hat ein Modell die Eigenschaft steht in der Tabelle ein "Y", hat es diese nicht ist die Spalte leer.
Erkennt H2 bzw SQL die leeren Spalten? Ist es sinnvoll die "boolschen" Werte als CHAR in die SQL-Table zu schreiben oder gibt es da eine alternative richtung boolscher Operator (hier Datentypen in SQL steht etwas von einem bit-Datentyp, der würde mir ja hier reichen)?
 
Zuletzt bearbeitet von einem Moderator:

AlexSpritze

Bekanntes Mitglied
Ein richtiger Boolean wie du ihn aus Java kennst, ist mir bisher noch nicht bei SQL über den Weg gelaufen, zumindest im Standard gibt es den nicht, denke ich. Darum einfach über char oder bit abbilden.

Leere Spalten, bzw. leere Zellen darin, wären einfach NULL, das unterstützt SQL auch, wie in Java, du kannst bei der Definition der Tabellenstrutkur aber konkret sagen, ob die Spalte NULL enthalten darf oder nicht.

Entweder du bildest deine obige Tabelle einfach 1:1 in SQL ab (was vielleicht nicht so geschickt ist) oder du erstellst eine Tabelle für deine Modelle und pro Eigenschaft eine weitere Tabelle, in der entweder der Name und die Version des Modells vermerkt ist, die diese Eigenschaft haben, oder besser, in der die IDs der Modelle stehen, die diese Eigenschaft haben.

Irgendwie so in Pseudo-SQL
SQL:
CREATE TABLE MODELL(
id INTEGER PRIMARY KEY,
name VARCHAR(255) NOT NULL,
version INTEGER NOT NULL
);

CREATE TABLE EIGENSCHAFT1(
modell_id INTEGER FOREIGN KEY [hier dann irgendwas mit references modell.id damit hier nur ids stehen können, die auch in der Tabelle MODELL sind]
);

Das erstmal mein bescheidener Beitrag zu deinen Fragen ;)
 

MartinDD

Mitglied
Hallo Alex,

danke für die Hilfe. Außer der Übersichtlichkeit, welchen Vorteil hat denn die Unterteilung in Tabellen pro Eigenschaft? Kann ich trotz dieser Einteilung dann weiterhin über alle Eigenschaften suchen wenn ich ein passendes Modell finden will ?
 

AlexSpritze

Bekanntes Mitglied
Wenn ich mich recht erinnere hat diese Aufteilung mit der Normalisierung einer Datenbank zu tun. Wenn du besonders viele Modelle und/oder Versionen hast, macht es vielleicht Sinn, das Vorhandensein einer Eigenschaft nur für die Objekte abzuspeichern, die es haben. Implizit, wo es fehlt, ist es nicht gespeichert.

Du kannst auch weiterhin über alle Eigenschaften suchen: (ungetestet)

SQL:
SELECT m.id, m.version, m.name
FROM modell m
WHERE m.id IN (SELECT modell_id FROM eigenschaft1) AND
       m.id NOT IN (SELECT modell_id FROM eigenschaft2);

Gibt dir alle Modell, die Eigenschaft1 haben und nicht Eigenschaft2 (nach dem Datenschema aus meinem vorherigen Post). Alle Daten sind weiterhin da, und können bei Bedarf wieder zur miteinander verschraubt werden.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
torresbig MySQL hibernate - could not resolve entity class ... (Datenbank Anfänger) Datenbankprogrammierung 19
G Anfänger: Welche Datenbank ist sinnvoll? Datenbankprogrammierung 11
Baerdoc Empfehlungen zur Auswahl Datenbank Datenbankprogrammierung 6
M Meine Datenbank lässt sich mit meiner Methode nicht ändern Datenbankprogrammierung 1
I SaaS Applikation: pro Kunde eine Datenbank / Schema oder eine DB für alle Kunden? Datenbankprogrammierung 76
T SQL-Statement Datenbank nach SQL Statement schließen? Datenbankprogrammierung 7
M Datenbank Zugraff nach Umwandlung in .jar-Datei nicht mehr möglich Datenbankprogrammierung 4
Auf MySql Datenbank zugreifen funktioniert nicht Datenbankprogrammierung 8
MongoDB-Datenbank in Androidstudio einbinden Datenbankprogrammierung 1
thor_norsk Datenbank: Apache Derby Datenbankprogrammierung 6
B SQlite Datenbank, trotz Statements wurden nicht alle Zeilen erzeugt? Datenbankprogrammierung 35
M Datenbank mit REST API Datenbankprogrammierung 66
M Entfernte Datenbank Datenbankprogrammierung 11
T Datenbank: Tabelle erstellen bei Web-Applikation Datenbankprogrammierung 4
D SQLite Datenbank in Android Studio (Java) durchsuchen Datenbankprogrammierung 3
M MySQL Datenbank in Array Datenbankprogrammierung 2
S Den letzten Eintrag aus Datenbank ziehen (Oracle SQL Dev.) Datenbankprogrammierung 14
N Datenbank abfragen nach bestimmten Wort Datenbankprogrammierung 7
Beginner22 Zugriff auf Datenbank aus Java über mariadb Datenbankprogrammierung 3
ma095 value NULL- Datenbank Postgresql Spring - intellij community Datenbankprogrammierung 0
raptorrs Plötzlich keine Verbindung zur Datenbank mehr möglich Datenbankprogrammierung 14
Davee SQLite SQLite Datenbank lässt sich nicht auf anderen PCs öffnen Datenbankprogrammierung 8
P Datenbank Tool - besser als oracle SQL Developer gesucht mit effizinte Verbindungsverwaltung Datenbankprogrammierung 2
X JPA (EclipseLink) und Oracle Datenbank Datenbankprogrammierung 2
T Datenbank auf einer Webseite aus einer Exceltabelle erstellen Datenbankprogrammierung 5
L SQL Datenbank Datenbankprogrammierung 7
L SQL Datenbank INSERT INTO Datenbankprogrammierung 6
L SQL Datenbank Tabelle insert Datenbankprogrammierung 7
L SQL Datenbank Tabelle erstellen Datenbankprogrammierung 6
nonickatall MySQL Auf neue Datensätze in einer Datenbank reagieren Datenbankprogrammierung 5
W MYSQL Datenbank Login Android Datenbankprogrammierung 3
anton1 Online Datenbank Datenbankprogrammierung 7
krgewb H2-Datenbank öffnen Datenbankprogrammierung 8
J Datenbank abfragen Datenbankprogrammierung 6
P Verbindung zu einer Access Datenbank per Eclipse oder Intellij Datenbankprogrammierung 0
O SQL Abfragen mit Mini Datenbank Datenbankprogrammierung 12
Z Datenbank Choicebox wird nicht befüllt Datenbankprogrammierung 15
S Suche In SQL Datenbank mit array Datenbankprogrammierung 6
P Enum in der Datenbank Datenbankprogrammierung 1
Z SQL- Datenbank 1.PK zu 2.FK Datenbankprogrammierung 3
E netbeans - jsp Daten in Datenbank hinzufügen Datenbankprogrammierung 2
bueseb84 Spring Boot : Update Mysql Datenbank Datenbankprogrammierung 1
Avalon Attribute werden mit Unterstrich in eine MySQL Datenbank eingetragen Datenbankprogrammierung 10
MiMa wo Datenbank verbinden/trennen? Datenbankprogrammierung 1
H MySQL Verbindung Datenbank und Eclipse (Java) Datenbankprogrammierung 5
DeltaPilot12 Datenbank connect Funktion Datenbankprogrammierung 7
J Oracle Datenbank-Tabelle per Combobox (oder ähnliches) auswählen Datenbankprogrammierung 3
N SQL Datenbank Spalte in Java Array Datenbankprogrammierung 2
J JAR-Datei und Datenbank Datenbankprogrammierung 8
Bluedaishi Datenbank Abfrage Datenbankprogrammierung 36
Kirby.exe Zeile aus der Datenbank holen wenn ein match besteht Datenbankprogrammierung 7
Kirby.exe Es werden keine Einträge in der Datenbank gemacht Datenbankprogrammierung 23
C Datenbank anlegen und über eine Website mit Daten füllen? Datenbankprogrammierung 25
J Welche Kriterien haben Einfluss auf die Geschwindigkeit einer Datenbank ? Datenbankprogrammierung 4
B Frage zu Datenbank Design bei Events (ZenDesk) Datenbankprogrammierung 1
M SQLite Datenbank mit SQLite Datenbankprogrammierung 7
C String in Datenbank einfügen Datenbankprogrammierung 11
C Keinen Zugrift auf Datenbank Datenbankprogrammierung 2
C Datenbank zugreifen Datenbankprogrammierung 10
L Auf Strato Datenbank zugreifen Datenbankprogrammierung 7
H Fehler bei getConnection zu MySQL Datenbank Datenbankprogrammierung 18
G Datenbank Statement Datenbankprogrammierung 22
M Datenbank editierbach machen in JTable Datenbankprogrammierung 13
S Datenbank MySQL und Java Datenbankprogrammierung 8
M H2 Verbindung zur Datenbank komplett schließen Datenbankprogrammierung 11
J Aufbau meiner Datenbank/Tabelle - Verbessern? So lassen? Datenbankprogrammierung 39
J Nur CRUD über Datenbank Klasse, oder auch mehr ? Datenbankprogrammierung 2
Dimax MySQL Maximale Datenlänge für eine Spalte einer Datenbank in java ermitteln Datenbankprogrammierung 15
L Appabsturz mit Datenbank Datenbankprogrammierung 4
J Zahlungseingänge von mehreren Kunden wie am besten abbilden in der Datenbank ? Datenbankprogrammierung 8
L Datenbank sichern Datenbankprogrammierung 8
S Daten von SQLite Datenbank nutzen Datenbankprogrammierung 5
J Datenbank VPS Server Datenbankprogrammierung 3
H MySQL MySQL - Keine Verbindung zur Datenbank?! Datenbankprogrammierung 4
NIckbrick MySQL Befehle aus Datenbank auslesen Datenbankprogrammierung 21
S Datenbank/Java true/false Datenbankprogrammierung 8
J JUNIT und CRUD-Datenbank Datenbankprogrammierung 4
F Datenbank/Datenabgleich/Wiederholungsabfrage Datenbankprogrammierung 12
@SupressWarnings() Eure bevorzugte Datenbank-Library Datenbankprogrammierung 9
C datenbank verbindung config Datenbankprogrammierung 23
L MySQL Android zu externer MySQL Datenbank verbinden Datenbankprogrammierung 5
M Datenbank vor unerlaubtem Zugriff durch Benutzer schützen Datenbankprogrammierung 3
U MySQL Aus Servlet in Datenbank schreiben Datenbankprogrammierung 4
H Datenbank Export mit Java Datenbankprogrammierung 3
P Daten in eine mySQL Datenbank einfügen Datenbankprogrammierung 4
S SQL-Statement Datenbank Zeitbereich durchsuchen Datenbankprogrammierung 2
L Messenger App - Wie am besten auf Datenbank zugreifen? Datenbankprogrammierung 4
H MySQL Datenbank auf Xampp nimmt keine Mediumblob an. Datenbankprogrammierung 0
D Datenbank Abfrage Datenbankprogrammierung 7
H MySQL Benutzer Login System mit Datenbank Informationen (Abfrage zu User ist auf DB gesichert) Datenbankprogrammierung 42
L Oracle Datenbank über Java aufrufen Datenbankprogrammierung 29
DaCrazyJavaExpert Derby/JavaDB Unfindbarer Fehler im Datenbank-Code Datenbankprogrammierung 87
DaCrazyJavaExpert Derby/JavaDB Wert einer Variable in der Datenbank direkt auf 1 setzten. Datenbankprogrammierung 71
W MySQL Ausgabe von Datenbank in Java-App Datenbankprogrammierung 6
M portable Datenbank Datenbankprogrammierung 2
S Name aus der Datenbank bekommen Datenbankprogrammierung 2
K Eclipse: JBoss Hibernate Tool: Kein Zugriff auf Datenbank Datenbankprogrammierung 5
MaxG. Datenbank werte vergleichen Datenbankprogrammierung 5
MaxG. Access Datenbank Datenbankprogrammierung 48
@SupressWarnings() HSQLDB Datenbank für mein Dorfbauspiel "Time of Kings" Datenbankprogrammierung 6

Ähnliche Java Themen


Oben