1.  JDBCJava DataBase Connectivity 

 

์ถœ์ฒ˜ :  https://www.geeksforgeeks.org /

 

 

์ถœ์ฒ˜ :   https://www.geeksforgeeks.org/
์ถœ์ฒ˜ : ์ฑ… '์ด๊ฒƒ์ด ์ž๋ฐ”๋‹ค'

 

 

 

๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป ์ž๋ฐ” / JSP ํ”„๋กœ๊ทธ๋žจ ๋‚ด์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๊ด€๋ จ๋œ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ์ž๋ฐ” ํ‘œ์ค€ ์ธํ„ฐํŽ˜์ด์Šค

๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์— ์ ‘๊ทผํ•˜์—ฌ SQL ๋ฌธ์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์ž๋ฐ” API ๋˜๋Š” ์ž๋ฐ” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

   โšก๏ธ JDBC API๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด DBMS์˜ ์ข…๋ฅ˜์— ์ƒ๊ด€์—†์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

        โžก๏ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ์‹œ์Šคํ…œ(DBMS)์˜ ์ข…๋ฅ˜ ์ƒ๊ด€์—†์ด ๋™์ผํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ

   โšก๏ธ JDBC API๋Š” java.sql.* ํŒจํ‚ค์ง€์— ์˜ํ•ด ๊ตฌํ˜„๋˜๋ฉฐ, ์ด ํŒจํ‚ค์ง€๋Š” ์—ฌ๋Ÿฌ ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘๊ทผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

        โ€ป java.sql.* ํŒจํ‚ค์ง€๋Š” ๋‹จ์ผ API๋ฅผ ์ œ๊ณตํ•˜๋Š” ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ง‘ํ•ฉ

 

 

 

 
 

1) DB ์—ฐ๊ฒฐ

 

๐Ÿ‘พ ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ๊ทธ๋žจ์—์„œ DB์™€ ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด ํ•ด๋‹น DBMS์˜ JDBC Driver๊ฐ€ ํ•„์š”

 

  ๐Ÿ“Œ  ์—ฐ๊ฒฐ์— ํ•„์š”ํ•œ ์ •๋ณด

    a. DBMS๊ฐ€ ์„ค์น˜๋œ ์ปดํ“จํ„ฐ(์„œ๋ฒ„)์˜ IP ์ฃผ์†Œ

    b. DBMS๊ฐ€ ํ—ˆ์šฉํ•˜๋Š” ํฌํŠธ(Port) ๋ฒˆํ˜ธ

    c. ์‚ฌ์šฉ์ž(DB ๊ณ„์ •) ๋ฐ ๋น„๋ฐ€๋ฒˆํ˜ธ

    d. ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•˜๋Š” DB ์ด๋ฆ„

 

 

 

2) JDBC์— ํฌํ•จ๋˜์–ด ์žˆ๋Š” ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค

 

์ถœ์ฒ˜ : ์ฑ… '์ด๊ฒƒ์ด ์ž๋ฐ”๋‹ค'

 

 

(1) DriverManager

  - JDBC Driver๋ฅผ ๊ด€๋ฆฌํ•˜๋ฉฐ DB์™€ ์—ฐ๊ฒฐํ•ด์„œ Connection ๊ตฌํ˜„ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ

 

(2) Connection

  - Statement, PreparedStatement, CallableStatement ๊ตฌํ˜„ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋ฉฐ Transaction ์ฒ˜๋ฆฌ ๋ฐ DB ์—ฐ๊ฒฐ์„ ๋Š์„ ๋•Œ ์‚ฌ์šฉ

 

(3) Statement

   - ์ฃผ๋กœ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š” ์ •์  SQL ๋ฌธ์„ ์‹คํ–‰ํ•  ๋•Œ ์‚ฌ์šฉ

 

