package ch22;

import java.sql.*;

public class Ch2202
{
 public static void main(String[] args)
 {
  //CreateStatement와 PreparedStatement
  //두가지 방식중 실제로 속도가 빠른쪽 및 자원 재사용이
  //가능한쪽은 PreparedStatement이다
  //
  //1) select문이 아닌 SQL을 실행하는 방식
  //-->ResultSet이 필요없다.
  //-->executeUpdate()메서드를 사용
  //
  Connection conn = null;
  PreparedStatement pstmt=null;
  //1.JDBC드라이버를 읽어들인다.
  try
  {
   Class.forName("oracle.jdbc.driver.OracleDriver");
   //2. Connection개체를 얻어온다.
   String oUrl = "jdbc:oracle:thin:@localhost:1521:ORCL";
   conn = DriverManager.getConnection(oUrl, "jsp", "jsp");
   oUrl ="";

   String id="admin";
   String name="name";
   String pwd="pwd";
   String email="email";
   
   //3. 실행할 SQL문을 정의
   /*String sql = "insert into admin(id, name, pwd, email) values ("+
   "?,?,?,?)";*/
   String sql = String.format("insert into admin(id, name, pwd, email) values "
     +"('%s','%s','%s','%s')",id, name, pwd, email);
   
   //4. PreparedStatement에 실행할 SQL을 등록한다.
   pstmt = conn.prepareStatement(sql);
   
  /* //첫번째 물음표의 영역에 문자열 "admin"을 대입
   pstmt.setString(1, "admin");
   pstmt.setString(2, "관리자");
   pstmt.setString(3, "1111");
   pstmt.setString(4, "a@a.com");*/
   
   //5. SQL의 실행 : executeUpdate()는
   //SQL의 실행결과 영향받은 행의 수를 숫자를 반환.
   int rows = pstmt.executeUpdate();
   System.out.println(rows+"개행이 추가되었습니다.");
  }
  catch (ClassNotFoundException e)
  {
   // TODO 자동 생성된 catch 블록
   e.printStackTrace();
  }
  catch (SQLException e)
  {
   // TODO 자동 생성된 catch 블록
   e.printStackTrace();
  }
  finally
  {
   //SQL실행시 오류가 나든 안나든 실행되는 부분
   //사용된 자원을 반납
   try
   {
    pstmt.close();
    conn.close();
   }
   catch (SQLException e)
   {
    // TODO 자동 생성된 catch 블록
    e.printStackTrace();
   }
  }
 }
}

Posted by 말없제이
,