Java

[Java] 114. JDBC 사용법 (2)

Song hyun 2024. 6. 11. 15:15
728x90
반응형

[Java] 114. JDBC 사용법 (2)


1. Statement 객체 사용

 

 


2. PreparedStatement

-PreparedStatement 객체는 미리 컴파일 된 SQL 문을 실행하는 데 사용된다.

-이는 성능을 향상시키고, SQL 인젝션 공격을 방지하는 데 도움이 된다.


3. 시나리오 코드

package ch02;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class MySQL_JDBC {

	public static void main(String[] args) {
		
		// 준비물 
		String url = "jdbc:mysql://localhost:3306/mydb2?serverTimezone=Asia/Seoul";
		String user = "root"; // 상용서비스에서 절대 루트 계정 사용 금지
		String password = "asd123";
		
		// 필요 데이터 타입 
		// JDBC API 레벨(자바 개발자들이 개념화 시켜 놓은 클래스들이다. )
		Connection connection = null;
		Statement statement = null; 
		ResultSet resultSet = null; 
		
		// 1. MySQL 구현체를 사용하겠다는 설정을 해야 한다. 
		// JDBC 드라이버 로드(MySQL 드라이버)   
		
		try {
			// 1. 메모리에 사용하는 드라이버(JDBC API를 구현한 클래스) 클래스를 띄운다. 
			Class.forName("com.mysql.cj.jdbc.Driver");
			
			// 2. 데이터 베이스 연결 설정 
			connection = DriverManager.getConnection(url, user, password);
			
			// 3. SQL 실행 
			statement = connection.createStatement();
			// 딱 2가지는 기억하지! 쿼리를 실행 시키는 메서드 
			resultSet  = statement.executeQuery("SELECT * FROM employee"); // select 실행시 사용한다. 
			// statement.executeUpdate(password); --> Insert, Update, delete 사용
			
			// 구문 분석 -- 파싱 
			
			// 4. 결과 처리 
			while(resultSet.next()) {
				System.out.println("USER ID : " + resultSet.getInt("id"));
				System.out.println("USER NAME : " + resultSet.getString("name"));
				System.out.println("department : " + resultSet.getString("department"));
				System.out.println("----------------------------------");
			}
			
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		

	} // end of main 

} // end of class

 

 

package ch02;

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

public class MySQL_JDBC {

	public static void main(String[] args) {
		
		// 준비물 
		String url = "jdbc:mysql://localhost:3306/mydb2?serverTimezone=Asia/Seoul";
		String user = "root"; // 상용서비스에서 절대 루트 계정 사용 금지
		String password = "asd123";
		
		// 필요 데이터 타입 
		// JDBC API 레벨(자바 개발자들이 개념화 시켜 놓은 클래스들이다. )
		Connection connection = null;
		Statement statement = null; 
		ResultSet resultSet = null; 
		
		// 1. MySQL 구현체를 사용하겠다는 설정을 해야 한다. 
		// JDBC 드라이버 로드(MySQL 드라이버)   
		
		try {
			// 1. 메모리에 사용하는 드라이버(JDBC API를 구현한 클래스) 클래스를 띄운다. 
			Class.forName("com.mysql.cj.jdbc.Driver"); // MySQL 드라이버 로드
			// 만약 mysql 대신에 oracle을 입력했다면, oracle 드라이버가 구현되었을 것.
			
			// 2. 데이터 베이스 연결 설정 
			connection = DriverManager.getConnection(url, user, password);
			
			// 3. SQL 실행 (PreparedStatement 객체 사용해보기)
			// 3-1. 쿼리 만들어 보기
			String query="insert into employee values(?,?,?,?,now())";
			
			PreparedStatement preparedStatement=connection.prepareStatement(query);
			preparedStatement.setInt(1, 7);
			preparedStatement.setString(2,"이순신");
			preparedStatement.setString(3, "IT");
			preparedStatement.setString(4, "50000.00");
			
			// 실제 실행에 호출은 executeQuery에 사용
			int rowCount=preparedStatement.executeUpdate();
			
			
			// 4. 결과 처리 
			System.out.println("rowCount : "+rowCount);
			
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		

	} // end of main 

} // end of class
728x90
반응형