ํ์ ์ํ ๋งํ๊ณ ๋ค์ ์ ๋ฆฌํ๋ JDBC ๐ญ
Java Database Connectivity
์๋ฐ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ํ ์ ์๋๋ก ํ๋ ์๋ฐ API
(API : Application Programming Interfaces
/ ์๋ฐAPI : ์๋ฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๊ฒ ๊ตฌํํ ์ ์๋๋ก ํ ํด๋์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์งํฉ)
JDBC ์ธํฐํ์ด์ค : JDBC ํ๋ก๊ทธ๋จ์ ํ๊ธฐ ์ํ API, Java SE(Java Standard Edition)์์ ์ ๊ณตํ๋ java.sql ํจํค์ง
JDBC ๋๋ผ์ด๋ฒ : JDBC ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ํด๋์ค ํ์ผ ๋ชจ์(jarํ์ผ)
๐ฉ๐ผโ๐ป JDBC ์ฌ์ฉํ๊ธฐ
โ Register Driver
Class.forName~
๋๋ผ์ด๋ฒ ๋ก๋ฉ > ๊ฐ์ฒด์์ฑ
DriverManager ํด๋์ค > DB์ ์ ์
Driver Class ๋ชป์ฐพ์ผ๋ฉด? > ClassNotFound ์์ธ์ฒ๋ฆฌ
โผ
โก Get Connection
Connection ๊ฐ์ฒด ์์ฑ
DriverManager.getConnection(url, uid, upw)
โผ
โข Create statement
stmt = conn.createStatement;
โผ
โฃ Execute Query
rs=stmt.executeQuery("์ฟผ๋ฆฌ๋ฌธ");
โผ
โค Close connection
String sql = "์ฟผ๋ฆฌ๋ฌธ"; // ? ๋งค๊ฐ๋ณ์์ ๊ฐ ์ง์
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, ๊ฐ);
pstmt.setInt(2, ๊ฐ);
pstmt.executeUpdate();
์ฟผ๋ฆฌ๋ฌธ์ ์ํด ์์ฑ๋ ํ ์ด๋ธ์ ์ ์ฅํ๋ ๊ฐ์ฒด, ๊ฒฐ๊ณผ ๋ฆฌํด
rs = stmt.executeQuery(sql);
conn.createStatement : ์๋ฐฉํฅ์ผ๋ก๋ง ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด๋ด๋ ค๊ฐ
TYPE_SCROLL_SENSITIVE : ์/์ญ๋ฐฉํฅ ์ด๋ ๊ฐ๋ฅ but ์์ ๊ฒฐ๊ณผ ๋ฐ๋ก ๋ฐ์ X
TYPE_SCROLL_INSENSITIVE :
์/์ญ๋ฐฉํฅ ์ด๋ ๊ฐ๋ฅ, ์์ ๊ฒฐ๊ณผ ๋ฐ๋ก ๋ฐ์
rs.next()์ฌ์ฉ ์ ๋ค์ row ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ธ์ค๊ณ ์ด์ row๋ก ๋์๊ฐ ์ ์๋๋ฐ, TYPE_SCROLL_INSENSITIVE ์ฌ์ฉ ์ ์ปค์๋ฅผ ์ด์ ์ผ๋ก ๋๋๋ฆด ์ ์๋ค.
CONCUR_UPDATABLE : ์์ ๊ฐ๋ฅ
CONCUR_READ_ONLY : ์ฝ๊ธฐ์ ์ฉ
stmt = conn.createStatement
(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
rs.next()๋ฅผ ํ ๋ฒ์ด๋ผ๋ ์ฌ์ฉํ๋ค๋ฉด ์ปค์ ์ด๋
-> ํ์ while(rs.next())์ฐ๋ฉด ์ด์ ๋ฐ์ดํฐ๊ฐ ์๋์จ๋ค!
โถ
โ conn.createStatement ์ฐ๊ณ while๋ฌธ ์์ rs.beforeFirst() ์ถ๊ฐ
or
โก if (res.next()) { res.beforeFirst(); } ์ฌ์ฉ