MYSQL JDBC图书管理系统

本文详细介绍了如何使用JDBC进行MYSQL数据库操作,包括JDBC简介、准备工作、JDBC五步操作,以及如何构建图书管理系统,涵盖书籍和用户表的增删查改,通过Java代码封装数据库操作,实现系统的功能,如新增书籍、借书、还书等。
摘要由CSDN通过智能技术生成

两万字,博主辛辛苦苦给大家写的,在这里求个三连~~。
在这里插入图片描述

JDBC编程

一、JDBC简介

即Java Database Connectivity,Java和数据库链接。是一种可以执行SQL语句的API。JDBC 是一种规范,它提供了一套完整的接口,允许便携式访问到底层数据库,因此可以用 Java 编写不同类型的可执行文件


二、准备工作

工欲善其事必先利其器,在开始MYSQL JDBC编程之前,我们做一些准备工作。

编程语言:Java

数据库:MYSQL

数据库驱动包:不同的数据库需要导不同的数据包,并且数据库的版本也需要和驱动包的版本在大版本下相同,小版本可忽略。例如MYSQL用的5.x.x版本的那么对应的驱动包也应该是5.x.x。我这里为8.xx版本。这里附上链接。

驱动包下载链接

三、JDBC五毒神掌

3.1导入驱动包,创建DataBase实例

1、在项目目录中创建一个包,我这里为JDBCtest5,并把下载好的驱动包直接拖动到这个包底下即可。
在这里插入图片描述
接着点击refactor就能在包底下看到自己的驱动包了。
在这里插入图片描述
接着右键点击当前的包,在底下找到add as a library。点击ok。
在这里插入图片描述
这样就算是导驱动包完成了。
在这里插入图片描述
新建一个Java.class文件。我这里是JDBC0925。在这个文件里先创建出main函数出来。然后
开始创建DataSource实例。同时给这个DataScoure设置参数,分别是URL,User,Password。
这里用了向下转型,把父类实例使用一个子类引用指向。还需要把DataSource转回成MysqlDatasource才能设置URL,用户名和密码。

DataScoure顾名思义就是描述了数据的来源,当我们根据自己的URL,账户名,和密码创建一个datasource实例时,就为连接数据库做了一步准备工作。

 //1、创建DataSource实例
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java_100?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword(" ");

那问题来了,向下转型这么麻烦,那不转型行不行?
答案是完全可以的!但是如果直接写成不写转型的场景,这时如果要更换数据库的话,代码的改动就是非常大的。

2、和数据库建立连接。

 //2、和数据库建立连接
        Connection connection = dataSource.getConnection();

3、构造SQL语句
在JDBC中SQL是一个字符串,要想让数据库识别并执行SQL语句,还需要把这个字符串类型的SQL转成PrepareStatement对象。这个preparestatement对象可以帮我们动态的构造出SQL同时也能进行一些检查。
这里我的sql语句为查询学生表的所有信息。

  //3、构造SQL
        String sql="select * from student";
        PreparedStatement statement=connection.prepareStatement(sql);

4、执行SQL语句
statement提供了两个系列的execute,一个是executeUpdate,它用来进行增加、删除、修改。返回int表示能影响到多少行。
另一个是executeQuery。用于进行查找,我这里是查找,所以用的是Query。查找还需要一个结果集合resultSet。返回一个结果集,相当一个表格。

  //4、执行SQL
        ResultSet resultSet=statement.executeQuery();


//遍历结果集合
        //先取出结果中的每一行,再取出每一行中需要列即可。
        //这个遍历的代码很像迭代器
        while (resultSet.next()){
            int id=resultSet.getInt("id");
            String name=resultSet.getString("name");
            System.out.println(id+"	"+name);
        }

5、释放相关资源

哪些是相关资源?为什么要释放他们?释放资源的时候需要注意什么?
相关资源都包含了connection、statement、resultSet。如果不关闭像这样的相关资源。就可能会导致资源泄漏。这一点和C语言的malloc很像。如果不关闭连接。当前这个connection对象只有的内存,以及内部持有的socket文件描述符都难以释放。这时候也会造成类似于内存泄漏的情况。
释放资源的顺序需要和创建的顺序相反。我们创建的顺序是connection、statement、resultSet。所以关闭顺序就应该如下代码中那样。

//5、释放相关资源
        resultSet.close();
        statement.close();
        connection.close();

四、加入SQL版的数据库

如果这样就想学会JDBC,我猜你是哈士奇思考小问题。
汪想!
为了让读者更好的掌握JDBC编程,接下来我将向你演示mysql的图书管理系统。

4.1系统功能汇总

图书管理系统:
1、能够表示每本书的信息。包含书的序号、书名、作者、价格、类型。
2、能够表示用户信息,这里分为两种,管理员和普通用户
3、针对以上两种用户提供不同的操作:
普通用户:查看书籍列表,查找指定书籍、借阅书籍、归还书籍
管理员用户:查看书籍列表、新增书籍、删除书籍、

4.2 数据库准备

1、书籍表:

create table book(
bookid int primary key auto_increment,
name varchar(20),
author varchar(20),
--  钱是小数但是小数的浮点数在计算机中难以精确存储,float、double都是无法精确表示的
-- decimal类型可以精确表示小数但是效率大大降低
-- 办法:还是用int 但是单位是分而不是元

price  int,
type varchar(20),
isBrrowed int 
);

2、用户表:

drop table if exists user;
create table user(
userId int  primary key auto_increment,
username varchar(20),
password varchar(20),
--isAdmin为1时,代表管理员,为0代表普通用户
isAdmin int
);

先插入一些数据:

-- 插入一些数据
insert into book values(null,'西游记','吴承恩',10000,'古典小说',0);
insert into book values(null,'三国演义','罗贯中',10000,'古典小说',0);
insert into book values(null,'水浒传','施耐庵',10000,'古典小说',0);
insert into book values(null,'金瓶梅','兰陵笑笑生',10000,'古典小说',0);

-- 插入一些用户
insert into user values(null,'admin','123',1);
insert into user values(null,'zjw','123',0);

这样初步数据就算是准备好了。
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值