웹개발 교육/Java

[39일] JDBC (6) - 변수를 이용한 테이블 행 추가

ewok 2022. 9. 21. 17:29

앞서 우리는 아래와 같이 값을 직접 입력하여 행을 추가하였다.

sql.append(" VALUES (sungjuk_seq.nextval, '손흥민', 99, 98, 97, 'Seoul', sysdate)");

하지만 직접 값을 입력하는 대신 변수를 사용하여 입력하도록 만들면 보다 효율적일 것이다.

 

package jdbc0921;

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

public class Test05_insert {

	public static void main(String[] args) {
		// 변수를 이용해서 sungjuk 테이블 행 추가 연습
		
		try {
			String url = "jdbc:oracle:thin:@localhost:1521:xe";  //127.0.0.1
			String user = "system";
			String password = "1234";
			String driver = "oracle.jdbc.driver.OracleDriver";  //ojdbc8.jar
			Class.forName(driver);
			Connection con = DriverManager.getConnection(url, user, password);			
			System.out.println("오라클 DB 서버 연결 성공!!");
			
			String name = "박지성";
			int kor = 99, eng = 98, mat = 100;
			String addr = "Seoul";
			
			StringBuilder sql = new StringBuilder();
			sql.append(" INSERT INTO sungjuk(sno, uname, kor, eng, mat, addr, wdate) ");
			sql.append(" VALUES (sungjuk_seq.nextval, ?, ?, ?, ?, ?, sysdate) ");
			//-> ? 특정값으로 대입할 수 있는 표식
									
			PreparedStatement pstmt = con.prepareStatement(sql.toString());
			//-> ?의 갯수, 순서, 자료형이 일치해야 한다
			pstmt.setString(1, name);  //1 -> 첫 번째 물음표, uname칼럼
			pstmt.setInt(2, kor);      //2 -> 두 번째 물음표, kor칼럼
			pstmt.setInt(3, eng);      //3 -> 세 번째 물음표, eng칼럼
			pstmt.setInt(4, mat);      //4 -> 네 번째 물음표, mat칼럼
			pstmt.setString(5, addr);  //5 -> 다섯 번째 물음표, addr칼럼
			
			int cnt = pstmt.executeUpdate();
			if(cnt==0) {
				System.out.println("행 추가 실패!!");
			} else {
				System.out.println("행 추가 성공~~");
			}//if end

			pstmt.close();
			con.close();
			
		} catch (Exception e) {
			System.out.println("실패 : " + e);
		}//end

	}//main() end
}//class end