(4) PreparedStatement

    - ๋งค๊ฐœ๋ณ€์ˆ˜ํ™”๋œ SQL ๋ฌธ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํŽธ๋ฆฌ์„ฑ๊ณผ ๋ณด์•ˆ์„ฑ์ด ์ข‹์Œ

    - SQL ๋ฌธ์„ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด ๋‘๊ณ  ๋ณ€์ˆ˜๋ฅผ ๋”ฐ๋กœ ์ž…๋ ฅํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํšจ์œจ์„ฑ์ด๋‚˜ ์œ ์ง€ ๋ณด์ˆ˜ ์ธก๋ฉด์—์„œ ์œ ๋ฆฌ

    - ๊ธฐ๋ณธ์ ์œผ๋กœ Statement ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›๊ธฐ ๋•Œ๋ฌธ์— Statement ํด๋ž˜์Šค์˜ ๋ชจ๋“  ๋ฉ”์„œ๋“œ๋ฅผ ๋ชจ๋‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ

 

(5) CallableStatement

    - DB์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ํ”„๋กœ์‹œ์ €(procedure)์™€ ํ•จ์ˆ˜(function)๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ์‚ฌ์šฉ

 

(6) ResultSet

   - DB์—์„œ ๊ฐ€์ ธ์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ๋•Œ ์‚ฌ์šฉ

 

 


 

 

3) JDBC ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ ์ ˆ์ฐจ

 

 

๐Ÿ‘พ JDBC ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์˜คํ”ˆ์†Œ์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‚˜ ํ”„๋ ˆ์ž„์›Œํฌ ๋“ฑ์„ ์ด์šฉํ•ด์„œ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•œ๋‹ค๋Š” ๊ฒƒ์€ ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‚˜ ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๊ตฌ์กฐ์™€ ์„ฑ๊ฒฉ์„ ์ดํ•ดํ•˜๊ณ , ์ œ๊ธฐํ•˜๋Š” ๊ทœ๊ฒฉ์ด๋‚˜ ๊ตฌ์กฐ์— ๋งž๊ฒŒ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค์–ด์•ผ ํ•จ์„ ์˜๋ฏธ



  ๐Ÿ“Œ  1๋‹จ๊ณ„ : JDBC ๋“œ๋ผ์ด๋ฒ„ ๋กœ๋“œ

   

    · ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ ‘์†ํ•˜๋ ค๋ฉด ๋จผ์ € ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ JDBC driver๋ฅผ ๋กœ๋”ฉ

    · ์ด๋Ÿฐ ๊ณผ์ •์ด ํ•„์š”ํ•œ ์ด์œ ๋Š” JDK์— ํฌํ•จ๋œ JDBC๋Š” ์‹ค์ œ ๊ตฌํ˜„ ๋‚ด์šฉ์ด ๋น ์ง„ ์ŠคํŽ™๋งŒ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ํฌํ•จ ํ•˜๊ธฐ ๋•Œ๋ฌธ

        โžก๏ธ ์‹ค์ œ๋กœ ๋™์ž‘ํ•˜๋ ค๋ฉด ๊ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ณต๊ธ‰์—…์ฒด์—์„œ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค๋“ค์„ ์‚ฌ์ „์— ๋กœ๋”ฉํ•ด์•ผ ํ•จ

    · Class.forName() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉ

 

// MySQL ๋ฒ„์ „
Class.forName("com.mysql.cj.jdbc.Driver");
 

 

  โšก๏ธ ์ด ๊ณผ์ •์—์„œ JDBC Driver ํด๋ž˜์Šค์˜ static ๋ธ”๋ก์ด ์‹คํ–‰๋˜๋ฉด์„œ Driver Manager์— JDBC Driver ๊ฐ์ฒด๋ฅผ ๋“ฑ๋กํ•˜๊ฒŒ ๋œ๋‹ค.

 

// static ๋ธ”๋ก
class MysqlDriver {
    static {
       Driver driver = new MysqlDriver();
       DriverManager.registerDriver(driver);
    }
}
 

  โšก๏ธ DriverManager์— JDBC Driver๊ฐ€ ๋“ฑ๋ก๋˜๋ฉด getConnection() ๋ฉ”์†Œ๋“œ๋กœ DB์™€ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 


 

  ๐Ÿ“Œ  2๋‹จ๊ณ„ : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ

     · ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด ๋ช‡ ๊ฐ€์ง€ ์ถ”๊ฐ€ ์ •๋ณด๊ฐ€ ํ•„์š”

 

    โ‘  JDBC URL

       - JDBC URL์€ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ •๋ณด๋ฅผ ํฌํ•จ

       - ๊ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ณ„๋กœ JDBC URL์ด ๋‹ค๋ฅด๋ฏ€๋กœ, ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ๋งค๋‰ด์–ผ์„ ์ฐธ๊ณ ํ•˜์—ฌ ์ž‘์„ฑ

 

