package ch02_insert;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.util.Scanner;
/*
* # JDBC 절차
* 1. DriverManager 에 해당 DBMS Driver 등록
* 2. Driver로 부터 Connection instance 획득
* 3. Connection 객체의 PreparedStatement() 메서드 사용해서 PreparedStatement 객체 생성
* - 해당 인수 데이터에 대해 위치홀더(?)를 사용해서 SQL 문장을 정의.
* 4. 쿼리 실행 결과.
*
* # PreparedStatement : java.sql.PreparedStatement → String sql의 쿼리를 실행해줌.
* - 쿼리 실행을 위한 class
* - 쿼리 실행 메서드
* > int executeUpdate() : insert, delete, update 문을 실행해서 성공한 행의 수를 반환.
* ResultSet executeQuery() : select 문을 실행한 결과의 테이블 내용을 Resultset에 담아서 반환.
*/
class Insert {
// 연결 정보
private String url = "jdbc:oracle:thin:@localhost:1521:xe";
private String id = "DBTEST";
private String pw = "a1234";
public Insert() {
// jdbc 드라이버 할당.
try {
Class.forName("oracle.jdbc.OracleDriver");
System.out.println("로딩 성공...");
} catch (Exception e) {
System.out.println("로딩 실패...");
e.printStackTrace();
}
} // Insert() end
public Connection getConnection() {
Connection con = null;
try {
// DB연결 객체 생성 -> getConnection : connection 객체 생성
con = DriverManager.getConnection(url,id,pw);
System.out.println("연결 성공...");
} catch (Exception e) {
System.out.println("연결 실패...");
e.printStackTrace();
}
return con;
} // getConnection() end
// 회원 추가
public void insertArticle() {
Scanner sc = new Scanner(System.in);
System.out.print("이름 입력 > ");
String name = sc.next();
System.out.print("나이 입력 > ");
int age = sc.nextInt();
System.out.print("키 입력 > ");
double height = sc.nextDouble();
Connection con = null;
PreparedStatement pstmt = null;
int res = 0;
try {
// 질의 문자열
String sql = "insert into member values(?,?,?,sysdate)"; // ?:데이터 위치 지정. SQL INJECTION 보안 문제 때문에, 나중에 완성해서 DB에 처리.
con = getConnection(); // connection 객체 생성
pstmt = con.prepareStatement(sql); // 쿼리문 실행 객체 생성
pstmt.setString(1, name); // 쿼리문완성 1
pstmt.setInt(2, age); // 쿼리문완성 2
pstmt.setDouble(3, height); // 쿼리문완성 3
res = pstmt.executeUpdate(); // 쿼리문실행 = 성공한 행의 수 반환
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if(pstmt!=null) pstmt.close();
if(con!=null) con.close();
if(sc!=null) sc.close();
} catch (Exception e) {
e.printStackTrace();
}
}
System.out.println(res + "개의 행이 추가되었습니다.");
} // insertArticle() end
}
public class InsertTest {
public static void main(String[] args) {
Insert data = new Insert();
data.insertArticle();
}
}