JDBC相关信息

jdbc java database connectivity java数据库连接

Class.forName(“com.mysql.jdbc.Driver”)
DriverManager 获取 Connection 在获取Statement 执行者对象(普通crateStatement() 预编译执行者对象 prepareStatement(sql))

Connection 接口有以下功能
jdbc事物管理
开启事务setAutoCommit(boolean) false 代表开启事务
提交事物commit()
回滚事物 rollback()
close() 关闭资源

Statement 执行sql语句(有sql注入的风险)
DML: int executeUpdate(String sql)(sql 参数:insert\update\delete)

DQL: 查询语句 ResultSet executeQuery(String sql)
ResultSet 封装查询的结果

ResultSet 结果集对象

判断结果集是否还有数据 Boolean next()

获取结果集中的数据
xxx getXxx(“列名”)

dao层 约束实现类的接口

service层 业务处理层(事物处理控制在该层)

controller 层 控制层

domain 层存放实体对象

jdbc 工具类
1、创建配置文件 config.properties 写好 driverClass=com.mysql.jdbc.driver 等
2、创建JDBCUtils类
a:私有构造方法
B: 声明所需要的的配置变量
c: 提供静态代码块读取配置文件的信息为变量赋值、注册驱动
(获取 InputStream 流 、new Propertis()读取配置文件信息、注册驱动)

d: 提供数据库连接方法

e :释放资源的方法

SQL 注入攻击
原理
按照正常道理来说我们在输入密码处输入的所有内容都应该认为是密码的组成部分
但是现在Statement对象在执行语句时,将密码的一部分内容当做查询条件来执行了

例子:
username: aaa password: aaa or ‘1=1’

PreparedStatement 预编译执行者对象(防sql注入)
在执行sql语句之前将sql语句提前编译,明确sql语句的格式,
剩余的内用都会认为是参数而不会作为执行条件了

String sql=“select * from student where name=? and password=?” ;
//?位置从1开始 这里name 占位符为1号 password占位符为2号
PreparedStatement pstm=connection.prepareStatement(sql)

pstm.setString=(1,“zhangsan”)
pstm.setString=(2,“z123456”)

ResultSet rs=pstm.executeQuery();

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值