用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - java代码库

数据库事务处理

2017-12-23 作者: 柯侧耳倾听者举报

[java]代码库

package mysql2;
 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
 
public class TestCommit {
    private static  Connection con = null;
    private static ResultSet result=null;
    private static PreparedStatement pre =null;
     
    public static void main(String[] args) {
        //1.加载数据库驱动
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            System.out.println("加载失败!");
            e.printStackTrace();
        }
        System.out.println("加载成功!");
     
        //2.连接数据库
        try {
            con=DriverManager.getConnection("jdbc:mysql://localhost:3306/db_library", "root", "123");
        } catch (SQLException e) {
            System.out.println("连接数据库失败!");
            e.printStackTrace();
        }
          System.out.println("成功连接数据库!");
           
           
        //3.执行sql语句语句的PreparedStatement,然后执行sql语句
          /*
           * update useraccount set totalmoney=totalmoney-1000 where name='李四'
           * update useraccount set totalmoney=totalmoney+1000 where name='王二'
           */
       
        /*try {
            String name1="李四";
            pre=con.prepareStatement("update useraccount set totalmoney=totalmoney-1000 where name=?");
            pre.setString(1, name1);
            int result =pre.executeUpdate();
            System.out.println(result);
        } catch (SQLException e1) {
            e1.printStackTrace();
        }
         
         
         
          //模拟数据库出现故障:死机、服务器出现问题,是认为控制不了的
          
         
           Integer.parseInt("kbq");//无法将kbq转成整数,肯定会报错
         
 
            try {
                String name2="王二";
                pre=con.prepareStatement("update useraccount set totalmoney=totalmoney+1000 where name=?");
                pre.setString(1, name2);
                int result = pre.executeUpdate();
                System.out.println(result);
            } catch (SQLException e1) {
                e1.printStackTrace();
            }*/
             
            try{
                //设置手工提交
                con.setAutoCommit(false);
                String name1="李四";
                pre=con.prepareStatement("update useraccount set totalmoney=totalmoney-1000 where name=?");
                pre.setString(1, name1);
                int result =pre.executeUpdate();
                System.out.println(result);
         
               //模拟数据库出现故障:死机、服务器出现问题,是认为控制不了的
                 Integer.parseInt("kbq");//无法将kbq转成整数,肯定会报错
             
                    String name2="王二";
                    pre=con.prepareStatement("update useraccount set totalmoney=totalmoney+1000 where name=?");
                    pre.setString(1, name2);
                    int result1 = pre.executeUpdate();
                    System.out.println(result1);
                    //提交事务
                    con.commit();
            }catch (SQLException e1) {
                try {
                    con.rollback();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                e1.printStackTrace();  
            }
                   
               
              //4.释放数据库的资源
              finally{
                  try {
                      if(result!=null)
                      result.close();
                      if(pre!=null)
                      pre.close();
                      if(con!=null)
                      con.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
              }
               
              System.out.println("执行成功!");
 
    
 
}


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...