JDBC详解(二)
一:Statement与PreparedStatement的注意点
  
存在sql注入的危险,如果用户传入的id为“2 or 1=1”,将删除表中的所有数据。而PreparedStatement有效的防止sql注入(SQl语句在程序运行前已经进行了预编译,当运行时动态的把参数传给PreparedStatement时,及时参数里有敏感字符如:“or 1=1”,数据库也会作为一个字段的属性值来处理而不会作为一个SQL指令):
二:批处理(Batch)
  
对于大量的批处理,建议使用Statement,因为PreparedStatement的预编译空间有限,当数据量特别大时,会发生异常。(测试结果:2万条数据插入,大概需要2秒半的时间)
三:JDBC事务
JDBC的事务默认是自动提交的:
  
代码没有截图完整,在最后的finally中关闭连接没有截图。此段程序会报错:
  
报错是因为第二次插入参数设置不对。从控制台看到“第一次插入”打印出来了,是不是第一次的插入成功了呢?然而并没有,因为我没手动这只了自动提交事务为false,所以第一次插入和第二次插入是同一个事务。而第二次显然报错了,说明没有执行成功,所以第一次插入也是没有将数据真的插入到数据库的。如果我们将“1”出的代码注释掉,那么第一次插入输入真的插进去呢?答案是真的插入进去了。因为JDBC事务默认是自动提交事务的,所以如果将“1”处的代码注释掉,那么虽然第二次插入报错了,第二次没有插入成功,但是第一次还真的是插入成功了。
JDBC详解(二)的更多相关文章
- JDBC详解(一)
		一.相关概念介绍 1.1.数据库驱动 这里驱动的概念和平时听到的那种驱动的概念是一样的,比如平时购买的声卡,网卡直接插到计算机上面是不能用的,必须要安装相应的驱动程序之后才能够使用声卡和网卡,同样道理 ... 
- JDBC详解系列(二)之加载驱动
		---[来自我的CSDN博客](http://blog.csdn.net/weixin_37139197/article/details/78838091)--- 在JDBC详解系列(一)之流程中 ... 
- Java基础-面向接口编程-JDBC详解
		Java基础-面向接口编程-JDBC详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.JDBC概念和数据库驱动程序 JDBC(Java Data Base Connectiv ... 
- JDBC详解1
		JDBC详解1 JDBC整体思维导图 JDBC入门 导jar包:驱动! 加载驱动类:Class.forName("类名"); 给出url.username.password,其中u ... 
- .NET DLL 保护措施详解(二)关于性能的测试
		先说结果: 加了缓存的结果与C#原生代码差异不大了 我对三种方式进行了测试: 第一种,每次调用均动态编译 第二种,缓存编译好的对象 第三种,直接调用原生C#代码 .net dll保护系列 ------ ... 
- Spring4 JDBC详解
		Spring4 JDBC详解 在之前的Spring4 IOC详解 的文章中,并没有介绍使用外部属性的知识点.现在利用配置c3p0连接池的契机来一起学习.本章内容主要有两个部分:配置c3p0(重点)和 ... 
- JDBC详解系列(三)之建立连接(DriverManager.getConnection)
		在JDBC详解系列(一)之流程中,我将数据库的连接分解成了六个步骤. JDBC流程: 第一步:加载Driver类,注册数据库驱动: 第二步:通过DriverManager,使用url,用户名和密码 ... 
- PopUpWindow使用详解(二)——进阶及答疑
		相关文章:1.<PopUpWindow使用详解(一)——基本使用>2.<PopUpWindow使用详解(二)——进阶及答疑> 上篇为大家基本讲述了有关PopupWindow ... 
- Android 布局学习之——Layout(布局)详解二(常见布局和布局参数)
		[Android布局学习系列] 1.Android 布局学习之——Layout(布局)详解一 2.Android 布局学习之——Layout(布局)详解二(常见布局和布局参数) 3.And ... 
随机推荐
- Ionic 3 延迟加载(Lazy Load)实战(一)
			本文分享并演示了在 Ionic 3 框架中如何进行模块的延迟加载(Lazy Load)开发. 在我的实战课程「快速上手Ionic3 多平台开发企业级问答社区」中,因为开发的仿知乎 App 模块间的加载 ... 
- python基础学习笔记(三)
			序列概览 Python 包含6 种内建的序列,这里重点讨论最常用的两种类型:列表和元组. 列表与元组的主要区别在于,列表可以修改,元组则不能.也就是说如果要根据要求来添加元素,那么列表可以会更好用:而 ... 
- 函数:this & return、break、continue、exit()
			this this:的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象在调用的时候才能决定,谁调用的就指向谁. 情景1:指向 ... 
- 【CV】ICCV2015_Describing Videos by Exploiting Temporal Structure
			Describing Videos by Exploiting Temporal Structure Note here: it's a learning note on the topic of v ... 
- Minify or format javascript file by web or notepad++
			Notepad++ plugin manager install 'JSTOOL' http://tool.oschina.net/codeformat/js https://www.cnblogs. ... 
- 用async/ await来发送异步
			昨天看了一篇vue的教程,作者用async/ await来发送异步请求,从服务端获取数据,代码很简洁,同时async/await 已经被标准化,是时候学习一下了. 先说一下async的用法,它作为一个 ... 
- ECSHOP广告调用广告位添加到首页顶部通栏教程
			ECSHOP广告调用广告位添加到首页顶部通栏教程 ECSHOP教程/ ecshop教程网(www.ecshop119.com) 2012-05-26 ECSHOP系统默认预留的广告位很少,如何才能 ... 
- CentOS下使用VirtualBox 安装 Windows虚拟机的简单方法
			1.物理服务器安装CentOS7.5 2. 安装VNC 3. 关闭防火墙,关闭selinux,上传virtualbox的rpm包. http://download.virtualbox.org/vir ... 
- GROUP BY 聚合函数(max min sum avg count) 和HAVING的 使用
			重新复习一下这个都源自于我经常需要查的一个需求 “要找到表里面 出现了两次或者三次的某个字段” 现在假设有一张表字段是 +----+---------------------+------------ ... 
- 关于python format()用法详解
			str.format() 这个特性从python2.6而来 其实实现的效果和%有些类似 不过有些地方更方便 通过位置映射: In [1]: '{0},{1}'.format('kzc',18) Out ... 
