Java & MySQL? - So geht's!



  • Hallo, habe hier etwas für die FAQ 🙂

    Ich habe hier schon sehr oft Fragen zu Java und MySQL gehört. Deshalb habe ich euch ein kleines Programmbeispiel zusammengeschustert, welches euch die grundlegenden Funktionen zeigen soll. Zu allererst benötigt ihr aber einen MySQL Treiber. Diesen findet ihr hier: http://www.mysql.com/downloads/api-jdbc.html . Meine im Programm verwendete Treiberversion musste ich erst noch entpacken, bevor ich sie einbinden konnte. Schaut einfach kurz in die Doku auf der MySQL-Homepage. Hier ist nun der Code, bestehend aus den Klassen "Main" und "Database":

    Datei: Main.java

    /**
     * Dies ist die Main Klasse. Sie erzeugt ein Objekt der Klasse Datenbank und
     * ruft alle Methoden dieser Klasse auf.
     */
    public class Main
    {
    
    /**
     * Der Konstruktor hier findet der Testvorgang der Database-Klasse statt
     */
    public Main()
    {
      Database db = new Database();
      db.openConnection("192.168.0.2:3306/test", "stefan", "vivitron");
      db.createTables();
      db.insertData("Heinz", 27, "hugo@...");
      db.insertData("Klaus", 67, "karl@...");
      db.insertData("Franz", 37, "franz@...");
      db.insertData("Herbert", 87, "herbert@...");
    
      db.printAllValues();
      System.out.println("-------------------------------------------------------");
      db.printValueAt(2);
      System.out.println("-------------------------------------------------------");
    
      db.removeEntryAt(2);
      db.printAllValues();
    
      db.removeTables();
      db.closeConnection();
    }
    
    /**
     * Die main-Methode ruft den Konstruktor der Hauptklasse auf
     * @param args Es muss nichts übergeben werden.
     */
    public static void main(String[] args)
    {
      new Main();
    }
    
    }//class
    

    Datei: Database.java

    /**
     * Die Database-Klasse enthält Methoden für den Verbindungsaufbau,
     * Verbindungsabbau, zur Erzeugung einer Tabelle in der angegebenen Datenbank,
     * Löschen eines bestimmten Eintrags und Ausgabe aller Einträge, bzw eines
     * bestimmten Eintrags.
     */
    public class Database
    {
    
    // sobald eine Verbindung besteht ist con != null
    private Connection con;
    
    // Die Spaltennamen und der Name der angelegten Tabelle
    private final String TABLE_NAME = "addresses";
    private final String COLOUMN_NAME = "name";
    private final String COLOUMN_AGE = "age";
    private final String COLOUMN_MAIL = "mail";
    private final String COLOUMN_ID = "tableID";
    
    /**
     * Der Konstruktor lädt den MySQL-Treiber
     */
    public Database()
    {
      try
      {
        Class.forName("org.gjt.mm.mysql.Driver");
      }
      catch(ClassNotFoundException cnfe)
      {
        System.out.println("Treiber kann nicht geladen werden: "+cnfe.getMessage());
      }
    }
    
    /**
     * Diese Funktion öffnet eine Verbindung zur Datenbank. Beispiel für die
     * Übergabe der enthaltenden Drivermanager.getConnection-Methode:
     * --> "jdbc:mysql://localhost:3306/myDatabase","DAU","DAU" <--
     * @param dbName Remotename und Datenbankname
     * @param user Benutzername
     * @param passwd Passwort
     */
    public void openConnection(String dbName, String user, String passwd)
    {
      try
      {
        con = DriverManager.getConnection("jdbc:mysql://" + dbName, user, passwd);
      }
      catch(SQLException sqle)
      {
        System.out.println("Verbindung ist fehlgeschlagen: " + sqle.getMessage());
      }
    }
    
    /**
     * Schließt die Verbindung zum Remote
     */
    public void closeConnection()
    {
      if(con != null)
      {
        try
        {
          con.close();
        }
        catch(SQLException sqle)
        {
          System.out.print(sqle.getMessage());
        }
      }
    }
    
    /**
     * Erstellt die Datenbanktabelle
     */
    public void createTables()
    {
      final String CREATE_DATABASE = "CREATE TABLE " + TABLE_NAME + "(" +
                                     COLOUMN_ID + " INT NOT NULL AUTO_INCREMENT, " +
                                     COLOUMN_NAME + " VARCHAR(20) NOT NULL, " +
                                     COLOUMN_AGE + " TINYINT NOT NULL, " +
                                     COLOUMN_MAIL + " VARCHAR(20) NOT NULL, " +
                                     "PRIMARY KEY (" + COLOUMN_ID + ") )";
    
      if(con != null)
      {
        try
        {
          Statement stat = con.createStatement();
          stat.executeQuery(CREATE_DATABASE);
          stat.close();
        }
        catch(SQLException sqle)
        {
          System.out.println(sqle.getMessage());
        }
      }
    }
    
    /**
     * Fügt einen Datensatz in die Tabelle ein
     * @param name Name
     * @param age Alter
     * @param mail Mail-Adresse
     */
    public void insertData(String name, int age, String mail)
    {
      final String INSERT = "INSERT INTO " + TABLE_NAME + "(" + COLOUMN_NAME + ", "+
                            COLOUMN_AGE + ", " + COLOUMN_MAIL + ") " +
                            "VALUES ('" + name + "', " + age + ", '" + mail + "')";
    
      if(con != null)
      {
        try
        {
          Statement stat = con.createStatement();
          stat.executeUpdate(INSERT);
          stat.close();
        }
        catch(SQLException sqle)
        {
          System.out.println(sqle.getMessage());
        }
      }
    }
    
    /**
     * Löscht einen bestimmten Eintrag aus der Datenbanktabelle
     * @param id Die ID des zu löschenden Eintrags
     */
    public void removeEntryAt(int id)
    {
      final String DELETE = "DELETE FROM " + TABLE_NAME + " WHERE " +
                            COLOUMN_ID + "=" + id;
    
      if(con != null)
      {
        try
        {
          Statement stat = con.createStatement();
          stat.executeUpdate(DELETE);
          stat.close();
        }
        catch(SQLException sqle)
        {
          System.out.println(sqle.getMessage());
        }
      }
    }
    
    /**
     * Gibt die Werte eines bestimmten Eintrags aus
     * @param id Die ID des bestimmten Eintrags
     */
    public void printValueAt(int id)
    {
      final String GET_ENTRY = "SELECT * FROM " + TABLE_NAME + " WHERE " + COLOUMN_ID + "=" + id;
    
      if(con != null)
      {
        try
        {
          Statement stat = con.createStatement();
          ResultSet rs = stat.executeQuery(GET_ENTRY);
          while(rs.next())
            System.out.println("Name: " + rs.getString(COLOUMN_NAME) +
                               "Alter: " + rs.getString(COLOUMN_AGE) +
                               "Mail: " + rs.getString(COLOUMN_MAIL));
          rs.close();
          stat.close();
        }
        catch(SQLException sqle)
        {
          System.out.println(sqle.getMessage());
        }
      }
    }
    
    public void printAllValues()
    {
      final String GET_ENTRY = "SELECT * FROM " + TABLE_NAME;
    
      if(con != null)
      {
        try
        {
          Statement stat = con.createStatement();
          ResultSet rs = stat.executeQuery(GET_ENTRY);
          while(rs.next())
            System.out.println("ID: " + rs.getString(COLOUMN_ID) +
                               "\tName: " + rs.getString(COLOUMN_NAME) +
                               "\tAlter: " + rs.getString(COLOUMN_AGE) +
                               "\tMail: " + rs.getString(COLOUMN_MAIL));
          rs.close();
          stat.close();
        }
        catch(SQLException sqle)
        {
          System.out.println(sqle.getMessage());
        }
      }
    }
    
    /**
     * Löscht die in der Datenbank angelegte Tabelle
     */
    public void removeTables ()
    {
      if(con != null)
      {
        try
        {
          Statement stat = con.createStatement();
          ResultSet rs = stat.executeQuery("SHOW TABLES");
          if(rs.next())
            stat.executeQuery("DROP TABLE " + TABLE_NAME);
          stat.close();
        }
        catch(SQLException sqle)
        {
          System.out.println(sqle.getMessage());
        }
      }
    }
    
    }//class
    

    Viele Grüße & viel Spaß
    Stefan

    [ Dieser Beitrag wurde am 10.10.2002 um 01:16 Uhr von Ste.fun editiert. ]


Anmelden zum Antworten