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:
- Besuchen Siedie MySQL Connector/J-Downloadseite
- Wählen Sie eine Treiberversion aus, die mit Ihrer Java-Version kompatibel ist
- 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
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 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-ServersuseSSL=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
Abfrage ausführen
Verwenden Sie dieexecuteQuery()Methode zum Ausführen einer SELECT-Anweisung:
Beispiel
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
int rowsAffected = statement.executeUpdate(insertSQL);
System.out.println("Rows affected: " + rowsAffected);
PreparedStatement verwenden
PreparedStatement kann SQL-Injection verhindern und die Leistung verbessern:
Beispiel
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
// 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
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
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
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
// 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
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