try{conn.setAutoCommit(false); //设置不会自动提交
stmt = conn.createStatement();
stmt.executeQuery("SELECT * FROM temp_info");
stmt.executeUpdate("UPDATE temp_info SET ip='***.***.***.***'");
conn.commit(); //提交事务
System.out.println("Ok!");
conn.close();
}catch(SQLException e){try{conn.rollback(); // 操作不成功,回滚事务
}catch(SQLException r){System.out.println(r.getMessage());
}
System.out.println(e.getMessage());
}

PreparedStatement批量处理和事务代码如下:

 /*  * PreparedStatement:  1.addBatch() 将一组参数添加到 PreparedStatement对象内部  2.executeBatch() 将一批参数提交给数据库来执行,如果全部命令执行成功,则返回更新计数组成的数组。  *   */
public class PreparedStatementCommitAndRollback {   public static void main(String args[]) {   Connection con = null;   PreparedStatement pstm = null;   try {   // 1. 建立与数据库的连接   con = JDBCUtil.getConnection();   // 2. 执行sql语句   // 1).先创建PreparedStatement语句(发送slq请求):   pstm = con.prepareStatement("insert into student values(?,?,?,?)");   con.setAutoCommit(false);//1,首先把Auto commit设置为false,不让它自动提交   // 2) 设置sql语句1   pstm.setInt(1, 33);   pstm.setString(2,"wangqin");   pstm.setString(3, "c++");   pstm.setDouble(4, 78.5);   // 3) 将一组参数添加到此 PreparedStatement 对象的批处理命令中。   pstm.addBatch();   // 2) 设置sql语句2   pstm.setInt(1, 34);   pstm.setString(2,"wuytun");   pstm.setString(3, "c");   pstm.setDouble(4, 77);   // 3) 将一组参数添加到此 PreparedStatement 对象的批处理命令中。   pstm.addBatch();   // 2) 设置sql语句3   pstm.setInt(1, 31);   pstm.setString(2,"tetet");   pstm.setString(3, "c++");   pstm.setDouble(4, 90);   // 3) 将一组参数添加到此 PreparedStatement 对象的批处理命令中。   pstm.addBatch();   // 2) 设置sql语句4   pstm.setInt(1, 32);   pstm.setString(2,"liug");   pstm.setString(3, "c");   pstm.setDouble(4, 50);   // 3) 将一组参数添加到此 PreparedStatement 对象的批处理命令中。   pstm.addBatch();   // 4) 将一批参数提交给数据库来执行,如果全部命令执行成功,则返回更新计数组成的数组。   pstm.executeBatch();   System.out.println("插入成功!");   // 若成功执行完所有的插入操作,则正常结束   con.commit();//2,进行手动提交(commit)   System.out.println("提交成功!");   con.setAutoCommit(true);//3,提交完成后回复现场将Auto commit,还原为true,   } catch (SQLException e) {   try {   // 若出现异常,对数据库中所有已完成的操作全部撤销,则回滚到事务开始状态   if(!con.isClosed()){   con.rollback();//4,当异常发生执行catch中SQLException时,记得要rollback(回滚);   System.out.println("插入失败,回滚!");   con.setAutoCommit(true);   }   } catch (SQLException e1) {   e1.printStackTrace();   }   }finally{   JDBCUtil.closePreparedStatement(pstm);   JDBCUtil.closeConnection(con);   }   }
}

PreparedStatement 执行sql相关推荐

  1. 使用preparedStatement执行sql语句 20210411094249744

    目标 使用preparedStatement对象操作sql语句 实现登陆的功能 编写代码 import java.sql.*; import java.util.Scanner;public clas ...

  2. JDBC中使用PreparedStatement执行SQL语句并管理结果集

    基本说明 1.使用PreparedStatement在对反复操作多条结构相似的SQL语句时效率更高,并且可以使用参数替代变量,可以防止SQL注入. 2.PreparedStatement也提供了 ex ...

