μ°μ μλ λ©΄μμ PreparedStatement
κ° λΉ λ₯΄λ€κ³ μλ €μ Έ μλ€. μ΄μ λ 쿼리λ₯Ό μννκΈ° μ μ μ΄λ―Έ μΏΌλ¦¬κ° μ»΄νμΌ λμ΄ μμΌλ©°, λ°λ³΅ μνμ κ²½μ° ν리 μ»΄νμΌλ 쿼리λ₯Ό ν΅ν΄ μνμ΄ μ΄λ£¨μ΄μ§κΈ° λλ¬Έμ΄λ€.
PreparedStatement
μλ λ³΄ν΅ λ³μλ₯Ό μ€μ νκ³ λ°μΈλ©νλ static sql
μ΄ μ¬μ©λκ³ Statement
μμλ 쿼리 μ체μ μ‘°κ±΄μ΄ λ€μ΄κ°λ dynamic sql
μ΄ μ¬μ©λλ€. PreparedStatement
κ° νμ± νμμ μ€μ¬μ£Όλ κ²μ λΆλͺ
νμ§λ§ static sql
μ μ¬μ©νλλ° λ°λ₯΄λ νΌν¬λ¨Όμ€ μ νλ₯Ό κ³ λ €νμ§ μμ μ μλ€.
νμ§λ§ μ±λ₯μ κ³ λ €ν λ μκ° λΆλΆμμ κ°μ₯ ν° λΉμ€μ μ°¨μ§νλ κ²μ ν
μ΄λΈμμ λ μ½λ(row)λ₯Ό κ°μ Έμ€λ κ³Όμ μ΄κ³ SQL λ¬Έμ νμ±νλ μκ°μ μ΄ μκ°μ 10 λΆμ 1 μ λΆκ³Όνλ€. κ·Έλ κΈ° λλ¬Έμ SQL Injection
λ±μ λ¬Έμ λ₯Ό 보μν΄μ£Όλ PreparedStatement
λ₯Ό μ¬μ©νλ κ²μ΄ μ³λ€.
public interface **Statement**extends Wrapper
μ μ SQL λ¬Έμ μ€νν΄, μμ±λ κ²°κ³Όλ₯Ό λλ €μ£ΌκΈ° μν΄μ(λλ¬Έμ) μ¬μ©λλ κ°μ²΄μ λλ€.
λν΄νΈμμλ,**Statement**
κ°μ²΄ λ§λ€ 1 κ°μ **ResultSet**
κ°μ²΄λ§μ΄ λμμ μ€νν μ μμ΅λλ€. λ°λΌμ, 1 κ°μ ResultSet
κ°μ²΄μ readκ°, λ€λ₯Έ readμ μν΄ λΌμ΄λ€μ΄μ§λ©΄(μ), κ°κ°μ λ€λ₯Έ Statement
κ°μ²΄μ μν΄ μμ±λ κ²μ΄ λ©λλ€. Statement
μΈν°νμ΄μ€μ λͺ¨λ execution λ©μλλ, λ¬Έμ₯μ νμ¬μ ResultSet
κ°μ²΄λ‘ μ€νλκ³ μλ κ²μ΄ μ‘΄μ¬νλ©΄, κ·Έκ²μ μ묡μ ν΄λ‘μ¦ ν©λλ€.
-
κ΄λ ¨ νλͺ©:
-
public interface **PreparedStatement**extends Statement
ν리컴νμΌ λ SQL λ¬Έμ λνλ΄λ κ°μ²΄μ λλ€.
SQL λ¬Έμ, ν리컴νμΌ λμ΄PreparedStatement
κ°μ²΄μ ν¬ν¨λ©λλ€. κ±°κΈ°μ, μ΄ κ°μ²΄λ, μ΄ λ¬Έμ₯μ μ¬λ¬ μ°¨λ‘ ν¨μ¨μ μΌλ‘ μ€ννλ λͺ©μ μΌλ‘ μ¬μ©ν μ μμ΅λλ€.
μ£Ό: IN νλΌλ―Έν°μΉλ₯Ό μ€μ νλ μ€μ κΈ°λ₯ λ©μλ (setShort
,setString
λ±)λ, μ
λ ₯ νλΌλ―Έν°μ μ μλ SQL νκ³Ό νΈνμ΄ μλ ννλ₯Ό μ§μ νμ§ μμΌλ©΄ μλ©λλ€. μλ₯Ό λ€μ΄, IN νλΌλ―Έν°μ INTEGER
λΌκ³ νλ SQL νμ΄ μλ κ²½μ°,setInt
λ©μλλ₯Ό μ¬μ©νμ§ μμΌλ©΄ μλ©λλ€.
μμμ νλΌλ―Έν°ν λ³νμ΄ νμν κ²½μ°λ,setObject
λ©μλλ, λͺ©μ μ SQL νμΌλ‘ μ¬μ©νμ§ μμΌλ©΄ μλ©λλ€.
νλΌλ―Έν° μ€μ μ μλ₯Ό λ€μμ λνλ
λλ€. con
λ μ‘ν°λΈν μ μμ λνλ
λλ€.
PreparedStatement pstmt = con.prepareStatement("UPDATE EMPLOYEES
SET SALARY = ? WHERE ID = ? ");
pstmt.setBigDecimal(1, 153833.00)
pstmt.setInt(2, 110592)
μΆμ²: https://java.ihoney.pe.kr/76 [νλλͺ¬(Honeymon)μ μλ°guru]