zoukankan      html  css  js  c++  java
  • [Js-JDBC]事务

    JDBC事务

     1 package com.neu.jdbc;
     2 
     3 import java.sql.Connection;
     4 import java.sql.DriverManager;
     5 import java.sql.PreparedStatement;
     6 import java.sql.SQLException;
     7 
     8 /**
     9  * 关于JDBC的事务 1、JDBC 默认情况下,事务是自动提交的:即在 JDBC 中执行一条 DML语句就执行一条 ,这种显然是不符合现实的业务逻辑的
    10  * 2、什么是自动提交?怎么理解自动提交? 
    11  *         在JDBC中只有执行一次DML语句,就提交一次。
    12  * 3、怎么避免自动提交?怎么改成手动提交?
    13  *         显然在现实的业务逻辑下,一个完整的事务时需要多条DML共同完成的 
    14  *        需要将自动提交机制关闭,修改成手动提交 当一个事务真正结束的时候提交 
    15  * 4、什么时候回滚?
    16  *         若执行过程中任何一步出现异常,应当回滚
    17  * 5、JDBC事务代码总结:
    18  *         conn.setAutoCommit(false);
    19  *         ……
    20  *         ……
    21  *         conn.commit();
    22  *         ……
    23  *         conn.rollback();
    24  * 
    25  * @author imsha
    26  *
    27  */
    28 public class JDBCTest09 {
    29     public static void main(String[] args) {
    30         Connection conn = null;
    31         PreparedStatement ps = null;
    32 
    33         try {
    34             // 注册驱动
    35             Class.forName("com.mysql.jdbc.Driver");
    36             // 获取连接对象
    37             conn = DriverManager.getConnection("jdbc:mysql://localhost:3366/bjpowernode", "root", "123");
    38 
    39             // 开启事务
    40             // 关闭自动提交机制
    41             conn.setAutoCommit(false);// 不再支持自动提交
    42 
    43             // 获取数据库操作对象
    44             String sql = "insert into dept(deptno,dname,loc) values (?,?,?)";
    45             ps = conn.prepareStatement(sql);
    46             ps.setInt(1, 60);
    47             ps.setString(2, "市场部");
    48             ps.setString(3, "北京");
    49             // 执行SQL语句
    50             int count = ps.executeUpdate(sql);
    51 
    52             // 重新给?赋值
    53             ps.setInt(1, 60);
    54             ps.setString(2, "市场部");
    55             ps.setString(3, "北京");
    56             count += ps.executeUpdate(sql);
    57             System.out.println(count);
    58 
    59             // 事务执行到此处,表示执行完成,应当手动提交
    60             conn.commit();
    61 
    62         } catch (Exception e) {
    63             //若在以上事务执行过程中发生异常,则回滚
    64             if (conn != null) {
    65                 try {
    66                     conn.rollback();
    67                 } catch (SQLException e1) {
    68                     e1.printStackTrace();
    69                 }
    70             }
    71             e.printStackTrace();
    72         } finally {
    73             // 关闭资源
    74             if (conn != null) {
    75                 try {
    76                     conn.close();
    77                 } catch (SQLException e) {
    78                     e.printStackTrace();
    79                 }
    80             }
    81             if (ps != null) {
    82                 try {
    83                     ps.close();
    84                 } catch (SQLException e) {
    85                     e.printStackTrace();
    86                 }
    87             }
    88         }
    89     }
    90 }
  • 相关阅读:
    ubuntu下环境变量
    Linux/Unix里,ln -s
    ubuntu安装和查看已安装
    Android系统中 setprop,getprop,watchprops命令的使用
    js中Math.random()生成指定范围数值的随机数
    mysql下sql语句 update 字段=字段+字符串
    铁道部2012年版全国72个铁路枢纽城市
    phprpc 使用实例(例实没错却不能执行)函数冲突gzdecode
    电脑开机一直蓝屏,一直重启要怎么办?
    电脑重装系统重装不了,老是蓝屏,是不是硬盘烧坏了!
  • 原文地址:https://www.cnblogs.com/jiasq/p/8531775.html
Copyright © 2011-2022 走看看