📅  最后修改于: 2023-12-03 14:51:17.920000             🧑  作者: Mango
MySQL是一种流行的开源关系型数据库管理系统。在Java应用程序中使用MySQL进行持久化数据存储是一种常见的做法。本文将介绍如何在Java程序中使用MySQL - SQL。
在开始编写Java程序之前,需要确保已经安装了MySQL数据库。可以从MySQL官方网站下载并安装MySQL。
Java标准库中没有包含MySQL JDBC驱动程序。因此,需要下载并添加MySQL JDBC驱动程序以实现JDBC API。你可以从以下网址下载最新版本的MySQL JDBC驱动器:
https://dev.mysql.com/downloads/connector/j/
将下载的JDBC驱动器jar文件添加到Java类路径。可以将JDBC驱动器文件复制到Java项目中的lib目录中,并将其从构建路径中添加。
以下是连接到MySQL数据库并查找Sakila数据库中有多少个电影的Java程序示例:
package com.example;
import java.sql.*;
public class App {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/sakila?useSSL=false&serverTimezone=UTC";
String username = "username";
String password = "password";
try (Connection conn = DriverManager.getConnection(url, username, password);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT COUNT(*) FROM film")) {
if (rs.next()) {
int count = rs.getInt(1);
System.out.println("Number of movies in Sakila database: " + count);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
在此示例中,使用DriverManager.getConnection()方法连接到MySQL数据库并获取一个Connection对象。使用该连接对象创建一个Statement对象,并使用该Statement对象来执行查询。使用该ResultSet对象访问查询结果。最后,使用try-with-resources语句关闭所有打开的对象。
在连接字符串中使用以下参数:
可以使用execute()方法执行任何SQL语句,并使用executeQuery()方法执行SELECT语句。以下是执行INSERT语句的Java程序示例:
try (Connection conn = DriverManager.getConnection(url, username, password);
Statement stmt = conn.createStatement()) {
int rowsAffected = stmt.executeUpdate("INSERT INTO film (title, description) VALUES ('Star Wars', 'A legendary movie set in a galaxy far, far away...')");
System.out.println(rowsAffected + " rows affected.");
} catch (SQLException e) {
e.printStackTrace();
}
在此示例中,使用Statement.executeUpdate()方法执行INSERT语句。该方法返回受影响的行数。
可以使用JDBC API管理事务。以下是使用事务执行INSERT语句的Java程序示例:
try (Connection conn = DriverManager.getConnection(url, username, password)) {
conn.setAutoCommit(false);
try (PreparedStatement stmt = conn.prepareStatement("INSERT INTO film (title, description) VALUES (?, ?)")) {
stmt.setString(1, "The Lord of the Rings");
stmt.setString(2, "A journey to save Middle-earth from the dark lord Sauron.");
int rowsAffected = stmt.executeUpdate();
System.out.println(rowsAffected + " rows affected.");
}
conn.commit();
} catch (SQLException e) {
e.printStackTrace();
try {
if (conn != null) {
conn.rollback();
}
} catch (SQLException e1) {
e1.printStackTrace();
}
}
在此示例中,使用Connection.setAutoCommit(false)方法启用事务。使用PreparedStatement对象执行INSERT语句。该语句使用PreparedStatement.setString()方法设置参数。使用Connection.commit()方法提交事务。
在发生任何异常时,使用Connection.rollback()方法回滚事务。请注意,如果回滚事务失败,则可能需要手动回滚。
在Java应用程序中使用MySQL进行持久化数据存储很常见。通过使用上述示例,可以连接到MySQL数据库、执行SQL语句、管理事务等。务必要遵循良好的编码实践来保护代码免受SQL注入攻击。