预编译

package csdn.prepare.take;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;public class TestCompiling {public static void main(String[] args) {prepare();}public static void prepare() {Connection conn = null;PreparedStatement ps = null;ResultSet rs = null;try {Class.forName("oracle.jdbc.OracleDriver");String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";conn = DriverManager.getConnection(url, "scott", "scott");String sql = "select * from Users where UNAME = ? and UPASS = ?";// 预编译命令对象。 ps = conn.prepareStatement(sql);// 给sql里面的?赋值    // 这里有一个sql注入 ps.setString(1, "'123' or 1=1 --");ps.setString(2, "456");/*ps.setString(1, "rye");ps.setString(2, "999");*/// 这里易错  ps 继承了父类的 executeUpdate(sql)rs = ps.executeQuery();if (rs.next())System.out.println("登录成功");else System.out.println("登录失败");} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();} finally {try {if (rs != null)rs.close();if (ps != null)ps.close();if (conn != null)conn.close();} catch (SQLException e) {e.printStackTrace();}}}}

批处理

package csdn.prepare.take;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;public class TestBatch {public static void main(String[] args) {// 批处理 和 预编译。batch();//批处理就是把多条数据打包好, 再把数据一次性放入SQL里面。}public static void batch() {Connection conn = null;PreparedStatement ps = null;try {Class.forName("oracle.jdbc.OracleDriver");String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";long start = System.currentTimeMillis();conn = DriverManager.getConnection(url, "scott", "scott");String sql = "insert into Users values (?, ?, ?)";// 预编译对象ps = conn.prepareStatement(sql);// 我要添加多个对象 用到批处理for (int i = 4; i < 1000000; i++) {ps.setInt(1, i);ps.setString(2, "" + i);ps.setString(3, "" + i); // 把一条SQL语句添加到批处理命令中。ps.addBatch();}       // 预编译对象执行批处理 返回int数组int[] batchs = ps.executeBatch();long end = System.currentTimeMillis();System.out.println("用时" + (end - start) + "毫秒");System.out.println(batchs.length);} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();} finally {try {if (ps != null)ps.close();if (conn != null)conn.close();} catch (SQLException e) {e.printStackTrace();}}}}

users表结构如下


插入了999996条数据 用了

如果比直接插入不用批处理和预编译快多了。

Java预编译和批处理相关推荐

  1. java预编译啥意思_java预编译 java jdbc 预编译语句和普通语句的区别

    java中什么是预编译precompile?总有一天你恍然大悟,父母是你花心思,花时间最少,却最爱你的人. 什么是预编译?起什么作用的? . 在java中如何实现预编译?祝你幸福!这句话真俗.小编会祝 ...

  2. java安全(二):JDBC|sql注入|预编译

    给个关注?宝儿! 给个关注?宝儿! 给个关注?宝儿! 关注公众号:b1gpig信息安全,文章推送不错过 1 JDBC基础 JDBC(Java Database Connectivity)是Java提供 ...

  3. 【java web】java执行预编译Groovy脚本

    在JVM中运行Groovy类有两种方式: 使用Groovy编译所有的*.groovy为java的*.class文件,把这些*.class文件放在java类路径中,通过java类加载器来加载这些类. 通 ...

  4. JAVA 安全-JWT 安全及预编译 CASE 注入等

    JAVA 安全-JWT 安全及预编译 CASE 注入等 SQL Injection(mitigation) 利用 session 防御 参数绑定方式&order by 绕过 实例 什么是 JW ...

  5. jdbc(跟着宝哥学java:jdbc) jdbc概念,铁打步骤,jdbc封装,预编译对象,sql攻击

    1 概念 jdbc:java database connection 通过java连接数据库 sun公司为java连接所有数据库提供的一组接口; jdbc驱动:各个数据库厂家为自己的数据库根据jdbc ...

  6. java中预编译是啥意思_JAVA学习笔记预编译

    JAVA学习笔记预编译 (2011-07-30 02:36:17) 标签: 杂谈 第顺次运行jsp时jsp将被改换成servlet(第顺次工夫较长,而尔后就会快许多) 搭配好的利用过程能够穿越设置js ...

  7. java sql in 预编译_JAVA使用预编译防止SQL注入

    原标题:JAVA使用预编译防止SQL注入 这是一条正常的SQL语句: SELECT * FROM users WHERE name ='$var'; 但是当变量var为 ' or true or '时 ...

  8. java 自动编译_java自动编译批处理

    最近开始学习java 教程中用的是dos命令行环境, 每次都要输入一大堆命令 比较繁琐 (据说命令行方式是新手必须要掌握的 , 但我认为重复输入那几个命令是万万没有必要的 ) 所以就写了个批处理来完成 ...

  9. java 编译引入库_eclipse编译cpp文件,并且引用其他预编译的库

    一.项目结构 jni相关的单独放在一个文件夹内,包括 st_stereo.h,main.cpp,这个是要进行编译的文件 lib下的libSTdisp.so,libStereoblur.so,前面要编译 ...

最新文章

  1. hdu 2295 Radar 重复覆盖+二分
  2. 发票管理及打印系统的部分代码
  3. BUUCTF--- LFI-------本地文件包含(Local File Include)
  4. 极端懒惰:使用Spring Boot开发JAX-RS服务
  5. 洛谷 P3146 [USACO16OPEN]248
  6. 智慧交通day02-车流量检测实现06:目标估计模型-卡尔曼滤波(汇总)
  7. 14 事务控制和锁定语句
  8. Maven 使用远程仓库错误
  9. Eclipse下搭建安卓开发环境(初步)
  10. 【平衡小车】新手应知一二之过程梳理和问题总结
  11. 计算机网络技术人员素质要求,做网络技术员需要学习哪些技能
  12. becon帧 wifi_构造并发送Beacon帧以伪造任意WiFi热点
  13. 点击或长按复制打开微信H5落地页如何制作?
  14. 关于Wasserstein GAN的理解
  15. 源支付5.18版本亲测不提示倒版,云端+前段+后台+运行环境
  16. 虚拟机解压.rar文件
  17. 由于目标计算机积极拒绝,无法连接。 127.0.0.1:4780
  18. ApexCharts 柱状图上显示具体数值
  19. 博多·舍费尔《小狗钱钱》读书笔记
  20. kaptcha谷歌验证码使用

热门文章

  1. 前端学习(3):vs code编辑器
  2. 第十六期:AWS 瘫痪:DNS 被 DDoS 攻击了 15 个小时
  3. java学习(7):巩固练习
  4. BCC异或校验 Linux C
  5. stylus之条件(Conditionals)
  6. iou画 yolov3_yolov3环境配置训练及优化
  7. 高级PHP工程师所应该具备的专业素养
  8. 【Python 学习_第2周_程序代码】金角大王培训第二周练习_购物车代码,将写的代码和老师代码比较,记录下收获...
  9. Python基础44(PyMySQL模块)
  10. MongoDB基本命令使用