前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JDBC之预编译事务批处理存图片

JDBC之预编译事务批处理存图片

原创
作者头像
老九学堂-小师弟
修改2019-09-25 18:15:02
6800
修改2019-09-25 18:15:02
举报
文章被收录于专栏:编程语言xuetang编程语言xuetang

Statement接口作用

用于进行Java程序和数据库之间的数据传输

具体类有3个实现

Statement

用于对数据库进行通用访问,使用的是静态sql

PreparedStatement

PreparedStatement 用于预编译模板SQL语句,在运行时接受sql输入参数

CallableStatement

要访问数据库存储过程时使用

也可以接受运行时输入参数。

预编译语句

PreparedStatement 用于预编译模板SQL语句

在性能和代码灵活性上有显著地提高

PreparedStatement 对象使用 ? 作为占位符,即参数标记;

使用 setXXX( index,value) 方法将值绑定到参数中

每个参数标记是其顺序位置引用,注意 index 从 1 开始;

PreparedStatement 对象执行SQL语句

executeQuery()

executeUpdate()

什么是sql注入

就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令

使用预编译语句的好处就是可以防止SQL注入

为什么PrepareState就能够防注入

之所以PreparedStatement能防止注入,

是因为它把单引号转义了,变成了\',

这样一来,就无法截断SQL语句,进而无法拼接SQL语句 基本上没有办法注入了。

处理事务

默认情况下, 事务是自动提交的,要设置为手动提交

处理事务过程

关闭自动提交

conn.setAutoCommit(false);

没有问题时,提交事务

conn.commit();

出现异常时,进行回滚操作

conn.rollback()

回滚之后,事务结束。释放资源

出现异常,没有提交,也不会更新数据库,但是会占用资源

所以要出现异常时,进行回滚操作

只有增、册、改才需要事务,查询不需要事务

以后发现自己写的代码是正确的,测试也成功,但是数据库当中的数据不变,肯定是事务没有提交

InnoDB才支持外键和事务。MyISAM不支持外键和事务

转账示例:

这里顺便把批处理也给提一下

需要添加参数

老九学堂会员社群出品

作者:柳成萌

Statement.RETURN_GENERATED_KEYS

通过语句对象的getGeneratedKeys获取主键

老九学堂会员社群出品

作者:柳成萌

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档