1. JDBC ; Java DataBase Connectivity
๐ฉ๐ป๐ป ์๋ฐ / 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 ํ์ ์์ ๋ด์ฉ ]
'Database > MySQL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[MySQL] INNER JOIN / OUTER JOIN / CROSS JOIN / SELF JOIN (2) | 2024.02.25 |
---|---|
[MySQL] JDBC ์์ (0) | 2024.02.25 |
[MySQL] ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ๋ง | ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ (1) | 2024.02.25 |
[MySQL] ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ๋ง | 1~3 ์ ๊ทํ, ์ญ์ ๊ทํ (1) | 2024.02.25 |
[MySQL] ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ๋ง | ์งํ๋จ๊ณ, ๋ถ๋ฅ, ์ํฐํฐ, ๊ด๊ณ (0) | 2024.02.25 |