01.JAVA/Java2009. 1. 30. 10:50
반응형

정적 쿼리와 동적 쿼리는 저도 이번에 공부하면서 처음 알게된 것인데 (;;)
사실 닷넷 프레임워크 공부할 때 계속 동적 쿼리를 사용한 것 같군요.
하지만 이게 동적 쿼리인지는 몰랐답니다. 컥 ;;

정적 쿼리 방식 : 변수가 바뀔 때마다 새로운 SQL 을 생성 하여 DB쿼리 수행
동적 쿼리 방식 : 변수가 바뀔 때마다 파싱을 하지 않고 변수 바인딩 과정을 통해 DB 쿼리 수행

insert into person values (null, '홍길동', '888888-1111111', '2002-02-02');
이것이 정적 쿼리입니다.

insert into person values (null, ?, ?, ?);
쿼리문을 이런 식으로 해놓고 ? 부분을 변수 바인딩을 통해 입력받는 것을 동적 쿼리라고 합니다.

정적 쿼리와 동적 쿼리는 각각 장단점이 있습니다.

동적 쿼리문을 사용한 간단한 예제를 보겠습니다.

  1. import java.sql.*;  
  2. import java.util.*;  
  3.  
  4. public class Exam_04  
  5. {  
  6.     public static void main(String[] ar)  
  7.     {  
  8.         try 
  9.         {  
  10.             Class.forName("com.mysql.jdbc.Driver");  
  11.         }  
  12.         catch( ClassNotFoundException e ) {}  
  13.           
  14.         Connection conn = null;  
  15.         Statement stmt = null;  
  16.         PreparedStatement pstmt = null;  
  17.         ResultSet rs = null;      
  18.           
  19.         String name = "fff";  
  20.         String jumin = "555555-5555555";  
  21.         String birth = "2003-06-15";  
  22.           
  23.         String query = "insert into person values (null, ?, ?, now())";  
  24.           
  25.         try 
  26.         {  
  27.             conn = DriverManager.getConnection("jdbc:mysql://localhost/java", "root", "abc123");  
  28.             //stmt = conn.createStatement();              
  29.             //stmt.executeUpdate(query);  
  30.             //stmt.close();  
  31.             pstmt = conn.prepareStatement(query);  
  32.             pstmt.setString(1, name);  
  33.             pstmt.setString(2, jumin);  
  34.             pstmt.executeUpdate();  
  35.             conn.close();  
  36.             System.out.println("업데이트 성공");  
  37.         }  
  38.         catch( SQLException e )  
  39.         {  
  40.             System.err.println("error = " + e);  
  41.         }  
  42.     }  
  43. }  
사용자 삽입 이미지
Posted by 1010