您的位置:

Java实现MySQL数据库操作

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数据库的基本技能。