JDBC中setAutoCommit()方法有什么用?
如果您提交一个数据库,它会保存在该特定点之前所做的所有更改。
您可以使用该commit()方法提交数据库。无论何时发生任何问题,您都可以使用该rollback()方法将数据库恢复到这一点。默认情况下,某些数据库会自动提交数据库。但是,在管理事务时,您需要手动提交数据库。
在这种情况下,您可以使用该setAutoCommit()方法。这个方法属于Connection接口,它接受一个布尔值。
如果您将true传递给此方法,它将打开数据库的自动提交功能,如果您将false传递给此方法,它将关闭数据库的自动提交功能。
您可以使用此方法关闭数据库的自动提交功能:
Con.setAutoCommit(false);
例子
以下程序使用批处理将数据插入到该表中。这里我们将自动提交设置为false,将所需的语句添加到批处理中,执行批处理,然后我们自己提交数据库。
import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; public class BatchProcessing_Statement { public static void main(String args[])throws Exception { //获取连接 String mysqlUrl = "jdbc:mysql://localhost/sampleDB"; Connection con = DriverManager.getConnection(mysqlUrl, "root", "password"); System.out.println("连接已建立......"); //CREATETABLEDispatches(Product_NameVARCHAR(255),Name_Of_Customer VARCHAR(255), Month_Of_Dispatch VARCHAR(255), Price INT, Location VARCHAR(255)); //创建Statement对象 Statement stmt = con.createStatement(); //设置自动提交false con.setAutoCommit(false); //插入记录的语句 String insert1 = "INSERT INTO Dispatches( Product_Name , Name_Of_Customer , " + "Month_Of_Dispatch , Price, Location) VALUES " + "('KeyBoard', 'Amith', 'January', 1000, 'hyderabad')"; String insert2 = "INSERT INTO Dispatches( Product_Name , Name_Of_Customer , " + "Month_Of_Dispatch , Price, Location) VALUES " + "('Earphones', 'SUMITH', 'March', 500, 'Vishakhapatnam')"; String insert3 = "INSERT INTO Dispatches( Product_Name , Name_Of_Customer , " + "Month_Of_Dispatch , Price, Location) VALUES " + "('Mouse', 'Sudha', 'September', 200, 'Vijayawada')"; //将语句添加到批处理中 stmt.addBatch(insert1); stmt.addBatch(insert2); stmt.addBatch(insert3); //执行批处理 stmt.executeBatch(); //保存更改 con.commit(); System.out.println("记录插入......"); } }
输出
连接已建立...... 记录插入......