Java JDBC快速上手

一、JDBC介绍

JDBC,Java DataBase Connectivity,Java的数据库连接。
JDBC,本质上是由sun公司开发的一套操作数据库的接口(规范),各个数据库厂商要想使用Java连接自己的数据库,都必须按照JDBC接口的规范提供实现类。
Java JDBC快速上手_第1张图片
Java JDBC快速上手_第2张图片

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目录下

Java JDBC快速上手_第3张图片
右击lib目录下面的jar包----添加到Build Path
Java JDBC快速上手_第4张图片
Java JDBC快速上手_第5张图片
注册驱动
其实就是将核心驱动类加载到内存中
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对象

Java JDBC快速上手_第6张图片
Java JDBC快速上手_第7张图片

二、JDBC 执行DQL语句

DQL语句,就是查询语句,JDBC通过executeQuery方法执行查询语句
说明:
JDBC执行DQL语句返回一个结果集(集合),需要从结果集中通过next()方法取数据
Java JDBC快速上手_第8张图片
Java JDBC快速上手_第9张图片
使用while循环进行优化
Java JDBC快速上手_第10张图片
Java JDBC快速上手_第11张图片

三、JDBC工具类封装(一)

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

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

四、JDBC事务处理

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

模拟银行转账:
Java JDBC快速上手_第18张图片
Java JDBC快速上手_第19张图片
Java JDBC快速上手_第20张图片

五、用户登录案例

1.先给user表增加password列
Java JDBC快速上手_第21张图片
Java JDBC快速上手_第22张图片
添加测试数据
Java JDBC快速上手_第23张图片
2.借用Scanner,提示用户输入用户名、密码,然后使用JDBC验证用户名、密码是否正确
Java JDBC快速上手_第24张图片
Java JDBC快速上手_第25张图片

六、JDBC预处理

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

1、 预处理解决什么问题

Java JDBC快速上手_第26张图片
上面之所以查询出来结果,因为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语句
Java JDBC快速上手_第27张图片
Java JDBC快速上手_第28张图片

你可能感兴趣的:(sql,JAVA语言,java,数据库,sql)