jdbc:<์„œ๋ธŒ ํ”„๋กœํ† ์ฝœ>:<๋ฐ์ดํ„ฐ ์›๋ณธ ์‹๋ณ„์ž>

// MySql์˜ ํ˜•์‹
jdbc:mysql://DB ์„œ๋ฒ„์˜ IP/์Šคํ‚ค๋งˆ(๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค):PORT
ex) jdbc:mysql://localhost:3306/sample
 

    ๐Ÿ”Ž  IP์ฃผ์†Œ : MySql ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์„ค์น˜๋œ ์ปดํ“จํ„ฐ์˜ IP ์ฃผ์†Œ ๋˜๋Š” ๋„๋ฉ”์ธ ์ด๋ฆ„

    ๐Ÿ”Ž  ์Šคํ‚ค๋งˆ : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ƒ์„ฑ๋œ ์Šคํ‚ค๋งˆ(๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค) ์ด๋ฆ„

    ๐Ÿ”Ž  PORT : ๊ธฐ๋ณธ ์„ค์ •๊ฐ’์ธ 3306 ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ์ƒ๋žต ๊ฐ€๋Šฅ

 

 

    โ‘ก Connection ํด๋ž˜์Šค ์ธ์Šคํ„ด์Šค ๋ž˜ํผ๋Ÿฐ์Šค ์–ป๊ธฐ

       - DriverManager์˜ getConnection ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉ

 

Connection conn = DriverManager.getConnection(JDBC URL,"์•„์ด๋””", "๋น„๋ฐ€๋ฒˆํ˜ธ");
 
 
 

๐Ÿ”Ž JDBC URL : ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋งž๊ฒŒ ๋ฏธ๋ฆฌ ์ •์˜ํ•œ ๋ฌธ์ž์—ด

๐Ÿ”Ž ์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž์ฒด์—์„œ ๊ด€๋ฆฌํ•˜๋Š” ๊ณ„์ •

      โžก๏ธ ์˜†์— ์‚ฌ์ง„์— ๋‚˜์™€ ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณดํ†ต ์•„์ด๋””๋Š” " root " ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” mysql ์„ค์น˜ํ• ๋•Œ ์ž…๋ ฅํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ ๋œปํ•จ

 

 

 

 

 

 

 

 

 


 

 

  ๐Ÿ“Œ  3๋‹จ๊ณ„ : Statement ์ƒ์„ฑ

     · Statement๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์—ฐ๊ฒฐํ•˜์—ฌ SQL๋ฌธ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ํด๋ž˜์Šค

     · ๋Œ€ํ‘œ์ ์œผ๋กœ ์•„๋ž˜ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉ

 

    โ‘  executeQuery()

      - SELECT ๋ฌธ์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ์‚ฌ์šฉ

      - ๋ฐ˜ํ™˜๊ฐ’์€ ResultSet ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋กœ, ํ•ด๋‹น SELECT ๋ฌธ์˜ ๊ฒฐ๊ณผ์— ํ•ด๋‹นํ•˜๋Š” ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณต

      - ๋‹จ๋…์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ๋ณด๋‹ค๋Š” ResultSet๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ๋•Œ๊ฐ€ ๋งŽ๋‹ค

 

String sql = "select * from test";
Statement stmt = conn.createStatement();
stmt.executeQuery(sql);
 
 

    โ‘ก executeUpdate()

      - UPDATE ๋ฌธ, DELETE ๋ฌธ ๋“ฑ์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ์‚ฌ์šฉ

      - ๋ฐ˜ํ™˜๊ฐ’์€ intํ˜• ๋ฐ์ดํ„ฐ๋กœ, ์ฒ˜๋ฆฌ๋œ ๋ฐ์ดํ„ฐ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜

 

