Advertisement
Guest User

MySQLDatabase.java

a guest
May 16th, 2017
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.64 KB | None | 0 0
  1. package database;
  2.  
  3. import java.sql.Connection;
  4. import java.sql.DriverManager;
  5. import java.sql.PreparedStatement;
  6. import java.sql.ResultSet;
  7. import java.sql.SQLException;
  8. import java.sql.Statement;
  9.  
  10. import data.Kunde;
  11. import data.KundenListe;
  12.  
  13. public class MySQLDatabase {
  14.  
  15.     private final String DBNAME = "velocebello";
  16.     private final String DBURL = "jdbc:mysql://localhost/" + this.DBNAME;
  17.     private final String DBUSER = "root";
  18.     private final String DBPASSWORD = "";
  19.    
  20.     public Connection connect() throws ClassNotFoundException, SQLException {
  21.         // JDBC-Treiber laden
  22.         Class.forName("com.mysql.jdbc.Driver");
  23.         // Verbindung aufbauen
  24.         return DriverManager.getConnection(this.DBURL, this.DBUSER, this.DBPASSWORD);
  25.     }
  26.  
  27.     /**
  28.      * ein neuer Kunde soll mit einem INSERT Befehl eingetragen werden
  29.      * @param k - der Kunde
  30.      * @return true wenn die Aktion erfolgreich war
  31.      */
  32.    
  33.     /**
  34.      * es soll die höchste Kundennummer der Datenbank aus der Kundentabelle
  35.      * zurückgegeben werden
  36.      * @return die höchste Kundennummer
  37.      */
  38.     public int maxKundennummer() {
  39.         int maxKundennummer = 0;
  40.         try {
  41.             // Verbindung aufbauen
  42.             Connection con = this.connect();
  43.             // Zeichenkette für SQL-Befehl erstellen
  44.             String sql = "...";
  45.  
  46.             // Statement erstellen
  47.  
  48.             // SQL-Anweisungen ausführen
  49.             ResultSet rs = stmt.executeQuery(sql);
  50.             // Verbindung schließen
  51.  
  52.             // ResultSet auswerten
  53.             if (rs.next())
  54.                 maxKundennummer = rs.getInt(1);
  55.  
  56.             // Verbindung schließen
  57.  
  58.         } catch (Exception ex) {
  59.             ex.printStackTrace();
  60.         }
  61.         return maxKundennummer;
  62.     }
  63.  
  64.     /**
  65.      * Es soll die komplette Kundenliste zurückgegeben werden, nach Nachnamen, Vornamen sortiert
  66.      * @return sortierte Kundenliste
  67.      */
  68.     public KundenListe getKundenliste() {
  69.         KundenListe kundenliste = new KundenListe();
  70.         try {
  71.             // Parameter für Verbindungsaufbau definieren
  72.  
  73.             // JDBC-Treiber laden
  74.  
  75.             // Verbindung aufbauen
  76.  
  77.             // Zeichenkette für SQL-Befehl erstellen
  78.             String sql = "...";
  79.  
  80.             // Statement erstellen
  81.  
  82.             // SQL-Anweisungen ausführen
  83.             ResultSet rs = stmt.executeQuery(sql);
  84.            
  85.             // Verbindung schließen
  86.  
  87.             // ResultSet auswerten
  88.             while (rs.next()) {
  89.                 Kunde k = new Kunde(rs.getInt("p_kundennummer"), rs.getString("vorname"), rs.getString("nachname"),
  90.                         rs.getString("strasse"), rs.getString("plz"), rs.getString("ort"),
  91.                         rs.getString("telefonnummer"));
  92.                 kundenliste.addKunde(k);
  93.             }
  94.             // Verbindung schließen
  95.            
  96.         } catch (Exception ex) {
  97.             ex.printStackTrace();
  98.         }
  99.         return kundenliste;
  100.     }
  101.  
  102.     // ------------------------ FINGER WEG VON DIESEM TEIL DES QUELLCODES ----------------------------------------------------------
  103.  
  104.     /**
  105.      * Erstellt ggf. eine Datenbank mit Beispieldaten
  106.      * Voraussetzung: MySQL-Datenbank gestartet
  107.      * FINGER WEG VON DIESEM TEIL DES QUELLCODES
  108.      */
  109.     public void setup() {
  110.         try {
  111.             // Parameter für Verbindungsaufbau definieren
  112.             String driver = "com.mysql.jdbc.Driver";
  113.             String url = "jdbc:mysql://localhost/?";
  114.             String user = "root";
  115.             String password = "";
  116.             // JDBC-Treiber laden
  117.             Class.forName(driver);
  118.             // Verbindung aufbauen
  119.             Connection con;
  120.             con = DriverManager.getConnection(url, user, password);
  121.             // SQL-Anweisungen ausführen
  122.             Statement stmt = con.createStatement();
  123.             stmt.executeUpdate("CREATE DATABASE IF NOT EXISTS velocebello;");
  124.             // Verbindung schließen
  125.             con.close();
  126.             url = "jdbc:mysql://localhost/velocebello?";
  127.             // Verbindung aufbauen
  128.             con = DriverManager.getConnection(url, user, password);
  129.             stmt = con.createStatement();
  130.             // Kundentabelle einfügen
  131.             stmt.executeUpdate("CREATE TABLE IF NOT EXISTS TKunden(" + "p_kundennummer INT PRIMARY KEY,"
  132.                     + "vorname VARCHAR(50) NOT NULL," + "nachname VARCHAR(50) NOT NULL," + "strasse VARCHAR(50),"
  133.                     + "plz CHAR(5)," + "ort VARCHAR(30)," + "telefonnummer VARCHAR(25));");
  134.             // prüfen, ob DB bereits existiert und gefüllt ist
  135.             ResultSet rs = stmt.executeQuery("SELECT COUNT(*) FROM TKunden;");
  136.             boolean insert = true;
  137.             if (rs.next())
  138.                 insert = rs.getInt(1) == 0;
  139.             // ggf. Startdatensätze einfügen
  140.             if (insert) {
  141.                 stmt.executeUpdate(
  142.                         "INSERT INTO TKunden VALUES (1,'Jan', 'Ullrich', 'Apothekengasse 14', '63254', 'Regensburg', '0232 258699884'),"
  143.                                 + "(2,'Lance', 'Armstrong', 'Dopingallee 26', '43215', 'Düsseldorf', '0489 2547896'),"
  144.                                 + "(3,'Ries', 'Bjarne', 'Epostraße 5', '16589', 'Prenzlau', '0772 12546663')");
  145.             }
  146.             con.close();
  147.  
  148.         } catch (Exception ex) { // Fehler abfangen
  149.             ex.printStackTrace();// Fehlermeldung ausgeben
  150.         }
  151.     }
  152.  
  153. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement