JDBC(pstmt이용한 가입 insert)

밍숫가루·2024년 3월 27일

createStatement()와 prepareStatement()는 JDBC(Java Database Connectivity)에서 SQL 문을 실행하는 데 사용되는 두 가지 메서드다

PrepareStatement()이용하기

이전은
createStatement()를 이용했었는데 prepareStatement()를 사용하여 가입을 해보자

createStatement()를 이용할 경우

파라미터화된(prepared) 문을 사용하지 않기 때문에 동일한 쿼리를 여러 번 실행할 경우 성능이 저하될 수 있다.
매번 새로운 쿼리를 실행하므로 데이터베이스가 매번 새로운 쿼리를 컴파일해야 한다.

PrepareStatement() 사용해야 하는 이유

데이터베이스에 대한 SQL 쿼리를 실행하기 전에 준비된(prepared) 상태로 만들어주는 역할을 한다.
일반적으로 SQL 쿼리에는 사용자가 제공한 데이터(예: 사용자 입력)를 포함해야 하는 경우가 많습니다. 이러한 경우에는 보안 및 성능상의 이유로 사용자가 입력한 데이터를 직접 SQL 쿼리에 삽입하는 것보다는 파라미터화된(prepared) 문을 사용하는 것이 좋습니다.

package main;

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

public class JoinMain {

	public static void main(String[] args) throws Exception{
	System.out.println("========JDBC (pstmt)===========");
	//JDBC 드라이버 로딩
	String driver="oracle.jdbc.driver.OracleDriver";	
	Class.forName(driver);
	
	//데이터베이스 연결 정보 준비
	String url="jdbc:oracle:thin:@localhost:1521:xe";
	String id="C##KH";
	String pwd="1234";
	
	//데이터베이스 연결 == 커넥션 객체 얻기
	Connection conn=DriverManager.getConnection(url,id,pwd);
	
	
	//유저 입력받기
	Scanner sc=new Scanner(System.in);
	System.out.print("아이디: ");
	String inputId=sc.nextLine();
	System.out.print("비번: ");
	String inputPwd=sc.nextLine();
	System.out.print("닉네임: ");
	String inputNick=sc.nextLine();
	
	
	//SQL 준비
	String sql ="INSERT INTO MEMBER(ID,PWD,NICK) VALUES(?,?,?)";
	
	//SQL 실행을 위한 statement 준비 및 쿼리 완성(==물음표 채우기)
	PreparedStatement pstmt= conn.prepareStatement(sql);
	pstmt.setString(1,inputId);
	pstmt.setString(2,inputPwd);
	pstmt.setString(3,inputNick);
	//statement 에 SQL 담아주고 실행 및 결과 리턴받기
	int result=pstmt.executeUpdate();
	//결과 출력
	System.out.println("쿼리 실행 결과 :"+ result);
	//사용한 자원 반납
	// ~~~~~
	}

}
profile
수인이야 ♡

0개의 댓글