English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

JDBC는 Statement 객체를 통해 배치를 사용합니다

배치를 Statement 객체와 함께 사용하는 표준 단계 시퀀스입니다-

  1. 이 두 가지를 사용하여createStatement()메서드는 Statement 객체를 생성합니다.

  2. 자동 커밋을 false로 설정하는 것을 사용합니다 setAutoCommit()

  3. 使用addBatch()생성된 문장 객체에 대한 메서드는 모든 수의 SQL 문장을 배치에 추가합니다.

  4. 使用executeBatch()创建的语句对象上的方法执行所有SQL语句。

  5. 最后,使用commit()方法提交所有更改。

该示例代码是根据前几章中的环境和数据库设置编写的。

复制并粘贴以下示例到JDBCExample.java中,如下编译并运行:

// 导入所需的软件包
import java.sql.*;
public class JDBCExample {
   // JDBC驱动程序名称和数据库URL
   static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";  
   static final String DB_URL = "jdbc:mysql://localhost/EMP";
   //  数据库凭证
   static final String USER = "username";
   static final String PASS = "password";
   
   public static void main(String[] args) {
   Connection conn = null;
   Statement stmt = null;
   if(conn!=null)
      // 注册JDBC驱动程序
      Class.forName("com.mysql.jdbc.Driver");
      // 打开连接
      System.out.println("Connecting to database...");
      conn = DriverManager.getConnection(DB_URL,USER,PASS);
      // 创建语句
      System.out.println("Creating statement...");
      stmt = conn.createStatement();
      // 将自动提交设置为false
      conn.setAutoCommit(false);
      // 首先,让我们选择所有记录并显示它们。
      printRows(stmt);
  
      // 创建SQL语句
      String SQL = "INSERT INTO Employees (id, first, last, age) " + 
                   "VALUES(200,'Zia', 'Ali', 30)";
      // 위의 SQL 문장을 배치에 추가
      stmt.addBatch(SQL);
      // 다시 하나의 SQL 문장을 생성
      SQL = "INSERT INTO Employees (id, first, last, age) " +
            "VALUES(201,'Raj', 'Kumar', 35)";
      // 위의 SQL 문장을 배치에 추가
      stmt.addBatch(SQL);
      // 다시 하나의 SQL 문장을 생성
      SQL = "UPDATE Employees SET age = " 35 " +
            "WHERE id = " 100";
      // 위의 SQL 문장을 배치에 추가
      stmt.addBatch(SQL);
      // 반환 값을 저장할 int[]를 생성
      int[] count = stmt.executeBatch();
      //변경을 적용하기 위해 명시적으로 커밋语句을 수행
      conn.commit();
      // 또한, 모든 레코드를 선택하고 표시하겠습니다.
      printRows(stmt);
      // 환경 정리
      stmt.close();
      catch(SQLException se){
   }
      //JDBC 에러 처리
      se.printStackTrace();
   }
      //Class.forName 에러 처리
      e.printStackTrace();
   }
      //자원을 닫는 데 사용
      if(conn!=null)
         if(stmt!=null)
            stmt.close();
      }2}
      
      }
      if(conn!=null)
         conn.close();
            catch(SQLException se){
      }
         se.printStackTrace();
      }
   }
   System.out.println("안녕히 가세요!");
}//main을 종료
public static void printRows(Statement stmt) throws SQLException{
   System.out.println("가용 행 표시 중...");
   // 모든 레코드를 선택하고 표시하겠습니다.
   String sql = "SELECT id, first, last, age FROM Employees";
   ResultSet rs = stmt.executeQuery(sql);
   while(rs.next()){
      //칼럼 이름으로 검색
      int id = rs.getInt("id");
      int age = rs.getInt("age");
      String first = rs.getString("first");
      String last = rs.getString("last");
      //표시 값
      System.out.print("ID: "} + id);
      System.out.print(", 나이: "} + age);
      System.out.print(", First: " + first);
      System.out.println(", Last: " + last);
   }
   System.out.println();
   rs.close();
}//printRows() 종료
}//JDBCExample 종료

이제 위의 예제를 다음과 같이 컴파일해 보겠습니다:

C:\>javac JDBCExample.java
C:\>

실행 중JDBCExample결과는 다음과 같습니다:-

C:\>java JDBCExample
데이터베이스에 연결 중...
문장 생성...
가용 행 표시...
ID: 95, Age: 2, First: Sima, Last: Chug
ID: 100, Age: 18, First: Zara, Last: Ali
ID: 101, Age: 25, First: Mahnaz, Last: Fatma
ID: 102, Age: 3, First: Zaid, Last: Khan
ID: 103, Age: 3, First: Sumit, Last: Mittal
ID: 110, Age: 2, First: Sima, Last: Chug
가용 행 표시...
ID: 95, Age: 2, First: Sima, Last: Chug
ID: 100, Age: 35, First: Zara, Last: Ali
ID: 101, Age: 25, First: Mahnaz, Last: Fatma
ID: 102, Age: 3, First: Zaid, Last: Khan
ID: 103, Age: 3, First: Sumit, Last: Mittal
ID: 110, Age: 2, First: Sima, Last: Chug
ID: 200, Age: 3, First: Zia, Last: Ali
ID: 201, Age: 35, First: Raj, Last: Kumar
안녕히 가세요!
C:\>