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

JDBC 업데이트 결과 집합 예제

아래는 Result Set 강의에서 설명된ResultSet.CONCUR_UPDATABLEResultSet.TYPE_SCROLL_INSENSITIVE예제. 이 예제는 테이블에 INSERT, UPDATE 및 DELETE 작업에 대해 설명합니다.

주의해야 할 것은, 처리하는 테이블이 올바르게 주키가 설정되어 있다는 것입니다.

이 예제 코드는 전장의 환경과 데이터베이스 설정에 따라 작성되었습니다.

아래 예제 코드를 JDBCExample.java에 복사하고 붙여넣어, 다음과 같이 컴파일하고 실행하세요:

//단계1.필요한 소프트웨어 패키지를 가져오기
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;
   try{
      //단계2JDBC 드라이버 등록
      Class.forName("com.mysql.jdbc.Driver");
      //단계3:建立连接
      System.out.println("Connecting to database...");
      conn = DriverManager.getConnection(DB_URL,USER,PASS);
      //단계4:执行查询以创建陈述
      // RS示例的必需参数。
      System.out.println("Creating statement...");
      Statement stmt = conn.createStatement(
                           ResultSet.TYPE_SCROLL_INSENSITIVE,
                           ResultSet.CONCUR_UPDATABLE);
     //단계5:执行查询
      String sql = "SELECT id, first, last, age FROM Employees";
      ResultSet rs = stmt.executeQuery(sql);
      System.out.println("List result set for reference....");
      printRs(rs);
      //단계6:循环浏览结果集,并增加5个年龄
      //移至BFR位置,以便while循环正常工作
      rs.beforeFirst();
      //단계7:从结果集中提取数据
      while(rs.next()){
         //칼럼 이름으로 검색
         int newAge = rs.getInt("age") + 5;
         rs.updateDouble( "age", newAge );
         rs.updateRow();
      }
      System.out.println("List result set showing new ages...");
      printRs(rs);
      // 在表中插入一条记录。
      //移动以使用updateXXX()插入行并添加列数据
      System.out.println("Inserting a new record...");
      rs.moveToInsertRow();
      rs.updateInt("id",104);
      rs.updateString("first","John");
      rs.updateString("last","Paul");
      rs.updateInt("age",40);
      //提交行
      rs.insertRow();
      System.out.println("List result set showing new set...");
      printRs(rs);
      
      // 테이블에서 두 번째 기록을 제거합니다。
      // 먼저 두 번째 기록의 위치를 설정합니다
      rs.absolute( 2 );
      System.out.println("List the record before deleting...");
      //칼럼 이름으로 검색
      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: " + age);
      System.out.print(", First: " + first);
      System.out.println(", Last: " + last);
     //행을 제거합니다
      rs.deleteRow();
      System.out.println("List result set after \
                deleting one records...";
      printRs(rs);
      //단계8:환경을 정리합니다
      stmt.close();
      JDBC 오류를 처리합니다
      conn.close();
   }
      //catch(Exception e){
      se.printStackTrace();
   }
      //e.printStackTrace();
      finally{
   }
      //자원을 닫는 데 사용됩니다
      try{
         if(conn!=null)
            conn.close();
      }
         se.printStackTrace();
      }
   }
   System.out.println("Goodbye!");
}//main을 종료합니다
   public static void printRs(ResultSet rs) throws SQLException{
      //우리가 첫 번째 행에서 시작하도록 확인합니다
      rs.beforeFirst();
      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: " + age);
         System.out.print(", First: " + first);
         System.out.println(", Last: " + last);
     }
     System.out.println();
   }//printRs()를 종료합니다
}//JDBCExample을 종료합니다

지금 우리는 위의 예제를 컴파일해 보겠습니다:

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

실행 중JDBCExample그럼 다음과 같은 결과가 생성됩니다-

C:\>java JDBCExample
데이터베이스에 연결 중...
문장 생성 중...
참조를 위해 결과 집합을 보여줍니다....
ID: 100, Age: 33, First: Zara, Last: Ali
ID: 101, Age: 40, First: Mahnaz, Last: Fatma
ID: 102, Age: 50, First: Zaid, Last: Khan
ID: 103, Age: 45, First: Sumit, Last: Mittal
새 연령을 보여주는 결과 집합을 보여줍니다...
ID: 100, Age: 38, First: Zara, Last: Ali
ID: 101, Age: 45, First: Mahnaz, Last: Fatma
ID: 102, Age: 55, First: Zaid, Last: Khan
ID: 103, Age: 50, First: Sumit, Last: Mittal
새 레코드를 삽입합니다...
새로운 집합을 보여주는 결과 집합을 보여줍니다...
ID: 100, Age: 38, First: Zara, Last: Ali
ID: 101, Age: 45, First: Mahnaz, Last: Fatma
ID: 102, Age: 55, First: Zaid, Last: Khan
ID: 103, Age: 50, First: Sumit, Last: Mittal
ID: 104, Age: 40, First: John, Last: Paul
제거 전 레코드를 보여줍니다...
ID: 101, Age: 45, First: Mahnaz, Last: Fatma
한 개의 레코드를 제거한 후 결과 집합을 보여줍니다...
ID: 100, Age: 38, First: Zara, Last: Ali
ID: 102, Age: 55, First: Zaid, Last: Khan
ID: 103, Age: 50, First: Sumit, Last: Mittal
ID: 104, Age: 40, First: John, Last: Paul
안녕히 가세요!
C:\>