Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
Tags
- 컴파일
- Java데이터 타입
- 접근제어지시자
- 집합관계
- OPP개념
- 자바 멀티스레딩
- break문
- multi-threading
- this예약어
- 메서드
- JAVA객체지향
- continue문
- Thread
- JAVA기초
- java변수
- 인텔리제이 한글 깨짐 해결법
- 상수
- for문
- 메서드 오버로딩
- Java
- 연관관계
- 포함관계
- While
- function
- 반복문
- 형 변환
- 생성자
- 시스템 환경 변수 편집
- 인텔리제이 기초 설정
- IntelliJ IDEA
Archives
- Today
- Total
최원종의 개발 블로그
JDBC 데이터 기본 조작 (CRUD) - 3 본문
배운 개념 확인
Connection → DB 와의 연결 통로
PreparedStatement → SQL 을 DB 에 전달 (파라미터 바인딩, SQL 인젝션 방지)
ResultSet → SELECT 결과를 담는 그릇
CRUD
Create → INSERT : 새 데이터 추가
Read → SELECT : 데이터 조회
Update → UPDATE : 기존 데이터 수정
Delete → DELETE : 데이터 삭제
모든 데이터 관련 작업은 이 네 가지 중 하나입니다.
쇼핑몰에서:
회원가입 → INSERT
상품 목록 조회 → SELECT
회원 정보 수정 → UPDATE
회원 탈퇴 → DELETE
실습 준비
-- 테이블이 없다면 아래를 실행하세요
create database shop2;
USE shop2;
CREATE TABLE IF NOT EXISTS product2 (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
price INT NOT NULL,
stock INT DEFAULT 0,
description VARCHAR(200)
);
-- 기존 데이터 확인
SELECT * FROM product2;
INSERT 연습
package ch03;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class ProductInsert {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/shop2?serverTimezone=Asia/Seoul";
String user = System.getenv("DB_USER");
String pwd = System.getenv("DB_PASSWORD");
// insert 쿼리 구문을 미리 Strin으로 만들어 두자
// 텍스트블록 문법 JDK 13이후 사용 가능
String sql = """
INSERT INTO product2(name, price, stock, description)
values( ? , ? , ? , ? )
""";
try (Connection conn = DriverManager.getConnection(url, user, pwd);
PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setString(1, "애플 에어팟 프로");
pstmt.setInt(2, 329000);
pstmt.setInt(3, 10);
pstmt.setString(4, "최신 무선 이어폰");
int rows = pstmt.executeUpdate();
System.out.println(rows + " 개의 상품이 추가 되었습니다.");
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
SELECT 연습 1
package ch03;
import java.sql.*;
public class ProductSelectAll {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/shop2?serverTimezone=Asia/Seoul";
String user = System.getenv("DB_USER");
String pwd = System.getenv("DB_PASSWORD");
// insert 쿼리 구문을 미리 String으로 만들어 두자
// 텍스트 블록 문법 JDK 13버전 이후 사용 가능
String sql = """
SELECT * FROM product2
""";
try (Connection conn = DriverManager.getConnection(url, user, pwd);
PreparedStatement pstmt = conn.prepareStatement(sql)) {
ResultSet rs = pstmt.executeQuery();
System.out.println(" == 전체 상품 목록 조회 ==");
while (rs.next()) {
String outPut = """
ID: %3d | %-20s | %,7d원 | 재고 : %3d개
""".formatted(
rs.getInt("id"),
rs.getString("name"),
rs.getInt("price"),
rs.getInt("stock")
);
// 참고로 텍스트 블록 문법은 자동으로 \n이 들어가있다.
System.out.print(outPut);
}
} catch (SQLException e) {
System.out.println("오류 : " + e.getMessage());
}
}
}
SELECT 연습 2
package ch03;
import java.sql.*;
public class ProductSelectByPrice {
public static void main(String[] args) {
//상품이 만원에서 10만원 사이의 상품을 출력하시오
//shop DB 사용 product 테이블 사용
// 가격 오름차순 정렬
String url = "jdbc:mysql://localhost:3306/shop?serverTimezone=Asia/Seoul";
String user = System.getenv("DB_USER");
String pwd = System.getenv("DB_PASSWORD");
// insert 쿼리 구문을 미리 String으로 만들어 두자
// 텍스트 블록 문법 JDK 13버전 이후 사용 가능
String sql = """
select * from product where price between 10000 and 100000 order by price asc;
""";
try (Connection conn = DriverManager.getConnection(url, user, pwd);
PreparedStatement pstmt = conn.prepareStatement(sql)) {
ResultSet rs = pstmt.executeQuery();
int count = 0;
System.out.println(" == 전체 상품 목록 조회 ==");
while (rs.next()) {
count++;
String outPut = """
ID: %3d | %-20s | %,7d원 | 재고 : %3d개
""".formatted(
rs.getInt("id"),
rs.getString("name"),
rs.getInt("price"),
rs.getInt("stock")
);
// 참고로 텍스트 블록 문법은 자동으로 \n이 들어가있다.
System.out.print(outPut);
}
System.out.println(count + "번 반복문 돌았습니다");
} catch (SQLException e) {
System.out.println("오류 : " + e.getMessage());
}
}
}
Update 연습
package ch03;
import java.sql.*;
public class ProductUpdate {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/shop2?serverTimezone=Asia/Seoul";
String user = System.getenv("DB_USER");
String pwd = System.getenv("DB_PASSWORD");
// UPDEATE - name, 가격을 수정하는 쿼리를 진행할 예정
// 텍스트 블록 문법 JDK 13버전 이후 사용 가능
String sql = """
update product2
set price = ?
where name = ?
""";
int newPrice = 500000;
String targetName = "애플 에어팟 프로";
try (Connection conn = DriverManager.getConnection(url, user, pwd);
PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setInt(1, newPrice);
pstmt.setString(2, targetName);
System.out.println(" == 상품 가격 수정 : 타겟상품 : " + targetName);
int rows = pstmt.executeUpdate();
if (rows > 0) {
System.out.println(rows + "개의 상품 가격이 수정되었습니다");
} else {
System.out.println("수정할 상품을 찾지 못했습니다");
}
} catch (SQLException e) {
System.out.println("오류 : " + e.getMessage());
}
}
}
DELETE 연습
package ch03;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class ProductDelete {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/shop2?serverTimezone=Asia/Seoul";
String user = System.getenv("DB_USER");
String pwd = System.getenv("DB_PASSWORD");
// UPDEATE - name, 가격을 수정하는 쿼리를 진행할 예정
// 텍스트 블록 문법 JDK 13버전 이후 사용 가능
String sql = """
delete from product2 where id = ?
""";
int targetId = 2;
try (Connection conn = DriverManager.getConnection(url, user, pwd);
PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setInt(1, targetId);
System.out.println("== 상품 가격 수정 : 타겟상품ID : " + targetId);
int rows = pstmt.executeUpdate();
if (rows > 0) {
System.out.println(rows + "개의 상품이 삭제되었습니다");
} else {
System.out.println("삭제할 상품을 찾지 못했습니다");
}
} catch (SQLException e) {
System.out.println("오류 : " + e.getMessage());
}
}
}
'Java > JAVA 유용한 클래스' 카테고리의 다른 글
| 도서관 도서관리 프로그램 - 4 (1) | 2026.04.14 |
|---|---|
| JDBC 구성 요소 (아키텍처) - 2 (0) | 2026.04.14 |
| JDBC(Java Database Connectivity) (1) | 2026.04.10 |
| HTTP Client 연습 - 5 (0) | 2026.04.01 |
| 공공데이터 API 실습 - HTTP - 4 (0) | 2026.04.01 |




