关于Java操作MySQL的方法,需要掌握以下几点:
- 导入数据库驱动程序
- 建立数据库连接
- 创建statement对象,执行SQL语句
- 处理查询结果集
- 关闭各种连接
下面将详细介绍这些步骤以及如何实现它们。
导入数据库驱动程序
在Java中操作MySQL,需要先导入MySQL的JDBC驱动程序。如果你使用的是Maven等依赖管理工具,可以直接在pom.xml中添加如下依赖:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>x.xx.xx</version>
</dependency>
其中x.xx.xx需要替换为具体的版本号。
如果不使用Maven等依赖管理工具,则需要手动下载MySQL的JDBC驱动程序,并将其添加到CLASSPATH中。
建立数据库连接
建立数据库连接的代码如下所示:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DBUtil {
private static final String URL = "jdbc:mysql://localhost:3306/test?serverTimezone=GMT%2B8";
private static final String USER = "root";
private static final String PASSWORD = "root";
public static Connection getConnection() {
Connection conn = null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection(URL, USER, PASSWORD);
} catch (ClassNotFoundException e) {
System.out.println("JDBC驱动程序未找到!");
} catch (SQLException e) {
System.out.println("建立数据库连接失败!");
}
return conn;
}
}
其中,URL是连接MySQL的URL,USER和PASSWORD分别是连接MySQL的用户名和密码。getConnection()方法返回一个Connection对象,用于后续的数据库操作。
创建Statement对象,执行SQL语句
创建Statement对象的代码如下所示:
import java.sql.*;
public class Main {
public static void main(String[] args) {
Connection conn = DBUtil.getConnection();
Statement stmt = null;
ResultSet rs = null;
try {
String query = "SELECT * FROM user WHERE id = 1";
stmt = conn.createStatement();
rs = stmt.executeQuery(query);
while (rs.next()) {
System.out.println(rs.getString("name"));
System.out.println(rs.getInt("age"));
}
} catch (SQLException e) {
System.out.println("执行SQL语句失败!");
} finally {
try {
if (rs != null) rs.close();
if (stmt != null) stmt.close();
if (conn != null) conn.close();
} catch (SQLException e) {
System.out.println("关闭连接失败!");
}
}
}
}
上述代码中,我们使用createStatement()方法创建了一个Statement对象,stmt.executeQuery()方法用于执行查询语句,rs.next()方法用于返回结果集中的下一条记录,rs.getString("name")和rs.getInt("age")用于获取结果集中的数据。
除了使用Statement对象来执行SQL语句外,还可以使用PreparedStatement对象来预编译SQL语句,提高执行效率。
import java.sql.*;
public class Main {
public static void main(String[] args) {
Connection conn = DBUtil.getConnection();
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
String query = "SELECT * FROM user WHERE id = ?";
pstmt = conn.prepareStatement(query);
pstmt.setInt(1, 1);
rs = pstmt.executeQuery();
while (rs.next()) {
System.out.println(rs.getString("name"));
System.out.println(rs.getInt("age"));
}
} catch (SQLException e) {
System.out.println("执行SQL语句失败!");
} finally {
try {
if (rs != null) rs.close();
if (pstmt != null) pstmt.close();
if (conn != null) conn.close();
} catch (SQLException e) {
System.out.println("关闭连接失败!");
}
}
}
}
上述代码中,我们使用prepareStatement()方法创建了一个PreparedStatement对象,setInt(1, 1)方法用于给查询语句中的占位符传参。
处理查询结果集
结果集是一个带有光标的对象,它维护在数据表上的位置。使用结果集的next()方法以顺序方式遍历表格。
关闭各种连接
在捕获到异常或使用完各种连接之后,需要关闭代码中使用的Connection、Statement、ResultSet等连接。务必保证它们的关闭顺序为ResultSet -> Statement -> Connection。
try {
if (rs != null) rs.close();
if (stmt != null) stmt.close();
if (conn != null) conn.close();
} catch (SQLException e) {
System.out.println("关闭连接失败!");
}
接下来给出示例代码清单:
import java.sql.*;
public class Main {
public static void main(String[] args) {
Connection conn = DBUtil.getConnection();
Statement stmt = null;
ResultSet rs = null;
try {
String query = "SELECT * FROM user WHERE id = 1";
stmt = conn.createStatement();
rs = stmt.executeQuery(query);
while (rs.next()) {
System.out.println(rs.getString("name"));
System.out.println(rs.getInt("age"));
}
} catch (SQLException e) {
System.out.println("执行SQL语句失败!");
} finally {
try {
if (rs != null) rs.close();
if (stmt != null) stmt.close();
if (conn != null) conn.close();
} catch (SQLException e) {
System.out.println("关闭连接失败!");
}
}
}
}
import java.sql.*;
public class Main {
public static void main(String[] args) {
Connection conn = DBUtil.getConnection();
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
String query = "SELECT * FROM user WHERE id = ?";
pstmt = conn.prepareStatement(query);
pstmt.setInt(1, 1);
rs = pstmt.executeQuery();
while (rs.next()) {
System.out.println(rs.getString("name"));
System.out.println(rs.getInt("age"));
}
} catch (SQLException e) {
System.out.println("执行SQL语句失败!");
} finally {
try {
if (rs != null) rs.close();
if (pstmt != null) pstmt.close();
if (conn != null) conn.close();
} catch (SQLException e) {
System.out.println("关闭连接失败!");
}
}
}
}
以上为Java操作MySQL的基本方法,供您参考。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java操作Mysql的方法 - Python技术站