以下是一个简单的Java代码示例,用于从MySQL数据库中查询图书信息。这个示例包含数据库连接、查询操作和结果处理的完整流程:
library)books),表结构参考:CREATE TABLE books (
id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(100) NOT NULL, -- 书名
author VARCHAR(50) NOT NULL, -- 作者
isbn VARCHAR(20) UNIQUE, -- ISBN号
status INT DEFAULT 1 -- 状态:1-可借阅,0-已借出
);pom.xml中添加):<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.30</version>
</dependency>import java.sql.*;
import java.util.ArrayList;
import java.util.List;
// 图书实体类(对应数据库表结构)
class Book {
private int id;
private String title;
private String author;
private String isbn;
private int status;
// 构造方法
public Book(int id, String title, String author, String isbn, int status) {
this.id = id;
this.title = title;
this.author = author;
this.isbn = isbn;
this.status = status;
}
// toString方法(用于打印图书信息)
@Override
public String toString() {
return "ID: " + id +
", 书名: " + title +
", 作者: " + author +
", ISBN: " + isbn +
", 状态: " + (status == 1 ? "可借阅" : "已借出");
}
}
// 图书查询工具类
public class BookQueryExample {
// 数据库连接信息(请替换为你的实际配置)
private static final String DB_URL = "jdbc:mysql://localhost:3306/library?useSSL=false&serverTimezone=UTC";
private static final String USER = "root"; // 数据库用户名
private static final String PASSWORD = "123456"; // 数据库密码
public static void main(String[] args) {
// 查询所有图书
List<Book> allBooks = queryAllBooks();
System.out.println("=== 所有图书信息 ===");
for (Book book : allBooks) {
System.out.println(book);
}
// 按条件查询(例如查询可借阅的图书)
List<Book> availableBooks = queryBooksByStatus(1);
System.out.println("\n=== 可借阅图书 ===");
for (Book book : availableBooks) {
System.out.println(book);
}
}
/**
* 查询所有图书
*/
public static List<Book> queryAllBooks() {
List<Book> books = new ArrayList<>();
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
// 1. 加载数据库驱动(MySQL 8.0+ 无需显式加载,可省略)
Class.forName("com.mysql.cj.jdbc.Driver");
// 2. 获取数据库连接
conn = DriverManager.getConnection(DB_URL, USER, PASSWORD);
// 3. 编写SQL语句
String sql = "SELECT id, title, author, isbn, status FROM books";
// 4. 创建PreparedStatement(预编译SQL,防止SQL注入)
pstmt = conn.prepareStatement(sql);
// 5. 执行查询,获取结果集
rs = pstmt.executeQuery();
// 6. 处理结果集
while (rs.next()) {
int id = rs.getInt("id");
String title = rs.getString("title");
String author = rs.getString("author");
String isbn = rs.getString("isbn");
int status = rs.getInt("status");
// 将查询结果封装为Book对象
books.add(new Book(id, title, author, isbn, status));
}
} catch (ClassNotFoundException e) {
System.out.println("数据库驱动加载失败:" + e.getMessage());
} catch (SQLException e) {
System.out.println("数据库操作失败:" + e.getMessage());
} finally {
// 7. 关闭资源(顺序:ResultSet -> PreparedStatement -> Connection)
try {
if (rs != null) rs.close();
if (pstmt != null) pstmt.close();
if (conn != null) conn.close();
} catch (SQLException e) {
System.out.println("资源关闭失败:" + e.getMessage());
}
}
return books;
}
/**
* 按状态查询图书(1-可借阅,0-已借出)
*/
public static List<Book> queryBooksByStatus(int status) {
List<Book> books = new ArrayList<>();
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
conn = DriverManager.getConnection(DB_URL, USER, PASSWORD);
String sql = "SELECT id, title, author, isbn, status FROM books WHERE status = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, status); // 设置SQL中的参数(?占位符)
rs = pstmt.executeQuery();
while (rs.next()) {
books.add(new Book(
rs.getInt("id"),
rs.getString("title"),
rs.getString("author"),
rs.getString("isbn"),
rs.getInt("status")
));
}
} catch (SQLException e) {
System.out.println("查询失败:" + e.getMessage());
} finally {
// 关闭资源(同上)
try {
if (rs != null) rs.close();
if (pstmt != null) pstmt.close();
if (conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return books;
}
}books表,属性与表字段一一对应,toString()方法用于格式化输出图书信息。DriverManager.getConnection()获取连接,需要替换DB_URL、USER、PASSWORD为你的数据库实际配置。PreparedStatement预编译SQL,避免SQL注入风险。 executeQuery()执行查询并返回ResultSet结果集。 Book对象,存入集合中。finally块中关闭ResultSet、PreparedStatement、Connection,确保资源释放,避免内存泄漏。queryAllBooks():查询所有图书。 queryBooksByStatus():按状态查询(演示带参数的查询)。main方法,即可看到控制台输出查询结果。原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。