基于Java与SQL Server的简易图书管理系统开发指南

Miles
Miles
发布时间:2026-10-15| 6人浏览过
原创

本文详解如何利用Java与JDBC技术连接SQL Server数据库,实现图书信息的增删改查。通过具体的代码示例,展示从建立连接到执行CRUD操作的完整流程,并提供安全的资源释放方案,适合初学者快速构建基础数据应用。

系统目标与架构概述

本教程旨在指导用户通过Java控制台程序实现对图书数据的直接管理。系统将支持以下核心业务逻辑:

  • 浏览:获取并输出数据库中所有图书信息。
  • 查找:支持按编号、书名或作者筛选特定图书。
  • 新增:向Book表中插入新的图书记录。
  • 借阅/归还:更新库存数量(num字段),借书减一,还书加一。
  • 删除:根据ID移除指定图书记录。

环境与准备工作

第1步:搭建开发环境

准备以下工具与依赖即可开始编码:

  • IDE:IntelliJ IDEA 或 Eclipse。
  • JDK版本:JDK 13 或以上版本。
  • 数据库:SQL Server 2019+。
  • 驱动包:Microsoft JDBC Driver for SQL Server (例如 8.2.2 版本)。

在IDE中新建Java项目,并将下载的JDBC驱动JAR包添加至项目的库引用中。若使用Maven,需在pom.xml中添加对应依赖。

第2步:配置数据库结构

在SQL Server中创建名为 library 的数据库,并在其中建立 Book 表。建议结构如下:

CREATE TABLE Book (
    id INT PRIMARY KEY,
    name NVARCHAR(50),
    aut NVARCHAR(50),
    num INT
);

确保SQL Server允许混合模式登录,并使用账号 sa 和密码 123456 进行测试连接。实际生产中请修改默认密码以保障安全。

核心功能实现

第1步:建立数据库连接

使用JDBC URL连接字符串配置基础连接参数。虽然代码中演示了动态注册驱动的方式,但在JDK 6+环境中,驱动程序通常会自动加载,不过保留显式注册可作为兼容性练习。

String dbURL = "jdbc:sqlserver://localhost:1433;DatabaseName=Library";
String Name = "sa";
String Paw = "123456";

// 注:实际项目中建议使用try-with-resources自动关闭连接
DriverManager.registerDriver(new com.microsoft.sqlserver.jdbc.SQLServerDriver());
Connection conn = DriverManager.getConnection(dbURL, Name, Paw);

第2步:实现全量浏览功能

通过 Statement 执行 SELECT 语句,并使用 ResultSet 遍历结果集打印图书详情。

try {
    Statement st = conn.createStatement();
    String sql = "SELECT * FROM Book";
    ResultSet rs = st.executeQuery(sql);
    
    while (rs.next()) {
        int id = rs.getInt("id");
        String name = rs.getString("name");
        String aut = rs.getString("aut");
        int num = rs.getInt("num");
        System.out.println(String.format("ID:%d | 名称:%s | 作者:%s | 库存:%d", id, name, aut, num));
    }
} catch (SQLException e) {
    e.printStackTrace();
} finally {
    // 必须执行资源释放
    JDBCUtil.release(conn, st, rs);
}

第3步:构建查找逻辑

提供菜单选项让用户选择查找方式。注意:拼接SQL时存在注入风险,此处仅用于教学演示,生产环境务必使用 PreparedStatement。

int choice = sc.nextInt();
String sql1 = "";
if (choice == 1) {
    System.out.println("请输入书籍编号:");
    int bookNum = sc.nextInt();
    sql1 = "SELECT * FROM Book WHERE id=" + bookNum;
} else if (choice == 2) {
    System.out.println("请输入书籍名称:");
    String bName = sc.next();
    sql1 = "SELECT * FROM Book WHERE name='" + bName + "'";
} else if (choice == 3) {
    System.out.println("请输入书籍作者:");
    String author = sc.next();
    // 修正原文逻辑错误:原稿误用id列匹配作者,应改为aut列
    sql1 = "SELECT * FROM Book WHERE aut='" + author + "'";
}

if (!sql1.isEmpty()) {
    Statement st = conn.createStatement();
    ResultSet rs = st.executeQuery(sql1);
    // 遍历并处理结果... 
    JDBCUtil.release(conn, st, rs);
}

第4步:新增图书记录

接收用户输入的四个字段值,构造 INSERT 语句执行更新操作。

System.out.println("请按顺序输入:编号、书名、作者、数量");
int id = sc.nextInt();
String name = sc.next();
String aut = sc.next();
int num = sc.nextInt();

String insertSql = "INSERT INTO Book VALUES (" + id + ", '" + name + "', '" + aut + "', " + num + ")";
Statement st = conn.createStatement();
st.executeUpdate(insertSql);

第5步:借出与归还操作

借出逻辑:先查询当前库存,确认大于0后,将数量减一并更新数据库。

int bookId = ...; // 获取待借书的ID
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("SELECT num FROM Book WHERE id = " + bookId);
if(rs.next()) {
    int currentNum = rs.getInt("num");
    if (currentNum > 0) {
        st.executeUpdate("UPDATE Book SET num = " + (currentNum - 1) + " WHERE id = " + bookId);
        System.out.println("借书成功");
    } else {
        System.out.println("库存不足");
    }
}
JDBCUtil.release(conn, st, rs);

归还逻辑:同理,查询后将库存数量加1。

第6步:安全释放资源

为了避免内存泄漏和数据库连接耗尽,每次操作结束后都应在 finally 块中释放资源。封装工具类 JDBCUtil.java 供统一调用:

public static void release(Connection conn, Statement st, ResultSet rs) {
    closeRs(rs);
    closeSt(st);
    closeConn(conn);
}

public static void release(Connection conn, Statement st) {
    closeSt(st);
    closeConn(conn);
}

private static void closeRs(ResultSet rs) { /* 关闭逻辑 */ }
private static void closeSt(Statement st) { /* 关闭逻辑 */ }
private static void closeConn(Connection conn) { /* 关闭逻辑 */ }

运行效果验证

完成上述代码编写并正确配置数据库连接后,可在IDEA中运行主程序。初始状态下,SQL Server中的 Book 表数据应如截图所示:

在控制台中输入浏览指令,Java程序会读取数据并格式化打印:

依次测试查找、借书等操作,界面响应应符合逻辑预期:

最后验证归还及删除功能,确保数据库内数据状态同步更新:

总结与优化建议

以上便是利用 Java 连接 SQL Server 数据库建立简易图书管理系统的完整步骤。该示例涵盖了基本的 JDBC 操作流程。优化提示:在实际项目开发中,强烈建议将原始 SQL 拼接替换为 PreparedStatement 以防止 SQL 注入,并引入 DAO 层设计模式以分离业务逻辑与数据库访问代码。 以上就是利用java和sqlserver建立简易图书管理系统的详细内容,更多关于java和sqlserver图书管理系统资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。