java如何使用mysql
使用Java连接MySQL数据库
Java通过JDBC(Java Database Connectivity)API与MySQL数据库进行交互。以下是详细步骤和示例代码。
添加MySQL JDBC驱动依赖
在项目中添加MySQL JDBC驱动的依赖。如果使用Maven,在pom.xml中添加以下依赖:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version>
</dependency>
如果手动添加,下载MySQL Connector/J的JAR文件并添加到项目的类路径中。
建立数据库连接
使用DriverManager获取数据库连接。需要提供数据库URL、用户名和密码。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class MySQLConnection {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/your_database";
String username = "your_username";
String password = "your_password";
try {
Connection connection = DriverManager.getConnection(url, username, password);
System.out.println("Connected to the database!");
connection.close();
} catch (SQLException e) {
System.out.println("Connection failed!");
e.printStackTrace();
}
}
}
执行SQL查询
使用Statement或PreparedStatement执行SQL查询。PreparedStatement更安全,能防止SQL注入。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class QueryExample {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/your_database";
String username = "your_username";
String password = "your_password";
try {
Connection connection = DriverManager.getConnection(url, username, password);
String sql = "SELECT * FROM users WHERE id = ?";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setInt(1, 1); // 设置参数
ResultSet resultSet = statement.executeQuery();
while (resultSet.next()) {
System.out.println("User: " + resultSet.getString("name"));
}
resultSet.close();
statement.close();
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
插入、更新和删除数据
使用PreparedStatement执行插入、更新和删除操作。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class InsertExample {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/your_database";
String username = "your_username";
String password = "your_password";
try {
Connection connection = DriverManager.getConnection(url, username, password);
String sql = "INSERT INTO users (name, email) VALUES (?, ?)";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setString(1, "John Doe");
statement.setString(2, "john.doe@example.com");
int rowsInserted = statement.executeUpdate();
System.out.println(rowsInserted + " row(s) inserted.");
statement.close();
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
处理事务
使用Connection对象管理事务,确保数据一致性。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class TransactionExample {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/your_database";
String username = "your_username";
String password = "your_password";
try {
Connection connection = DriverManager.getConnection(url, username, password);
connection.setAutoCommit(false); // 关闭自动提交
String sql1 = "UPDATE accounts SET balance = balance - 100 WHERE id = 1";
String sql2 = "UPDATE accounts SET balance = balance + 100 WHERE id = 2";
PreparedStatement statement1 = connection.prepareStatement(sql1);
PreparedStatement statement2 = connection.prepareStatement(sql2);
statement1.executeUpdate();
statement2.executeUpdate();
connection.commit(); // 提交事务
System.out.println("Transaction completed.");
statement1.close();
statement2.close();
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
使用连接池
为了提高性能,可以使用连接池管理数据库连接。常见的连接池库有HikariCP、Apache DBCP等。
以下是使用HikariCP的示例:
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import java.sql.Connection;
import java.sql.SQLException;
public class ConnectionPoolExample {
public static void main(String[] args) {
HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:mysql://localhost:3306/your_database");
config.setUsername("your_username");
config.setPassword("your_password");
config.setMaximumPoolSize(10);
HikariDataSource dataSource = new HikariDataSource(config);
try {
Connection connection = dataSource.getConnection();
System.out.println("Connection obtained from pool.");
connection.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
dataSource.close();
}
}
}
注意事项
- 确保MySQL服务正在运行,并且数据库和表已创建。
- 使用
PreparedStatement而非Statement以防止SQL注入。 - 及时关闭
Connection、Statement和ResultSet以释放资源。 - 在生产环境中使用连接池以提高性能。





