数据库事务 oracle java

===oracle 表sql

sql 复制代码
  CREATE TABLE "SMALL19RAIN"."R_TABLE_STU" 
   (	"NAME" VARCHAR2(200 BYTE), 
	"AGE" NUMBER, 
	"STU_ID" NUMBER NOT NULL ENABLE, 
	"DATARAIN" VARCHAR2(200 BYTE)
   ) SEGMENT CREATION IMMEDIATE 
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 
 NOCOMPRESS LOGGING
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "SMALLRAIN19TABLESPACE" ;

======java文件

java 复制代码
package org.rain.db;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Savepoint;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

/**
 * 数据库事务
 */
public class SmallRainDBTranscation {

	public static void main(String[] args) {

		Connection smallrainConn = null;
		Statement smallrainStmt = null;
		Savepoint smallRainSavaPoint = null;
		PreparedStatement smallrainEditDB = null;
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
			smallrainConn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "smallrain123456789",
					"Xiaoyu123456789");
			//下面一行设置为true,第一个for循环会提交
			smallrainConn.setAutoCommit(false);

			smallrainStmt = smallrainConn.createStatement();
			int smallrainInsertId = 30;
			for (; smallrainInsertId < 50; smallrainInsertId++) {

				smallrainEditDB = smallrainConn
						.prepareStatement("INSERT INTO r_table_stu(STU_ID,NAME, DATARAIN) VALUES(?,?,?) ");
				smallrainEditDB.setObject(1, smallrainInsertId);
				smallrainEditDB.setObject(2, "data中文" + smallrainInsertId);
				smallrainEditDB.setObject(3, "数据data中文" + smallrainInsertId);
				smallrainEditDB.executeUpdate();
			}

			int smallrainInsertErrorId = 3;
			for (; smallrainInsertErrorId < 6; smallrainInsertErrorId++) {

				smallrainEditDB = smallrainConn
						.prepareStatement("INSERT INTO r_table_stu(STU_ID,NAME, DATARAIN) VALUES(?,?,?) ");
				smallrainEditDB.setObject(1, "数字类型为字符串报错");
				smallrainEditDB.setObject(2, "error中文" + smallrainInsertId);
				smallrainEditDB.setObject(3, "errordata中文" + smallrainInsertId);
				smallrainEditDB.executeUpdate();
			}

		} catch (Exception e) {
			try {
				smallrainConn.rollback();
				System.out.println("事务回滚");
			} catch (Exception ein) {

				e.printStackTrace();
			}
		} finally {
			if (null != smallrainEditDB) {
				try {
					smallrainEditDB.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
			if (null != smallrainStmt) {
				try {
					smallrainStmt.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
			if (null != smallrainConn) {
				try {

					smallrainConn.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}

		}
	}

}
相关推荐
從南走到北20 小时前
JAVA国际版打车APP打车顺风车滴滴车跑腿APP源码Android+IOS+H5
android·java·ios
Java天梯之路20 小时前
如何接收前端参数
java·后端
独自破碎E20 小时前
从括号匹配到字符串解码:递归思想的巧妙应用
android·java·开发语言
面向星辰20 小时前
sql基本增删改查语句汇总
数据库·sql·mybatis
忧郁的橙子.20 小时前
二、Rabbit MQ 高级
java·开发语言
一氧化二氢.h21 小时前
MySQL root用户连接错误解决方法
android·数据库·mysql
Chan1621 小时前
【 Java八股文面试 | JVM篇 内存结构、类加载、垃圾回收与性能调优 】
java·jvm·spring boot·后端·spring·idea
q***239221 小时前
数据库操作与数据管理——Rust 与 SQLite 的集成
数据库·rust·sqlite
q***333721 小时前
给SQL server数据库表字段添加注释SQL,附修改、删除注释SQL及演示
数据库·sql·oracle
百锦再21 小时前
第15章 并发编程
android·java·开发语言·python·rust·django·go