使用JDBC创建出版社和书籍管理系统

该博客详细介绍了如何使用JDBC创建一个出版社和书籍管理系统。内容包括配置log4j.properties和db.properties文件,利用PropertiesUtil和DBUtil工具类,实现IRowMapper接口,设计PublisherManager和BookManager类来管理出版社和书籍,并提供了主方法实现系统操作。同时提到了外键约束和SQL注入的防范,以及相关工具和配置的参考资料链接。
摘要由CSDN通过智能技术生成

1.需求

已知如下两个表:
	publisher id name(唯一) address
	book id isbn name publisher_id
	欢迎进入书籍管理系统
	1.出版社管理:增、删(name)、改(name)、查(name)
	2.书籍管理:增、删(name)、改(name)、查(name)
	3.退出

2.log4j.properties 为什么
3.db.properties 为什么
4.PropertiesUtil
5.DBUtil
6.IRowMapper
7.PublisherManager
8.BookManager
9.Client
一.首先在mysql数据库软件中建立如下两个表

create table publisher(
	   id char(36) primary key,
	   name varchar(24) unique,
	   address varchar(120)
)   
create table book(
	   id char(36) primary key,
	   isbn varchar(12) unique,
	   name varchar(24),
	   publisher_id char(36),
	   foreign key(publisher_id) references publisher(id)
)

关于SQL语句中约束的知识在下面博客中提及过
https://blog.csdn.net/qq_44724446/article/details/90027794
https://blog.csdn.net/qq_44724446/article/details/90031272
log4j为什么用如何配置,查看
https://blog.csdn.net/qq_44724446/article/details/90044781
properties为什么用,如何配置,java代码的实现-封装的工具类PropertiesUtil查看
https://blog.csdn.net/qq_44724446/article/details/90048065
DBUtilIRowMapper查看
https://blog.csdn.net/qq_44724446/article/details/89918464
当时未考虑到SQL注入的情况,所以补充代码,引入PreparedStatement接口的概念,

//关于防止sql注入的步骤参考如下
http://www.cnblogs.com/flei/p/6727520.html

创建36位UUID的工具类

import java.util.UUID;
public class StringUtil {
	public static String getId() {
		return UUID.randomUUID().toString();
	}
}

创建用于出版社系统实现增删改查的封装类

import java.sql.ResultSet;
import java.util.Scanner; 
public class PublisherManager {
   
	static Scanner sc= new Scanner(System.in);
	/**
	 * 出版社管理
	 */
	public static void pManager() {
   
		System.out.println("请输入出版社管理操作:");
		System.out.println("1.添加出版社信息");
		System.out.println("2.删除出版社信息");
		System.out.println("3.修改出版社信息");
		System.out.println("4.查询出版社信息");
		System.out.println("请输入操作,按enter键结束");
		int option = sc.nextInt();
		switch (option) {
   
		case 1:
			pInsert();
			break;
		case 2:
			pDelete();
			break;
		case 3:
			pUpdate();
			break;
		case 4:
			pSelect();
			break;
		default:
			System.out.println("Sorry,there is not the " + option + " option,请重新输入选择:");
			break;
		}
	}
 
	/**
	 * 添加出版社信息
	 */
	public static void pInsert() {
   
 
		String id = StringUtil.getId();
		System.out.println("请输入要添加的出版社的名字");
		String name = sc.next();
		if (new PublisherManager().exit(name)) {
    // 判断出版社是否存在
			System.out.println("出版社名字不允许重复,无法添加,操作停止");
			return;
		}
		System.out.println("请输入要添加的出版社的地址");
		String address = sc.next();
		String sql = "insert into publisher (id,name,address) values (?,?,?)";
		if (DButil.upDate(sql, id, name, address)) {
   
			System.out.println("添加信息成功");
			return;
		}
		System.out.println("系统错误,添加信息失败");
 
	}
 
	/**
	 * 删除出版社信息
	 */
	public static void pDelete() {
   	
		System.out.println("请输入要删除的出版社的名字");
		String name = sc.next();
		if (!new PublisherManager().exit(name)) {
    // 判断出版社是否存在,不存在没办法删除
			System.out.println("出版社名字不存在,无法删除,操作停止");
			return;
		}
		String sql = "delete from publisher where name=?";
		if (DButil.upDate(sql, name)) {
   
			System
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的使用JDBC连接MySQL数据库并实现图书管理的示例代码: ```java import java.sql.*; public class BookManager { private Connection conn = null; private Statement stmt = null; private ResultSet rs = null; public BookManager() { try { // 加载JDBC驱动程序 Class.forName("com.mysql.jdbc.Driver"); // 建立数据库连接 conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/bookdb", "root", "password"); // 创建Statement对象 stmt = conn.createStatement(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } } public void addBook(String title, String author, String publisher, int year) { try { // 执行SQL语句,插入新书籍 String sql = "INSERT INTO books (title, author, publisher, year) VALUES ('" + title + "', '" + author + "', '" + publisher + "', " + year + ")"; stmt.executeUpdate(sql); } catch (SQLException e) { e.printStackTrace(); } } public void updateBook(int id, String title, String author, String publisher, int year) { try { // 执行SQL语句,更新指定id书籍信息 String sql = "UPDATE books SET title='" + title + "', author='" + author + "', publisher='" + publisher + "', year=" + year + " WHERE id=" + id; stmt.executeUpdate(sql); } catch (SQLException e) { e.printStackTrace(); } } public void deleteBook(int id) { try { // 执行SQL语句,删除指定id书籍 String sql = "DELETE FROM books WHERE id=" + id; stmt.executeUpdate(sql); } catch (SQLException e) { e.printStackTrace(); } } public void listBooks() { try { // 执行SQL语句,查询所有书籍信息 String sql = "SELECT * FROM books"; rs = stmt.executeQuery(sql); // 遍历ResultSet对象,输出查询结果 while (rs.next()) { int id = rs.getInt("id"); String title = rs.getString("title"); String author = rs.getString("author"); String publisher = rs.getString("publisher"); int year = rs.getInt("year"); System.out.println(id + "\t" + title + "\t" + author + "\t" + publisher + "\t" + year); } } catch (SQLException e) { e.printStackTrace(); } } public void close() { try { // 关闭ResultSet、Statement和Connection对象 rs.close(); stmt.close(); conn.close(); } catch (SQLException e) { e.printStackTrace(); } } public static void main(String[] args) { BookManager bm = new BookManager(); bm.addBook("Java编程思想", "Bruce Eckel", "机械工业出版社", 2007); bm.addBook("Thinking in Java", "Bruce Eckel", "Prentice Hall", 2006); bm.listBooks(); bm.updateBook(1, "Java编程思想(第4版)", "Bruce Eckel", "机械工业出版社", 2009); bm.deleteBook(2); bm.listBooks(); bm.close(); } } ``` 在这个示例代码中,我们使用JDBC连接了一个名为bookdb的MySQL数据库,实现了添加新书籍、更新和删除图书信息以及列出所有书籍的功能。在main方法中,我们演示了如何使用这些方法来管理图书。 需要注意的是,这个示例代码中的SQL语句使用了字符串拼接的方式来构建,这样容易受到SQL注入攻击。在实际的应用中,应该使用PreparedStatement来构建SQL语句,以避免SQL注入攻击。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值