Statement stmt = conn.createStatement();

stmt.executeUpdate("insert into test values (' " +
getUserName() + " ', ' " + getEmail() + " ') ");
 

 

๐Ÿ‘พ ์‚ฌ์šฉ์ž ์ž…๋ ฅ๊ฐ’์„ ํฌํ•จํ•ด์•ผ ํ•  ๋•Œ๋Š” SQL ๋ฌธ์„ ๋ณ€์ˆ˜์™€ ๊ฒฐํ•ฉํ•ด์„œ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋ฏ€๋กœ ์ฝ”๋“œ๊ฐ€ ๋‹ค์†Œ ๋ณต์žกํ•ด์ง

      โžก๏ธ ์ปฌ๋Ÿผ ์ˆ˜๊ฐ€ ๋งŽ์•„์ง€๋ฉด ์ฝ”๋“œ ์ž‘์„ฑ์ด๋‚˜ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์–ด๋ ค์›€

๐Ÿ‘พ ๋ณต์žกํ•œ SQL ๋ฌธ์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” Statement์˜ ํ–ฅ์ƒ๋œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” PreparedStatement์„ ์‚ฌ์šฉ

 

 

    โ‘ข PreparedStatement

        - PreparedStatement๋Š” SQL ๋ฌธ์„ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด ๋‘๊ณ  ๋ณ€์ˆ˜๋ฅผ ๋”ฐ๋กœ ์ž…๋ ฅํ•˜๋Š” ๋ฐฉ์‹

        - ๊ธฐ๋ณธ์ ์œผ๋กœ Statement ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›๊ธฐ ๋•Œ๋ฌธ์— Statement ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ๋ฅผ ๋ชจ๋‘ ์‚ฌ์šฉ

 

