MySQL是目前最流行的开源关系型数据库,而Java是应用最广泛的编程语言之一。本文将会介绍如何在Java中使用MySQL数据库,包括连接MySQL数据库、执行SQL语句、以及读取结果等基本操作。
一、连接MySQL数据库
在Java中连接MySQL数据库需要使用JDBC驱动程序,在使用JDBC驱动程序之前需要先将其导入到你的Java工程中。通常情况下,我们可以通过在Maven依赖中添加以下内容来导入JDBC驱动程序:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.21</version>
</dependency>
然后,就可以连接MySQL数据库了。代码如下:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DBUtil {
private static String URL = "jdbc:mysql://localhost:3306/test?useSSL=false";
private static String USER = "root";
private static String PASSWORD = "123456";
static {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(URL, USER, PASSWORD);
}
}
在上面的代码中,我们首先定义了MySQL数据库的连接URL、用户名和密码。然后,在静态代码块中加载JDBC驱动程序,最后通过getConnection()方法获取连接。注意,getConnection()方法有可能会抛出SQLException异常,因此我们需要在调用getConnection()方法时进行异常捕获。
二、执行SQL语句
连接成功后,我们就可以执行SQL语句了。在Java中执行SQL语句有两种方式,分别是Statement和PreparedStatement。
1. 使用Statement
Statement是一种普通的SQL语句执行方式,它的执行速度较快,但是在执行动态SQL语句时有一定的局限性。代码如下:
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class StatementDemo {
public static void main(String[] args) throws SQLException {
Connection conn = DBUtil.getConnection();
Statement statement = conn.createStatement();
String sql = "select * from user";
ResultSet rs = statement.executeQuery(sql);
while (rs.next()) {
System.out.println(rs.getInt("id") + " " + rs.getString("name") + " " + rs.getInt("age"));
}
statement.close();
rs.close();
conn.close();
}
}
在上面的代码中,我们首先获取连接和创建Statement对象,然后使用executeQuery()方法执行SQL语句,最后通过ResultSet对象读取查询结果。在使用完Statement对象之后,我们需要手动调用close()方法关闭Statement对象、ResultSet对象和连接,以释放资源。
2. 使用PreparedStatement
PreparedStatement是一种预编译的SQL语句执行方式,它的执行速度相对较慢,但是在执行动态SQL语句时较为灵活。代码如下:
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class PreparedStatementDemo {
public static void main(String[] args) throws SQLException {
Connection conn = DBUtil.getConnection();
String sql = "select * from user where age = ?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, 20);
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
System.out.println(rs.getInt("id") + " " + rs.getString("name"));
}
pstmt.close();
rs.close();
conn.close();
}
}
在上面的代码中,我们首先获取连接和创建PreparedStatement对象,然后使用setXXX()方法设置占位符的值,并且使用executeQuery()方法执行SQL语句,最后通过ResultSet对象读取查询结果。在使用完PreparedStatement对象之后,我们需要手动调用close()方法关闭PreparedStatement对象、ResultSet对象和连接,以释放资源。
三、读取结果
在Java中读取查询结果需要使用ResultSet对象,它可以获取查询结果中的每一行数据,以及每一列数据。代码如下:
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class ResultSetDemo {
public static void main(String[] args) throws SQLException {
Connection conn = DBUtil.getConnection();
Statement statement = conn.createStatement();
String sql = "select * from user";
ResultSet rs = statement.executeQuery(sql);
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
int age = rs.getInt("age");
System.out.println(id + " " + name + " " + age);
}
statement.close();
rs.close();
conn.close();
}
}
在上面的代码中,我们使用while循环遍历ResultSet对象,其中rs.getInt("id")表示获取查询结果中id列的值,rs.getString("name")表示获取查询结果中name列的值,rs.getInt("age")表示获取查询结果中age列的值。
总结
本文介绍了在Java中连接MySQL数据库、执行SQL语句、以及读取结果等基本操作,同时介绍了使用Statement和PreparedStatement两种SQL语句执行方式。通过本文的学习,相信读者已经掌握了在Java中使用MySQL数据库的基本技能。