Computer >> 컴퓨터 >  >> 프로그램 작성 >> Android

JDBC에서 매개변수화된 일괄 업데이트란 무엇입니까? 예를 들어 설명?

<시간/>

INSERT 또는 UPDATE 또는 DELETE 명령 세트(업데이트 카운트 값 생성)를 그룹화하고 한 번에 실행하는 이 메커니즘을 일괄 업데이트라고 합니다.

일괄 업데이트를 사용하여 매개변수와 함께 쿼리를 전달하는 경우 이를 매개변수화된 일괄 업데이트라고 합니다.

일반적으로 일괄 업데이트를 수행하려면 addBatch()를 사용하여 필요한 모든 문을 추가해야 합니다. 메소드를 만들고 executeBatch()를 사용하여 실행합니다. 방법:

//Creating a Statement object
Statement stmt = con.createStatement();
//Setting auto-commit false
con.setAutoCommit(false);
//Adding the statements to batch
stmt.addBatch("INSERT INTO Sales VALUES ('KeyBoard', 'Amith', 'January', 1000, 'Hyderabad')");
stmt.addBatch("INSERT INTO Sales VALUES ('Earphones', 'SUMITH', 'March', 500, 'Vishakhapatnam')");
stmt.addBatch("INSERT INTO Sales VALUES ('Mouse', 'Sudha', 'September', 200, 'Vijayawada')");
//Executing the batch
stmt.executeBatch();

여기에서 위의 코드를 관찰하면 이 대신 명령문의 특정 부분을 배치에 계속해서 추가하고 있습니다. 준비된 명령문을 사용하고 자리 표시자와 전달 값이 있는 쿼리를 생성하는 매개변수화된 일괄 업데이트를 수행할 수 있습니다. setter 메서드를 사용하여 이러한 자리 표시자에.

값을 추가하는 동안 쿼리의 각 값 집합을 일괄 처리에 추가한 다음 한 번에 실행해야 합니다.

매개변수화된 일괄 업데이트 만들기

매개변수화된 일괄 업데이트를 생성하려면 자리 표시자가 있는 값을 삽입, 업데이트 또는 삭제하는 준비된 명령문을 생성해야 합니다.

setXXX() 문을 사용하여 매개변수인 자리 표시자에 값을 설정합니다. addbatch() 메서드를 사용하여 배치에 각 값 집합을 추가하고 마지막으로 executeBatch 메서드를 사용하여 배치를 실행합니다.

참고: 배치에 명령문을 추가하기 전에 con.setAutoCommit(false)를 사용하여 자동 커밋을 꺼야 합니다. 배치를 실행한 후 con.commit()을 사용하여 변경 사항을 저장해야 합니다. 방법.

예시

다음 설명을 사용하여 데이터베이스에 Sales라는 테이블을 생성했다고 가정합니다.

+-------------------+--------------+------+-----+---------+-------+
| Field             | Type         | Null | Key | Default | Extra |
+-------------------+--------------+------+-----+---------+-------+
| Product_Name      | varchar(255) | YES  |     | NULL    |       |
| Name_Of_Customer  | varchar(255) | YES  |     | NULL    |       |
| Month_Of_Dispatch | varchar(255) | YES  |     | NULL    |       |
| Price             | int(11)      | YES  |     | NULL    |       |
| Location          | varchar(255) | YES  |     | NULL    |       |
+-------------------+--------------+------+-----+---------+-------+

이 예는 매개변수화된 일괄 업데이트를 사용하여 위에서 언급한 테이블에 일련의 명령문을 삽입하려고 시도합니다.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.Statement;
public class ParameterizedBatchUpdate {
   public static void main(String args[])throws Exception {
      //Getting the connection
      String mysqlUrl = "jdbc:mysql://localhost/testDB";
      Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
      System.out.println("Connection established......");
      //Creating a Statement object
      Statement stmt = con.createStatement();
      //Setting auto-commit false
      con.setAutoCommit(false);
      PreparedStatement pstmt = con.prepareStatement("INSERT INTO Sales VALUES (?, ?, ?, ?, ?)");
      pstmt.setString(1, "KeyBoard");
      pstmt.setString(2, "Amith");
      pstmt.setString(3, "January");
      pstmt.setInt(4, 1000);
      pstmt.setString(5, "Hyderabad");
      pstmt.addBatch();

      pstmt.setString(1, "Earphones");
      pstmt.setString(2, "Sumith");
      pstmt.setString(3, "March");
      pstmt.setInt(4, 500);
      pstmt.setString(5, "Vishakhapatnam");
      pstmt.addBatch();

      pstmt.setString(1, "Mouse");
      pstmt.setString(2, "Sudha");
      pstmt.setString(3, "September");
      pstmt.setInt(4, 500);
      pstmt.setString(5, "Vishakhapatnam");
      pstmt.addBatch();

      //Executing the batch
      stmt.executeBatch();
      //Saving the changes
      con.commit();
      System.out.println("Records inserted......");
   }
}

출력

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