专栏首页编程语言xuetangJDBC之预编译事务批处理存图片
原创

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

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获取主键

老九学堂会员社群出品

作者:柳成萌

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • JDBC简介及DML、DQL操作

    4.JDBC的目标是使Java程序员使用JDBC可以连接任何提供了JDBC驱动程序的数据库系统

    老九学堂-小师弟
  • C++数组与指针

    不知道在通过前面的内容学习后,是否有很多小伙伴都会认为数组和指针是等价的,数组名表示数组的首地址呢?不幸的是,这是一种非常危险的想法,并不完全正确,前面我们将数...

    老九学堂-小师弟
  • C语言保留字(关键字)详解

    保留字又称关键字。指在高级语言中已经定义过的字,使用者不能再将这些字作为变量名或过程名使用。每种程序设计语言都规定了自己的一套保留字。例如:BASIC语言规定不...

    老九学堂-小师弟
  • 20190707

    (注:该文计划发布到DDD China知乎,看看译文哪里不太通顺?该书电子版可以在这里免费购买,只要把价格滚轮拨到0即可。)

    吾真本
  • git提交如何忽略某些文件

    用户1741436
  • 世界地球日|地球深陷“环境危机”,VR/AR或将有效改变人类的环保行为

    2019年,气候变化、海洋污染、动物灭绝……我们看到地球正面对着越来越巨大的麻烦。这颗承载着万千生命的行星,正需要强大而创新的方式来传播环保意识,以让全球人民了...

    VRPinea
  • 6.5 数组作为函数参数

    在用数组元素作函数实参时,把实参的值传递给形参,是“值传递”方式。数据传递的方向是从实参传到形参,单向传递

    闫小林
  • 领域驱动设计

    关于领域驱动设计 这篇文章参考了Eric Evans《领域驱动设计》一书以及Jimmy Nilsson《以C# .NET为例运用领域驱动设计和模式》,二者详细描...

    程序猿DD
  • .Net Core中利用TPL(任务并行库)构建Pipeline处理Dataflow

    在学习的过程中,看一些一线的技术文档很吃力,而且考虑到国内那些技术牛人英语都不差的,要向他们看齐,所以每天下班都在疯狂地背单词,博客有些日子没有更新了,见谅见谅...

    码农阿宇
  • Wolfram 语言在数学建模中的应用

    本书旨在对数学建模领域进行一般性介绍,涵盖了从优化到动态系统到随机过程的广泛建模问题。强调原则和一般技术为学生提供了他们在各种学科中模拟现实问题所需的数学背景。

    WolframChina

扫码关注云+社区

领取腾讯云代金券