MySQL Java-Verbindung und -Verwendung

MySQL ist eine der beliebtesten relationalen Open-Source-Datenbanken und Java ist die am häufigsten verwendete Programmiersprache in der Entwicklung von Unternehmensanwendungen. Die Kombination von Java mit MySQL ermöglicht den Aufbau leistungsstarker datengetriebener Anwendungen.

In diesem Artikel wird ausführlich beschrieben, wie Sie in einem Java-Programm eine Verbindung zu einer MySQL-Datenbank herstellen und diese verwenden, einschließlich:

Dieser Artikel stellt die grundlegenden Schritte zum Verbinden mit und Verwenden einer MySQL-Datenbank in Java vor, einschließlich:

  • Laden des JDBC-Treibers
  • Herstellen von Datenbankverbindungen
  • Ausführen von SQL-Abfragen und -Aktualisierungen
  • Verwenden von PreparedStatement zur Vermeidung von SQL-Injection
  • Transaktionsverwaltung
  • Schließen von Ressourcen
  • Best Practices

Vorbereitung

MySQL JDBC-Treiber herunterladen

Java interagiert über die JDBC-Technologie (Java Database Connectivity) mit Datenbanken. Um eine Verbindung zu MySQL herzustellen, müssen Sie den MySQL Connector/J-Treiber herunterladen:

  1. Besuchen Siedie MySQL Connector/J-Downloadseite
  2. Wählen Sie eine Treiberversion aus, die mit Ihrer Java-Version kompatibel ist
  3. Laden Sie die JAR-Datei herunter (z. B. mysql-connector-java-8.0.xx.jar)

Fügen Sie den Treiber zu Ihrem Projekt hinzu

Je nachdem, welches Entwicklungs- oder Build-Tool Sie verwenden (wie etwa Eclipse, IntelliJ IDEA, Maven oder Gradle), fügen Sie die heruntergeladene JAR-Datei zum Classpath Ihres Projekts hinzu.


Datenbankverbindung herstellen

Treiber laden

Im Java-Code müssen Sie zuerst den MySQL-JDBC-Treiber laden:

Beispiel

try {
    Class.forName("com.mysql.cj.jdbc.Driver");
} catch (ClassNotFoundException e) {
    System.out.println("MySQL-JDBC-Treiber nicht gefunden");
    e.printStackTrace();
}

Verbindung erstellen

Verwenden Sie dieDriverManager.getConnection()Methode zum Herstellen einer Verbindung zur Datenbank:

Beispiel

String url = "jdbc:mysql://localhost:3306/your_database_name?useSSL=false&serverTimezone=UTC";
String username = "your_username";
String password = "your_password";

try {
    Connection connection = DriverManager.getConnection(url, username, password);
    System.out.println("Datenbankverbindung erfolgreich!");
} catch (SQLException e) {
    System.out.println("Datenbankverbindung fehlgeschlagen");
    e.printStackTrace();
}

3.2.1 Beschreibung der Verbindungsparameter

  • jdbc:mysql://localhost:3306/: Standardadresse und Port des MySQL-Servers
  • useSSL=false: SSL-Verbindung deaktivieren (Entwicklungsumgebung)
  • serverTimezone=UTC: Server-Zeitzone festlegen, um Zeitzonenprobleme zu vermeiden

SQL-Operationen ausführen

Statement-Objekt erstellen

Das Statement-Objekt wird verwendet, um statische SQL-Anweisungen auszuführen:

Beispiel

Statement statement = connection.createStatement();

Abfrage ausführen

Verwenden Sie dieexecuteQuery()Methode zum Ausführen einer SELECT-Anweisung:

Beispiel

String sql = "SELECT * FROM table_name";
ResultSet resultSet = statement.executeQuery(sql);

while (resultSet.next()) {
    int id = resultSet.getInt("id");
    String name = resultSet.getString("name");
    System.out.println("ID: " + id + ", Name: " + name);
}

Update ausführen

Verwenden Sie dieexecuteUpdate()Methode zum Ausführen einer INSERT-, UPDATE- oder DELETE-Anweisung:

Beispiel

String insertSQL = "INSERT INTO table_name (column1, column2) VALUES ('value1', 'value2')";
int rowsAffected = statement.executeUpdate(insertSQL);
System.out.println("Rows affected: " + rowsAffected);

PreparedStatement verwenden