PreparedStatement pstmt = conn.preparedStatement("insert
into test values(?, ?) ");
pstmt.setString(1, getUserName());
pstmt.setString(2, getEmail());
pstmt.executeUpdate();
 

 

  ๐Ÿ”Ž ํ–‰์€ ๋Š˜์–ด๋‚ฌ์ง€๋งŒ Statement๋ฅผ ์‚ฌ์šฉํ• ๋•Œ ๋ณด๋‹ค๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ๊ฐ„๊ฒฐํ•ด์ง

  ๐Ÿ”Ž SQL ๋ฌธ์—์„œ ๋ณ€์ˆ˜๊ฐ€ ์™€์•ผ ํ•  ์œ„์น˜์—๋Š” ๋ฌผ์Œํ‘œ๋งŒ ์ ์–ด ๋‘๊ณ , ๋ฌผ์Œํ‘œ์ž๋ฆฌ์—๋Š” setXxx() ๋ฉ”์„œ๋“œ๋กœ ๊ฐ’์„ ์„ค์ •

        โžก๏ธ Xxx์—๋Š” String, Int ์™€ ๊ฐ™์ด ์ž๋ฃŒํ˜•๋ณ„๋กœ ๋‹ค๋ฅด๊ฒŒ ๋“ค์–ด๊ฐ

 

 

    โ‘ฃ Statement์˜ close()

       - ๋‹ค๋ฅธ JDBC ๋ฆฌ์†Œ์Šค์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ Statement ์—ญ์‹œ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๋•Œ๋Š” ๋‹ซ์•„ ์ฃผ์–ด์—ฌ ํ•จ

       - PreparedStatement๋„ ๋งˆ์ฐฌ๊ฐ€์ง€

 

stmt.close();
pstmt.close();
 

 

 

 

  ๐Ÿ“Œ  4๋‹จ๊ณ„ : SQL ๋ฌธ ์ „์†ก

     · ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅ, ์ˆ˜์ •, ์‚ญ์ œํ•˜๋ ค๊ณ  SQL๋ฌธ์„ ๋งŒ๋“ค๋•Œ๋Š” PreparedStatement๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ€์ˆ˜์™€ ์ ์ ˆํžˆ ์กฐํ•ฉํ•˜๋ฉด ๋จ

         โžก๏ธ executeUpdate() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉ

 

int count = pstmt.executeUpdate();
 

  ๐Ÿ’ก ์ด ๋•Œ executeUpdate() ๋ฉ”์„œ๋“œ๋Š” ์ฒ˜๋ฆฌํ•œ ๋กœ์šฐ์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜

         โžก๏ธ ์ฒ˜๋ฆฌ๋œ ํ•ญ๋ชฉ์ด ์—†๋‹ค๋ฉด 0์„ ๋ฐ˜ํ™˜

  ๐Ÿ’ก ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋Š” ๋ฐ˜ํ™˜๊ฐ’์„ ๋ฐ›์•„์„œ ํ™•์ธํ•ด์•ผ ํ•˜๊ณ , ๊ทธ๋Ÿด ํ•„์š”๊ฐ€์—†๋‹ค๋ฉด ๊ตณ์ด ๋ฐ˜ํ™˜์„ ๋ฐ›์ง€ ์•Š์•„๋„ ๋จ

 

 

 

  ๐Ÿ“Œ  5๋‹จ๊ณ„ : ๊ฒฐ๊ณผ๋ฐ›๊ธฐ

    · ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›์œผ๋ ค๋ฉด Statement๋‚˜ PreparedStatement์˜ executeQuery()๋ฅผ ์‚ฌ์šฉ

    · ์ž…๋ ฅ, ์ˆ˜์ •, ์‚ญ์ œ์™€ ๋‹ฌ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ๋Š” ๊ฐ€์ ธ์˜จ ๊ฒฐ๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ResultSet ๊ฐ์ฒด๊ฐ€ ํ•„์š”

 

ResultSet rs = pstmt.executeQuery():
 

 

  ๐Ÿ’ก ResultSet์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด๋ถ€์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•œ SQL ๋ฌธ์˜ ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ JDBC์—์„œ ์‰ฝ๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•จ

  ๐Ÿ’ก ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ ๊ฐ€์ ธ์˜จ ํ›„ ResultSet์„ close()ํ•˜๊ณ ๋‚˜์„œ connection์„ close() ํ•ด์•ผ ํ•จ

  ๐Ÿ’ก ResultSet์€ next() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์Œ ๋กœ์šฐ๋กœ ์ด๋™

        โžก๏ธ ์ปค์„œ๋ฅผ ์ตœ์ดˆ ๋ฐ์ดํ„ฐ์˜ ์œ„์น˜๋กœ ์ด๋™์‹œํ‚ค๋ ค๋ฉด ResultSet์„ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— rs.next() ๋ฉ”์„œ๋“œ๋ฅผ ํ•œ ๋ฒˆ ํ˜ธ์ถœ

 

  · ๋Œ€๋ถ€๋ถ„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด executeQuery() ๋ฉ”์„œ๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•œ ํ›„ while(rs.next())์™€ ๊ฐ™์ด ๋” ์ด์ƒ ๋กœ์šฐ๊ฐ€ ์—†์„ ๋•Œ๊นŒ์ง€ ๋ฃจํ”„๋ฅผ ๋Œ๋ฉด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉ. ์ด ๋•Œ ๋กœ์šฐ์—์„œ ๊ฐ ์ปฌ๋Ÿผ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด rs.getXxx() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉ

 

ResultSet rs = psmt.executeQuery();
while(rs.next()) {
  name = rs.getString(1); // or rs.getString("name");
  age = rs.getInt(2); // or rs.getInt("age");
}
rs.close();
 

  ๐Ÿ”Ž getXxx() ๋ฉ”์„œ๋“œ์—์„œ ์ปฌ๋Ÿผ์„ ์ง€์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ํ•ด๋‹น ์ปฌ๋Ÿผ์˜ index ๊ฐ’(1๋ถ€ํ„ฐ ์‹œ์ž‘) ์ด๋‚˜ ์ปฌ๋Ÿผ ์ด๋ฆ„์„ ์‚ฌ์šฉ

  ๐Ÿ”Ž ๊ฐ€๊ธ‰์  index๋ณด๋‹ค๋Š” ์ปฌ๋Ÿผ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๋Š” ํŽธ์ด ์ฝ”๋“œ ์ดํ•ด๋‚˜ ์œ ์ง€๋ณด์ˆ˜์— ๋” ์œ ๋ฆฌ

  ๐Ÿ”Ž ResultSet์˜ ์‚ฌ์šฉ์ด ๋๋‚ฌ์œผ๋ฉด rs.close() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ResultSet์„ ๋‹ซ์•„ ์ฃผ์–ด์•ผ ํ•จ

 

 

 

  ๐Ÿ“Œ  6๋‹จ๊ณ„ : ์—ฐ๊ฒฐ ํ•ด์ œ

     · ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์—ฐ๊ฒฐ์„ ๊ด€๋ฆฌํ•˜๋Š” Connection ์ธ์Šคํ„ด์Šค๋Š” ์‚ฌ์šฉํ•œ ํ›„ ๋ฐ˜๋‚ฉํ•˜์ง€ ์•Š์œผ๋ฉด ๊ณ„์† ์—ฐ๊ฒฐ์„ ์œ ์ง€

     · ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ์€ ํ•ด๋‹น ์—ฐ๊ฒฐ์„ ์ด์šฉํ•œ ์ž‘์—…์ด ๋ชจ๋‘ ๋๋‚˜๋Š” ์‹œ์ ์—์„œ close() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด์ œํ•ด์•ผ ํ•จ

 

conn.close();
 

 

 

 

4) ์ฃผ์š” ํด๋ž˜์Šค

 

 

