JDBC—Sql注入问题和事务控制

本文介绍SQL注入的概念及其解决方法——使用PreparedStatement。详细解释了PreparedStatement相较于Statement的优势,包括预防SQL注入、提升性能及支持更多数据类型,并提供了具体的操作步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

6. sql注入问题:

1. 说明:使用者可以给程序传入一些sql的片段来达到破坏sql语句的功能

2. 解决方式:使用PreparedStatement

 

7. PreparedStatement:

1. Statement的比较:

1. Statement的子接口,可以解决sql注入问题

2. 是预先编译的sql,当语句没有错误时才完成编译,多次执行时只需要编译一次,因此执行多次相同的sql语句时性能更好

3. 可以处理更多的数据类型

2. 使用步骤:

1. 创建PreparedStatement:

String sql="select * from _user where userName=? and pwd=?";

PreparedStatement ps=conn.prepareStatement(sql);

2. ps的点位赋值,索引从1开始,例如:

ps.setString(1, 'cyz');

ps.setInt(96);

ps.setDate(date);

3. 执行ps,可以使用execute,executeUpdate,executeQuery,例如:

ps.executeQuery(); //通常在查询时,有查询条件

ResultSet rs=ps.executeQuery();

ps.executeUpdate();

ps.execute(); //使用时execute()()中不能有任何语句,否则会当作Statement处理

 

8. JDBC的事务控制:

1. 使用情况:当完成一个功能需要多个操作时一定要用到事务

2. 作用:防止出现异常时,同一个功能中的某些操作成功了,某些失败了,如:A给B转账,A的钱没有了B却还没转过来

3. 前提:关闭自动提交,改为手动提交

4. 语法:

conn.setAutoCommit(false); //设置为手动提交,一般写在获得连接语句的后面

conn.commit(); //提交事务

conn.rollback(); //回滚事务,一般写在catch语句中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值