Java JDBC快速上手

10 篇文章 3 订阅

一、JDBC介绍

JDBC,Java DataBase Connectivity,Java的数据库连接。
JDBC,本质上是由sun公司开发的一套操作数据库的接口(规范),各个数据库厂商要想使用Java连接自己的数据库,都必须按照JDBC接口的规范提供实现类。
在这里插入图片描述
在这里插入图片描述

1、JDBC快速入门

1.1、 创建Java工程,并导入jar包【驱动包】

JAR 文件就是 Java Archive File,是 Java 的一种文件格式。
JAR 文件非常类似 ZIP 文件——准确的说,它就是 ZIP 文件,所以又叫它文件包。JAR 文件与 ZIP 文件唯一的区别就是在 JAR 文件的内容中,包含了一个 META-INF/MANIFEST.MF 文件(详情单),这个文件是在生成 JAR 文件的时候自动创建的。

新建一个java工程,并在java工程下面创建lib目录
将mysql-connector-java-5.1.47.jar包拷贝到java工程的lib目录下

在这里插入图片描述
右击lib目录下面的jar包----添加到Build Path
在这里插入图片描述
在这里插入图片描述
注册驱动
其实就是将核心驱动类加载到内存中
Class.forName(“com.mysql.jdbc.Driver”);

1.2、 获取数据库连接

Connection con = DriverManager.getConnection(url,username,password);
参数就是数据库的信息

1.3、 编写sql语句
String sql = “insert into user values(null,”王五”,20,”1990-01-01”,18765.00)”;
1.4、 获取执行sql语句的Statement对象

Statement statement = con.createStatement();

1.5、 执行sql,接收返回结果
执行DML语句,使用executeUpdate方法
执行DQL语句,使用executeQuery方法
1.6 释放资源
释放数据库连接
释放Statement对象

在这里插入图片描述
在这里插入图片描述

二、JDBC 执行DQL语句

DQL语句,就是查询语句,JDBC通过executeQuery方法执行查询语句
说明:
JDBC执行DQL语句返回一个结果集(集合),需要从结果集中通过next()方法取数据
在这里插入图片描述
在这里插入图片描述
使用while循环进行优化
在这里插入图片描述
在这里插入图片描述

三、JDBC工具类封装(一)

目的:
将JDBC操作中相同的、重复的代码提取出来,就不用每次都写这些重复的代码了

要求:
1.当类被加载完毕时,就将mysql的驱动加载到内存中
2.希望能够将数据库信息(数据库名、用户名、密码) 保存到db.properties文件中,当类被加载完毕时,能够读取db.properties文件中的数据库的信息
(复习一下IO流Properties类)
3.封装常用的方法,方便以后直接调用
步骤:
1.先将驱动类、数据库名、用户名、密码保存到配置文件中,需要的时候再从配置文件读取
好处:将来如果需要修改数据库、用户名、密码的时候,只需要改配置文件即可
在这里插入图片描述
2.在JDBC工具类中,读取配置文件中的数据库信息
在这里插入图片描述
在这里插入图片描述
3.封装获取数据库连接的方法
将来想获取数据库连接时,只需要调用该方法即可,该方法会给我们返回数据库连接
在这里插入图片描述
4.封装关闭资源的方法
在这里插入图片描述
5.测试一下
在这里插入图片描述

四、JDBC事务处理

1.关闭自动提交
2.如果sql语句都执行成功,执行commit()
3.如何有任何一个sql语句出现异常,执行rollback();

模拟银行转账:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五、用户登录案例

1.先给user表增加password列
在这里插入图片描述
在这里插入图片描述
添加测试数据
在这里插入图片描述
2.借用Scanner,提示用户输入用户名、密码,然后使用JDBC验证用户名、密码是否正确
在这里插入图片描述
在这里插入图片描述

六、JDBC预处理

预,提前
预习,提前学习
预处理,在sql语句执行前,先编译sql语句

1、 预处理解决什么问题

在这里插入图片描述
上面之所以查询出来结果,因为1’ or 1=1 or ’ 将sql语句的结构改变了
select * from user where name = ‘张无忌’ and password = ‘admin123’;
select * from user where name = ‘1’ or 3=3 or ’ ’ and password = ‘admin123’;
将条件修改为:name = ‘1’ 或者 1=1,由于1恒等于1,所以该条件就成立

可以通过1’ or 1=1 or '用户名破解我们的登录功能
要想解决这个安全问题,需要知道原因
原因在于:不能根据用户名改变sql语句的结构,由原来的的name=xxx条件,改变成:name=’1’ 或者 1= 1

2、 预处理如何使用

预处理解决安全问题思路:
1.使用占位符代替可能被攻击的地方
2.预编译sql语句,目的是:固定sql语句的结构,将来不管传递的用户名是什么,都不会再改变sql结构
3.绑定参数,将真实的内容替换到占位符
4.执行预编译的sql语句
在这里插入图片描述
在这里插入图片描述

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SuperProgMan.SYJ

你的鼓励将是我创作更大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值