Wie erstellt man eine Datenbank?


#1
Hallo,

da ich demnächst eine Ausbildung im IT-Bereich absolvieren und dabei viel mit Datenbanken zu tun haben werde, möchte ich mir dbzgl. im vorhinein schon ein paar Vorkenntnisse aneignen. Noch habe ich null Erfahrung mit Datenbanken, aber ich lerne sehr gerne Neues! ;) Ich habe mich bereits im Internet darüber informiert, aber das war teilweise so veraltet bzw. nicht mehr ganz so aktuell, sodass die Ausführung als blutiger Anfänger sehr komplex und somit nicht möglich war. Damit ich einen guten Start im Bereich "Datenbanken" haben werde, habe ich ein paar Fragen an euch und hoffe, dass ihr mir diese bestmöglich beantworten könnt:

  1. Was brauche ich alles, um Datenbanken erstellen zu können? Ich habe etwas von "mySQL" gelesen, aber hätte dennoch gerne eine aktuelle Schritt für Schritt Anleitung, wie und wo ich das Programm herunterladen und installieren kann. Zudem habe ich noch gesehen, dass man nach der Installation einige Dinge am mySQL-Server usw. konfigurieren muss, aber da habe ich den Durchblick verloren als ich vergeblich versucht habe der Anleitung Folge zu leisten. Kann mir das bitte jemand klar und deutlich erläutern?
  2. Dann zum eigentlichen Thema: Wie erstellt man in mySQL eine Datenbank? Auch hier benötige ich wieder eine Schritt für Schritt Anleitung, da ich mit dem, was ich im Internet finde, gar nichts anfangen kann. Auf wikihow habe ich gelesen, dass man eine Datenbank in mySQL-Shell und in der mySQL-Workbench erstellen kann. Auch hier würde ich mich sehr über eine Schritt für Schritt Anleitung freuen.
  3. Um auf eine Datenbank mittels Java zugreifen zu können, benötigt man einen Connector. Wie und wo man den herunterladen bzw. installieren und in Eclipse einfügen kann, ist mir klar. Wobei eine Frage ungeklärt geblieben ist: Welcher Connector ist der beste und ggf. der einfachste? Das einzige große Problem ist, dass ich nicht wirklich weiß, welche Informationen man im Programmcode implementieren muss, um auf eine Datenbank zugreifen zu können. Hier reicht nur eine kurze Erklärung, sprich keinen eigens erstellten Code oder sowas. :)
Ich hoffe sehr, dass ich euch damit keine Umstände mache, weil man davon genug im Internet finden kann, aber mir persönlich ist das teilweise zu veraltet und nicht ausführlich bzw. einfach genug erklärt.

Vielen Dank für eure Bemühungen! :giggle:

Freundliche Grüße
 

melmager

Erfahrenes Mitglied
#2
also mySql ist eine von vielen Datenbanken die es so gibt. Am besten besorgst du dir aber
Mariadb den offnen Ableger.

1) Installation kommt drauf an auf welchen OS die Datenbank installiert werden soll

Config: Verzeichnisse / Port und eine Systemdb mit User / Passwörter

https://mariadb.com/kb/en/library/getting-installing-and-upgrading-mariadb/

2) da gibt es eigene Sprache > SQL siehe:https://mariadb.com/kb/en/library/basic-sql-statements/
oder allgemeiner
https://www.w3schools.com/sql/

3) den Connector wird vom Datenbankhersteller geliefert
https://downloads.mariadb.org/connector-java/
 
Zuletzt bearbeitet:
#3
also mySql ist eine von vielen Datenbanken die es so gibt. Am besten besorgst du dir aber
Mariadb den offnen Ableger.

1) Installation kommt drauf an auf welchen OS die Datenbank installiert werden soll

Config: Verzeichnisse / Port und eine Systemdb mit User / Passwörter

https://mariadb.com/kb/en/library/getting-installing-and-upgrading-mariadb/

2) da gibt es eigene Sprache > SQL siehe:https://mariadb.com/kb/en/library/basic-sql-statements/
oder allgemeiner
https://www.w3schools.com/sql/

3) den Connector wird vom Datenbankhersteller geliefert
https://downloads.mariadb.org/connector-java/
Vielen Dank!

Hat alles bestens geklappt, nur scheitere ich grade an der Verbindung zwischen Java und der Datenbank. Könntest du mir da weiterhelfen bzgl. Programmcode?
 
#5
Das habe ich als Hilfe genutzt und hier mein Programmcode:

Java:
package datenbank;

import java.sql.*;

public class Datenbank {

