자바와 JDBC 연동 프로세스

2019. 6. 20. 19:05Java

728x90

package jdbc.test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class MainInsert {

public static void main(String[] args) { 

 


// 1. 드라이브 로딩

// 2. 커넥션 객체 생성
// 3. SQL 준비
// 4. 실행
// 5. 연결 종료 : 종료를 하지않으면 실행할때마다 실행객체가 생기고 또 생기고 또 생기고.. 컴퓨터가 힘들어함.

 

 

 

 

//1. 드라이브 로딩
Connection conn = null;

 

// Connection이란 무엇인지 궁금해할 수도 있지만 그것은 "캡슐"을 까서 약재 가루를 한알 한알 분석하려고 드는 꼴이니 그냥 느낌만 알고 넘어가기로 한다.



PreparedStatement psmt = null;
// sql문 전송하는 객체인 PreparedStatement 


String url = "jdbc:oracle:thin:@localhost:1521:xe";
String user = "hr";
String password = "hr";

//상기 3가지 내용만 바꾸면 어느 DB에서도 활용할 수 있다고 한다.


try {
// 클래스 명을 몰라도 클래스명.forName("드라이버 주소")를 입력하면 알 수 있다.
Class.forName("oracle.jdbc.driver.OracleDriver");

 

// try 블록 안의 코드들이 실행중에 오류가 난다면, catch 블록에서 그 오류를 잡을 수 있다.

 

 

 


// 2. 객체생성
conn = DriverManager.getConnection(url, user, password);
// Connection 객체를 연결


 

 


// 3 sql 준비
String sql = "insert into membership values(?,?,?,?)";

// membership 안에 values 데이터를 집어넣는다는 뜻

 


psmt = conn.prepareStatement(sql); 

// 괄호 안에 실행시키고 싶은 sql문 넣기. 상기의 sql 문이 psmt 라는 객체로 만들어졌다.

 


psmt.setString(1, "hhd"); // 몇번째 물음표에 어떤 값을 넣을 것인지 쓰는 것이다.
psmt.setString(2, "1234");
psmt.setString(3, "김멍충");
psmt.setInt(4, 1);

 

 

 

 

 

 


// 4 실행
int row = psmt.executeUpdate(); 

// select 할때는 executeQuery, 업데이트&인서트&딜리트는 executeUpdate를 쓴다.
System.out.println("DB에서 변화가 반영된 ROW 수 :" + row);
} catch (ClassNotFoundException e) { // ClassNotFoundException 클래스를 찾을 수 없을 때
// catch 블록에는 에러 발생시 사후 작업 코드를 입력한다.
e.printStackTrace();
} catch (SQLException e) {
//
e.printStackTrace();
}

 

 

 

 

 


// 5. 종료

finally {
try {
if (psmt != null)
psmt.close(); // psmt 가 열려있다면 닫아라.
if (conn != null)
conn.close(); // conn이 열려있다면 닫아라.
} catch (Exception e2) {

}
}

// try를 실행하다가 오류가 나면 오류지점 밑으로는 아예 실행이 안된다. 그래서 연결 종료가 안된다. 그래서 맨 마지막 finally 문에 연결종료 코드를 써준다.
// 연결을 닫을때는 가장 최근에 만들어진 것부터 닫아야 한다.

}

}

728x90
반응형