Computer >> Máy Tính >  >> Lập trình >> MySQL

Việc sử dụng phương thức setAutoCommit () trong JDBC là gì?

Nếu bạn cam kết một cơ sở dữ liệu, nó sẽ lưu tất cả các thay đổi đã được thực hiện cho đến thời điểm cụ thể đó.

Bạn có thể xác nhận một cơ sở dữ liệu bằng cách sử dụng commit () phương pháp. Bất cứ khi nào xảy ra bất kỳ sự cố nào, bạn có thể hoàn nguyên cơ sở dữ liệu về thời điểm này bằng cách sử dụng rollback () phương pháp. Theo mặc định, một số cơ sở dữ liệu cam kết cơ sở dữ liệu tự động. Tuy nhiên, trong khi quản lý các giao dịch, bạn cần phải xác nhận cơ sở dữ liệu theo cách thủ công.

Trong trường hợp này, bạn có thể sử dụng phương thức setAutoCommit (). Phương thức này thuộc về giao diện Kết nối và nó chấp nhận một giá trị boolean.

Nếu bạn chuyển true cho phương thức này, nó sẽ bật tính năng tự động cam kết của cơ sở dữ liệu và nếu bạn chuyển false cho phương thức này, nó sẽ tắt tính năng tự động cam kết của cơ sở dữ liệu.

Bạn có thể bật tính năng cam kết tự động của cơ sở dữ liệu bằng cách sử dụng phương pháp này như:

Con.setAutoCommit(false);

Ví dụ

Chương trình sau sẽ chèn dữ liệu vào bảng này bằng cách sử dụng xử lý hàng loạt. Ở đây chúng tôi đặt tự động cam kết sai, thêm các câu lệnh bắt buộc vào một lô, thực thi lô và sau đó cam kết cơ sở dữ liệu của riêng chúng tôi.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class BatchProcessing_Statement {
   public static void main(String args[])throws Exception {
      //Getting the connection
      String mysqlUrl = "jdbc:mysql://localhost/sampleDB";
      Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
      System.out.println("Connection established......");
      //CREATE TABLE Dispatches( Product_Name VARCHAR(255), Name_Of_Customer
      VARCHAR(255), Month_Of_Dispatch VARCHAR(255), Price INT, Location VARCHAR(255));
      //Creating a Statement object
      Statement stmt = con.createStatement();
      //Setting auto-commit false
      con.setAutoCommit(false);
      //Statements to insert records
      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')";
      //Adding the statements to the batch
      stmt.addBatch(insert1);
      stmt.addBatch(insert2);
      stmt.addBatch(insert3);
      //Executing the batch
      stmt.executeBatch();
      //Saving the changes
      con.commit();
      System.out.println("Records inserted......");
   }
}

Đầu ra

Connection established......
Records inserted......