PreparedStatement kann SQL-Injection verhindern und die Leistung verbessern:

Beispiel

String sql = "INSERT INTO users (name, email) VALUES (?, ?)";
PreparedStatement preparedStatement = connection.prepareStatement(sql);

preparedStatement.setString(1, "Zhang San");
preparedStatement.setString(2, "[email protected]");

int rowsInserted = preparedStatement.executeUpdate();
System.out.println("Rows inserted: " + rowsInserted);

Transaktionsverwaltung

Grundlegende Konzepte

Eine Transaktion ist eine Reihe von SQL-Operationen, die entweder alle erfolgreich sind oder alle fehlschlagen.

Beispiel für Transaktionsoperation

Beispiel

try {
    // Auto-Commit deaktivieren
    connection.setAutoCommit(false);
   
    // Mehrere SQL-Operationen ausführen
    statement.executeUpdate("UPDATE accounts SET balance = balance - 100 WHERE id = 1");
    statement.executeUpdate("UPDATE accounts SET balance = balance + 100 WHERE id = 2");
   
    // Transaktion festschreiben
    connection.commit();
    System.out.println("Transaktion erfolgreich ausgeführt");
} catch (SQLException e) {
    // Bei einem Fehler zurückrollen
    connection.rollback();
    System.out.println("Transaktionsausführung fehlgeschlagen, Rollback durchgeführt");
    e.printStackTrace();
} finally {
    // Auto-Commit wiederherstellen
    connection.setAutoCommit(true);
}

Ressourcen schließen

Warum das Schließen von Ressourcen notwendig ist

Datenbankverbindungen sind begrenzte Ressourcen und müssen nach der Verwendung geschlossen werden, um Ressourcenlecks zu vermeiden.

Wie man Ressourcen korrekt schließt

Beispiel

try {
    if (resultSet != null) resultSet.close();
    if (statement != null) statement.close();
    if (connection != null) connection.close();
} catch (SQLException e) {
    e.printStackTrace();
}

6.3 Verwendung von try-with-resources

Java 7+ kann try-with-resources verwenden, um Ressourcen automatisch zu schließen:

Beispiel

try (Connection conn = DriverManager.getConnection(url, username, password);
     Statement stmt = conn.createStatement();
     ResultSet rs = stmt.executeQuery("SELECT * FROM users")) {
   
    while (rs.next()) {
        // Ergebnis verarbeiten
    }
} catch (SQLException e) {
    e.printStackTrace();
}

Best Practices

Connection-Pool verwenden

In Produktionsumgebungen verwenden Sie einen Connection-Pool (wie HikariCP, c3p0), um Datenbankverbindungen zu verwalten:

Beispiel

// HikariCP-Beispiel
HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:mysql://localhost:3306/your_database");
config.setUsername("username");
config.setPassword("password");

HikariDataSource dataSource = new HikariDataSource(config);
Connection connection = dataSource.getConnection();

Behandlung von Ausnahmen

SQL-Ausnahmen korrekt behandeln und aussagekräftige Fehlermeldungen bereitstellen:

Beispiel

try {
    // Datenbankoperation
} catch (SQLException e) {
    System.err.println("SQL-Fehler: " + e.getMessage());
    System.err.println("SQL-Status: " + e.getSQLState());
    System.err.println("Fehlercode: " + e.getErrorCode());
}

7.3 DAO-Muster verwenden

Kapseln Sie die Datenzugriffslogik in einem Data Access Object (DAO), um die Wartbarkeit des Codes zu verbessern:

Beispiel

public class UserDao {
    private Connection connection;
   
    public UserDao(Connection connection) {
        this.connection = connection;
    }
   
    public User getUserById(int id) throws SQLException {
        String sql = "SELECT * FROM users WHERE id = ?";
        try (PreparedStatement stmt = connection.prepareStatement(sql)) {
            stmt.setInt(1, id);
            ResultSet rs = stmt.executeQuery();
            if (rs.next()) {
                return new User(rs.getInt("id"), rs.getString("name"));
            }
        }
        return null;
    }
}

Wenn Sie diese Grundlagen beherrschen, können Sie beginnen, MySQL-Datenbanken in Ihren Java-Anwendungen zu verwenden. Mit zunehmender Erfahrung können Sie weiterführende Themen wie Connection-Pools, ORM-Frameworks (z. B. Hibernate, MyBatis) und mehr studieren.

Andere Erweiterungen