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();
}
}
}
}