    public static void main(String[] args) {
                
        try {
            
            System.out.println("***Treiber laden***");
            Class.forName("org.mariadb.jdbc.Driver").newInstance();
            System.out.println("***Treiber geladen***");
        }
        
        catch(Exception e) {
            
            e.printStackTrace();
            System.out.println("***Der Treiber konnte nicht geladen werden***");
        }
        
        try {
            
            System.out.println("***Verbindung aufbauen***");
            Connection conn = DriverManager.getConnection("jdbc:mariadb://localhost:3306/DB=benutzer_db&user=root&password=meinPasswort");
            System.out.println("***Verbindung aufgebaut***");
            conn.close();
        }
        
        catch(Exception e) {
            
            e.printStackTrace();
            System.out.println("***Die Verbindung konnte nicht aufgebaut werden***");
        }
    }
    
}
Der Treiber kann zwar geladen werden, aber die Verbindung kann leider nicht hergestellt werden. Woran liegt das?
 
#8
Du könntest die Fehlermeldung posten. e.printStackTrace() sollte dir nämlich eine geben.
Hier die Fehlermeldung:

Java:
***Treiber laden***
***Treiber geladen***
***Verbindung aufbauen***
java.sql.SQLInvalidAuthorizationSpecException: Access denied for user 'n-bra'@'localhost' (using password: NO)
    at org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.get(ExceptionMapper.java:173)
    at org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.getException(ExceptionMapper.java:110)
    at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connectWithoutProxy(AbstractConnectProtocol.java:1107)
    at org.mariadb.jdbc.internal.util.Utils.retrieveProxy(Utils.java:502)
    at org.mariadb.jdbc.MariaDbConnection.newConnection(MariaDbConnection.java:155)
    at org.mariadb.jdbc.Driver.connect(Driver.java:86)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at datenbank.Datenbank.main(Datenbank.java:25)
Caused by: java.sql.SQLException: Access denied for user 'n-bra'@'localhost' (using password: NO)
    at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.authentication(AbstractConnectProtocol.java:856)
    at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.handleConnectionPhases(AbstractConnectProtocol.java:777)
    at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connect(AbstractConnectProtocol.java:451)
    at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connectWithoutProxy(AbstractConnectProtocol.java:1103)
    ... 6 more
***Die Verbindung konnte nicht aufgebaut werden***
Ich tippe mal auf Firewall - der Port 3306 müsste freigegeben werden
Den Port habe ich freigegeben, aber es funktioniert immer noch nicht.
 
Zuletzt bearbeitet:
#9
Ich habe das Problem selber erkannt:
Statt die URL, den Usernamen und das Passwort einzeln dem DriverManager zu übergeben, habe ich alle diese Werte in einem einzelnen String übermittelt. Nachdem ich das geändert habe, funktioniert alles:

Java:
package datenbank;

import java.sql.*;

public class Datenbank {

    public static void main(String[] args) {
        
        Connection conn = null;
                
        try {
            
            System.out.println("Der Treiber wird geladen..");
            Class.forName("org.mariadb.jdbc.Driver").newInstance();
            System.out.println("Der Treiber wurde geladen.");
        }
        
        catch(Exception e) {
            
            e.printStackTrace();
            System.out.println("Der Treiber konnte nicht geladen werden!");
        }
        
        try {
            
            System.out.println("Die Verbindung wird aufgebaut..");
            conn = DriverManager.getConnection("jdbc:mariadb://localhost:3306/benutzer_db" ,"root", "meinPasswort");
            System.out.println("Die Verbindung wurde aufgebaut.");
        }
        
        catch(Exception e) {
            
            e.printStackTrace();
            System.out.println("Die Verbindung konnte nicht aufgebaut werden!");
        }
        
        try {
            
            String query = "SELECT * FROM benutzer_tb";
            Statement stmt = conn.createStatement();
            ResultSet rs = stmt.executeQuery(query);
            System.out.println("Die Tabelle konnte abgefragt werden:" + "\n" + "ID, Vorname, Nachname, Alter, Wohnort");
            
            while(rs.next()) {
                
                System.out.println("--------------------------------------");
                System.out.printf("%s, %s, %s, %s, %s%n", rs.getString(1), rs.getString(2), rs.getString(3), rs.getString(4), rs.getString(5));
            }
            conn.close();
        }
        
        catch(Exception e) {
            
            e.printStackTrace();
            System.out.println("Die Tabelle konnte nicht abgefragt werden!");
        }
    }
    
}
Ich bedanke mich bei euch für eure hilfreichen Tipps!

Freundliche Grüße