  3. java代码执行mysql语句_三种执行SQL语句的的JAVA代码

    问题描述: 连接数据库,执行SQL语句是必不可少的,下面给出了三种执行不通SQL语句的方法. 1.简单的Statement执行SQL语句.有SQL注入,一般不使用. public static voi ...

  4. mysql执行sql语句按钮_mysql执行sql语句过程

    开发人员基本都知道,我们的数据存在数据库中(目前最多的是mysql和oracle,由于作者更擅长mysql,所以这里默认数据库为mysql),服务器通过sql语句将查询数据的请求传入到mysql数据库 ...

  5. PreparedStatement批量执行sql

    2019独角兽企业重金招聘Python工程师标准>>> 案例: 工具方法: public static Connection getConnection(){try {Class.f ...

  6. JDBC查看Preparedstatement执行的sql语句

    通过JDBC4查看 String sql = "select * from user where uname = ?"; //执行sql语句 ps=conn.prepareStat ...

  7. java执行sql文件_面试官问你MyBatis SQL是如何执行的?把这篇文章甩给他

    初识 MyBatis MyBatis 是第一个支持自定义 SQL.存储过程和高级映射的类持久框架.MyBatis 消除了大部分 JDBC 的样板代码.手动设置参数以及检索结果.MyBatis 能够支持 ...

  8. mybatis 创建session, 缓存, 执行SQL

    案例代码, 上一个博客已经分析了 SqlSessionFactory 的 build , 本文内容部分知识基于上篇的文章 mybatis 的初始化, build 这节我们分析, 开启session, ...

  9. java执行sql文件_面试官:MyBatis SQL是如何执行的?把这篇文章甩给他

    初识 MyBatis MyBatis 是第一个支持自定义 SQL.存储过程和高级映射的类持久框架.MyBatis 消除了大部分 JDBC 的样板代码.手动设置参数以及检索结果.MyBatis 能够支持 ...

  10. java批量执行查询sql语句_详解MyBatis直接执行SQL查询及数据批量插入

    一.直接执行SQL查询: 1.mappers文件节选 ${paramSQL} 2.DAO类节选 public interface SomeDAO{ List getInstanceModel(@Par ...

最新文章

  1. 轻松学习LINUX系列教程推出
  2. android sdk版本控制,1. 统一SDK版本管理配置
  3. [转]互联网产品经理必上的九个资讯+分析类网站
  4. java文件名大小_java 比较指定文件夹内.txt文件名的大小
  5. 转载:磁盘分区,一篇很好的文章
  6. 一步步编写操作系统 23 重写主引导记录mbr
  7. EOSIO:EOSIO最新版1.4.0创建测试账户
  8. 容器编排技术 -- Kubernetes kubectl create deployment 命令详解
  9. 使用com.alibaba.fastjson.JSONObject构造简单的JSON数据
  10. OpenCv之绘图(笔记03)
  11. MySQL的SQL预处理(Prepared)
  12. Python爬虫采集网易云音乐热评实战
  13. 一文看懂数字孪生,工信部权威白皮书
  14. Beyond Compare linux
  15. JS中国标准时间格式转换字符串
  16. T430系统盘迁移到SSD上的经验
  17. ms-sql数据类型和access数据类型大全
  18. EOJ 3344.送命题
  19. 【工具】windows--word转PDF
  20. 蓝牙突然消失,ubuntu连接音箱没有声音问题

热门文章

  1. ZIPF分布、PARETO分布和幂律分布
  2. RS485通讯协议的应用
  3. java堆栈方法区_java堆栈方法区详解
  4. 关于软件设计文档编写
  5. camera link
  6. linux版filezilla使用教程,FileZilla使用测评
  7. c语言怎么设置命令行字体大小,C语言入门教程-命令行参数
  8. Fluent动网格知识汇总
  9. php webqq登陆,Smart QQ——腾讯新一代网页版 WebQQ,更简洁纯粹的实用在线聊天工具!...
  10. 企业中常用的vlan划分方法