MySQL事务处理基础入门

1、mysql事务是什么?

事务,一般是指要做的或所做的事情。在计算机术语中是指访问并可能mysql数据库中各种数据项的一个程序执行单元(unit)。

2、mysql事务什么情况下使用?

   事物一般用在并发操作多张表的时候使用,用于保证用户的数据完整性~

3、mysql事务怎么用?

MYSQL的事务处理主要有两种方法
1.用begin,rollback,commit来实现
    begin开始一个事务
    rollback事务回滚
    commit 事务确认
2.直接用mysql来改变mysql的自动提交模式
    mysql默认是自动提交的,也就是你提交一个query,就直接执行!可以通过
    set autocommit = 0 禁止自动提交
    set autocommit = 1 开启自动提交
    来实现事务的处理。
但要注意当用set autocommit = 0 的时候,你以后所有的sql都将作为事务处理,直到你用commit确认或 rollback结束,注意当你结束这个事务的同时也开启了新的事务!按第一种方法只将当前的做为一个事务!

MYSQL只有 INNODB和BDB类型的数据表才支持事务处理,其他的类型是不支持的!

package shiwu;    import java.sql.Connection;  import java.sql.DriverManager;  import java.sql.PreparedStatement;  import java.sql.SQLException;    public class test {  	  	 public static void main(String[] args) {    	        Connection conn = null;    	        PreparedStatement ps1 = null;    	        PreparedStatement ps2 = null;    	        try {    	            //加载驱动类    	          /*  Class.forName("com.mysql.jdbc.Driver");    	            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","bjpowernode");  */  	        	  	        	 String myDriver="com.mysql.jdbc.Driver";  	             String url="jdbc:mysql://127.0.0.1:3306/test";  	             Class.forName(myDriver);  	               	             conn= DriverManager.getConnection(url,"root","bjpowernode");  	               	             // 将自动提交设置为 false,  	             //若设置为 true 则数据库将会把每一次数据更新认定为一个事务并自动提交  	             conn.setAutoCommit(false);  	                	                	            ps1 = conn.prepareStatement("insert into t_user (username,pwd) values (?,?)");//?是占位符    	            ps1.setObject(1, "张三");    	            ps1.setObject(2, "666666");    	            ps1.execute();    	            System.out.println("插入一个用户张三");    	                	            try {    	            	  // 发生异常,回滚在本事务中的操做  	                conn.rollback();  	                 // 事务回滚:转账的两步操作完全撤销  	                 conn.close();   	            	  	                Thread.sleep(3000);    	            } catch (InterruptedException e) {    	                e.printStackTrace();    	            }    	                	            ps2 = conn.prepareStatement("insert into t_user (username,pwd) values (?)");    	            ps2.setObject(1, "李四");    	            ps2.setObject(2, "123456");    	            ps2.execute();              	            System.out.println("插入一个用户李四");    	                	        //   conn.commit();//提交事务           	  	        } catch (ClassNotFoundException e) {    	            e.printStackTrace();    	            try {    	            } catch (Exception e1) {    	                e1.printStackTrace();    	            }    	        } catch (SQLException e) {    	            e.printStackTrace();    	        }finally{    	            try {    	                if(ps1!=null){    	                    ps1.close();    	                }    	            } catch (SQLException e) {    	                e.printStackTrace();    	            }    	            try {    	                if(conn!=null){    	                    conn.close();    	                }    	            } catch (SQLException e) {    	                e.printStackTrace();    	            }    	        }    	    }      }注意:需要引入mysql-connector-java-5.6-bin.jar

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享