(1) Statement ์ฃผ์š” ๋ฉ”์„œ๋“œ

 
boolean execute(String sql)
๐Ÿ‘พ ์ฃผ์–ด์ง„ SQL๋ฌธ sql์„ ์‹คํ–‰
  - select ๊ตฌ๋ฌธ์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” true๋ฅผ ๋ฆฌํ„ด, ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋Š” false ๋ฆฌํ„ด
  - true๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” getResultSet() ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ ResultSet ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ
  - update, insert, delete ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” false๋ฅผ ๋ฆฌํ„ดํ•˜๊ณ , getUpdateCount() ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ ์˜ํ–ฅ๋ฐ›์€ ํ–‰์˜ ๊ฐฏ์ˆ˜๋ฅผ ์•Œ์•„๋‚ผ์ˆ˜ ์žˆ์Œ
ResultSet executeQuery(String sql)
๐Ÿ‘พ select ๊ตฌ๋ฌธ์„ ์‹คํ–‰ํ•  ๋•Œ ์‚ฌ์šฉ
int executeUpdate(String sql)
๐Ÿ‘พ select๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ insert, create, update, delete ๊ตฌ๋ฌธ์„ ์‹คํ–‰ํ•  ๋•Œ ์‚ฌ์šฉ
  - ์ด ๋•Œ ์˜ํ–ฅ์„ ๋ฐ›์€ ํ–‰์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ฆฌํ„ด
ResultSet getResultSet()
๐Ÿ‘พ ํ˜„์žฌ SQL ๊ตฌ๋ฌธ์„ ์‹คํ–‰ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌํ„ด
  - select ๊ตฌ๋ฌธ์„ ์‹คํ–‰ํ–ˆ์„ ๊ฒฝ์šฐ์—๋งŒ ์œ ํšจ
int getUpdateCount()
๐Ÿ‘พ ํ˜„์žฌ SQL ๊ตฌ๋ฌธ์˜ ์‹คํ–‰์œผ๋กœ ์˜ํ–ฅ์„ ๋ฐ›์€ ํ–‰์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ฆฌํ„ด
  - select๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ๊ตฌ๋ฌธ์—์„œ๋งŒ ์œ ํšจ

 

 

 

 

(2) ResultSet

 

 

๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป Statement ๊ฐ์ฒด์˜ getResultSet(), executeQuery() ๋ฉ”์„œ๋“œ๊ฐ€ ๋ฆฌํ„ดํ•˜๋Š” ๊ฐ์ฒด๋กœ์„œ select ๊ตฌ๋ฌธ ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ์‚ฌ์šฉ

๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป select ๊ตฌ๋ฌธ์„ ์‹คํ–‰ํ•˜์—ฌ ResultSet ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด ์ปค์„œ cursor ๊ฐ€ ๋งŒ๋“ค์–ด์ง€๊ณ  select ๊ตฌ๋ฌธ ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€๋ฅดํ‚ด

 

 
boolean next()
๐Ÿ‘พ ์ปค์„œ๋ฅผ ๋‹ค์Œ ํ–‰์œผ๋กœ ์ด๋™
  - ResultSet ๊ฐ์ฒด๊ฐ€ ์ฒ˜์Œ ์ƒ์„ฑ๋œ ์งํ›„์— next() ๋ฉ”์„œ๋“œ๋ฅผ ํ•œ ๋ฒˆ ํ˜ธ์ถœํ•ด์•ผ ์ฒซ ๋ฒˆ์งธ ํ–‰์„ ์ปค์„œ๊ฐ€ ๊ฐ€๋ฅดํ‚ค๊ฒŒ ๋จ
  - ์„ฑ๊ณต์ ์œผ๋กœ ์ปค์„œ๊ฐ€ ์ด๋™ํ•˜๋ฉด true๋ฅผ ๋ฆฌํ„ดํ•˜๊ณ  ๋” ์ด์ƒ ์—†์–ด์„œ ์ปค์„œ๋ฅผ ์ด๋™์‹œํ‚ฌ ์ˆ˜ ์—†์œผ๋ฉด false๋ฅผ ๋ฆฌํ„ด
boolean previous()
๐Ÿ‘พ ์ปค์„œ๋ฅผ ์ด์ „ ํ–‰์œผ๋กœ ์ด๋™
  - ์„ฑ๊ณต์ ์œผ๋กœ ์ปค์„œ๊ฐ€ ์ด๋™ํ•˜๋ฉด true๋ฅผ ๋ฆฌํ„ดํ•˜๊ณ  ๋” ์ด์ƒ ๊ฒฐ๊ณผ๊ฐ€ ์—†์–ด์„œ ์ปค์„œ๋ฅผ ์ด๋™์‹œํ‚ฌ ์ˆ˜ ์—†์œผ๋ฉด false๋ฅผ ๋ฆฌํ„ด
Statement getStatement()
๐Ÿ‘พ ํ˜„์žฌ ResultSet์„ ์ƒ์„ฑ์‹œํ‚จ Statement ๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ด
<์ž๋ฃŒํ˜•> get<์ž๋ฃŒํ˜•>(String colName),
<์ž๋ฃŒํ˜•> get<์ž๋ฃŒํ˜•>(int colIndex)
๐Ÿ‘พ colName์— ์ง€์ •๋œ ์†์„ฑ๋ช…์— ํ•ด๋‹นํ•˜๋Š” ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฆฌํ„ด
  - ์˜ˆ๋ฅผ ๋“ค์–ด ์†์„ฑ์˜ ๋ฐ์ดํ„ฐ ์ž๋ฃŒํ˜•์ด String ํ˜•๊ณผ ํ˜ธํ™˜๋˜๋Š” ์†์„ฑ์ด๋ผ๋ฉด getString() ๋ฉ”์„œ๋“œ๋ฅผ
์‚ฌ์šฉ
  - ์†์„ฑ ์ด๋ฆ„ ๋Œ€์‹  ์†์„ฑ์˜ ์œ„์น˜ ์ •๋ณด๋ฅผ colIndex๋กœ ์ค„ ์ˆ˜ ์žˆ์Œ ๋งจ ์•ž์˜ ์†์„ฑ์€ '1', ๋‘ ๋ฒˆ์งธ ์†์„ฑ์€ '2'์™€ ๊ฐ™์ด ์ˆซ์ž๋กœ ์†์„ฑ์˜ ์œ„์น˜๋ฅผ ์ง€์ •

 

 

 

 

(3) PreparedStatement

 

 

๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป Statement ๊ฐ์ฒด์˜ execute๊ณ„์—ด ๋ฉ”์„œ๋“œ๋Š” ๋ชจ๋‘ SQL ๋ฌธ์„ ์ปดํŒŒ์ผํ•˜๊ณ  ๋ฐ”๋กœ ์ˆ˜ํ–‰์‹œ์ผœ์„œ ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌํ„ด

๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป PreparedStatement ๊ฐ์ฒด๋Š” SQL ๋ฌธ์„ ๋ฏธ๋ฆฌ ์ปดํŒŒ์ผํ•˜์—ฌ ์‹คํ–‰ํ•˜๊ธฐ ์ง์ „์˜ ์ƒํƒœ๋กœ ๋งŒ๋“  ํ›„ ์‹ค์ œ ์‹คํ–‰์€ ๋‚˜์ค‘์— ํ•„์š”์— ๋”ฐ๋ผ ํ•  ์ˆ˜ ์žˆ์Œ

๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป ๊ฐ™์€ SQL ๋ฌธ์„ ์—ฌ๋Ÿฌ ๋ฒˆ ์‹คํ–‰์‹œ์ผœ์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์— ๋Š” Statement ๊ฐ์ฒด๋ณด๋‹ค PreparedStatement ๊ฐ์ฒด ์‚ฌ์šฉ์ด ๋” ํšจ๊ณผ์ 

๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป PreparedStatement ๊ฐ์ฒด๋กœ ์ƒ์„ฑ๋˜๋Š” SQL ๋ฌธ์€ ๋งˆ์น˜ ํ•จ์ˆ˜์ฒ˜๋Ÿผ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์„ค์ •, ํ•„์š”์— ๋”ฐ๋ผ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๋ฐ”๊ฟ” ์‹คํ–‰๊ฐ€๋Šฅ

      โžก๏ธ ๋น„์Šทํ•œ SQL ๊ตฌ๋ฌธ์„ ๋ฐ˜๋ณต์ ์œผ๋กœ ์‹คํ–‰์‹œ์ผœ์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ ์œ ์šฉ

      โžก๏ธ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ •์˜ํ•  ๋•Œ์—๋Š” '?' ์„ ์‚ฌ์šฉํ•˜๊ณ  ๋งค๊ฐœ๋ณ€์ˆ˜์— ๊ฐ’์„ ์„ค์ •ํ• ๋•Œ์—๋Š” set๊ณ„์—ด ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉ

 

 

  ๐Ÿ“Œ DBMS์™€ Java์˜ ์ž๋ฃŒํ˜• ๋ณ€ํ™˜

   · DBMS์—์„œ์˜ ์ปฌ๋Ÿผ์˜ ์ž๋ฃŒํ˜•๊ณผ Java ์ž๋ฃŒํ˜•, ๊ทธ๋ฆฌ๊ณ  ๊ด€๋ จ๋œ JDBC ๋ฉ”์†Œ๋“œ ๊ฐ„์˜ ๋ณ€ํ™˜ํ‘œ

 
DBMS ์ž๋ฃŒํ˜•
Java ์ž๋ฃŒํ˜•
ResultSet ๋ฉ”์„œ๋“œ
PreparedStatement ๋ฉ”์„œ๋“œ
CHAR
String
getString
setString
VARCHAR
String
getString
setString
DECIMAL
java.math.BigDecimal
getBigDecimal
setBigDecimal
NUMBER
java.math.BigDecimal
getBigDecimal
setBigDecimal
TINYINT
byte
getByte
setByte
SMALLINT
short
getShort
setShort
INTEGER
int
getInt
setInt
BIGINT
long
getLong
setLong
REAL
float
getFloat
setFloat
FLOAT
double
getDouble
setDouble
DOUBLE
double
getDouble
setDouble
DATE
java.sql.Date
getDate
setDate
TIME
java.sql.Time
getTime
setTime
CLOB
Clob
getClob
setClob
BLOB
Blob
getBlob
setBlob
TIMESTAMP
java.sql.Timestamp
getTimestamp
setTimestamp

 

 

 

 

 

 

 

 

[ ๋‚ด์šฉ ์ฐธ๊ณ  : IT ํ•™์› ์ˆ˜์—… ๋‚ด์šฉ ]

 

 

 

 

+ Recent posts