JDBC入门培训方案
2022-09-06 14:28:43 0 举报
AI智能生成
JDBC入门培训方案
作者其他创作
大纲/内容
JDBC的概述
什么是JDBC:
是一种用于执行SQL语句的Java 的API.可以为多种关系型数据库提供统一的访问.它是由一组使用Java语言编写的类或接口组成.
JDBC的功能:
JDBC功能主要就是使用Java语言连接到数据库.
哪些地方使用JDBC:
任意一个应用:
1.学生选课:
2.OA:
3.系统都需要与数据库进行交互.都需要使用JDBC.
什么是驱动:
驱动:两个设备之间的通信桥梁.
1.Java语言要连接数据库必须使用数据库的驱动.
2.各个数据库的生产商提供数据库的驱动.使用Java连接各种数据库.需要了解各个数据库的驱动.增加Java程序员压力.
3.SUN公司与各个数据库生产商协商.由SUN公司提供一套统一的规范.由各个数据库的生产商提供这套规范的实现.
4. SUN公司提供了一组接口.各个数据库生产商提供了这套接口的实现.(这组规范就是JDBC规范.)
JDBC的快速入门
JDBC开发步骤:
步骤1:搭建开发环境,引入数据库的驱动.
步骤2:在程序中加载数据库驱动.
步骤3:获得数据库连接.
步骤4:编写SQL.执行SQL.
步骤5:释放资源.
JDBC的API
DriverManager:驱动的管理类.
注册驱动:Class.forName(“com.mysql.jdbc.Driver”);
获得连接:getConnection(String url,String username,String password);
Connection:连接对象.
Connection由DriverManager创建的.代表的是一个连接的对象.
主要有两个作用:
1.创建执行SQL语句的对象
创建Statement对象.
创建PreparedStatement对象.对SQL进行预编译.(防止SQL注入的漏洞.)
创建CallableStatement.用来执行数据库中存储过程.
2.进行事务的管理
设置事务不自动提交.
set AutoCommit()
事务提交
Commit()
事务回滚.
rollback()
Statement:执行SQL的对象.
Statement对象由Connection对象创建的.代表是可以运行SQL的类.
主要有两个作用:
1.执行SQL语句.
executeQuery(String sql) 查询
executeUpdate(String sql) 执行update、insert、delete语句的时候
execute(String sql) 执行select、insert、update、delete语句.返回的是boolean值.
2.执行批处理.
addBatch(String sql)将sql添加到批处理中。
clearBatch() 清空批处理。
executeBatch()执行批处理.
ResultSet:结果集.
ResultSet对象由Statement对象中executeQuery(String sql);返回的.ResultSet对象代表的是select查询后的结果.
遍历结果集:
*while(rs.next()){
int id = rs.getInt("id");
String username = rs.getString("username");
String password = rs.getString("password");
System.out.println(id+" "+username+" "+password);
}
如果结果集中只有一条记录:
* if(rs.next()){
...
}
滚动结果集:(了解)
结果集默认的情况下只能向下而且不可以在结果集上进行修改记录.
JDBC的资源释放:
资源的释放是非常重要,我们写的资源释放的代码,是非常不规范!!!
尤其Connection对象是非常稀有!代表的是数据库连接对象.安装MYSQL的数据库时候,MYSQL有最大连接数量.如果达到MYSQL的最大连接数量,而且Connection都没有被释放.其他人连接不到数据库.
如果Connection不能及时,正确关闭.极易导致系统宕机.Connection的使用原则:尽量要晚创建,尽量早释放!!!
为了确保释放的代码能够得到执行,资源释放的代码一定要放在finally代码块
SQL注入的漏洞:
已知用户名的情况下.对这个用户名的用户进行攻击!!!
1.攻击方式一:
在用户名地方输入:aaa' or '1=1
密码随意.
2.攻击方式二:
* 在用户名地方输入:aaa' --
* 密码随意.
产生原因:因为在用户名地方输入SQL的关键字.(SQL注入)
解决SQL注入的漏洞:
* 1.使用JS在文本框进行校验.校验不可以输入 - ,or , ' 特殊的字符都不可以输入.
* 不可行:JS的校验只是为了提升用户的体验.不能真正进行校验.(JS的代码可以被绕行.)
* 在地址上上直接输入访问路径.loginServlet?username=aaa' or '1=1&password=xxxxxx
2.SQL注入漏洞真正的解决方案:PreparedStatement.对SQL进行预编译.参数的地方都可以使用 ? 作为占位符.
* select * from user where username = ? and password = ?;
* 再次输入 aaa' or '1=1 拿到参数之后. or 一些特殊的字符 不当成SQL的关键字。只是当成普通的字符串进行解析.
* 提前进行编译.编译后的SQL的格式就已经固定了.
0 条评论
下一页