1. JDBC๋?
Java DataBase Connector๋ก ์๋ฐ์ ์ค๋ผํด๊ฐ์ ๋ฐ์ดํฐ ๋ฒ ์ด์ค๋ฅผ ์ฐ๋ํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
JDBC ๋ง๊ณ ๋ ์๋ฐ์์๋ ๋ค์ํ ๋ฐฉ๋ฒ์ผ๋ก db์ ์ฐ๊ฒฐ์ ํ ์๊ฐ ์์ต๋๋ค~ ใ
ใ
ใ
Spring JPA๋ MyBatis ๋ฑ์ ํ๋ ์์ํฌ๋ฅผ ์จ์ ์ฐ๊ฒฐํ๋ ๋ฐฉ์์ด ๊ฐ์ฅ ์ ์๋ ค์ ธ ์์ฃ .

์ฌ์ค JDBC๋ ์ค๋๋ ๋ฐฉ์ ์ค์ ํ๋์ด๊ณ , ์์ฆ์ ๋ง์ด ์ฐ์ด์ง๋ ์์ง๋ง, ๊ฐ์ฅ ๊ฐ๋จํ๊ฒ ์ดํด๋ฆฝ์ค์์ db์ฐ๋์ ์ค์ตํด ๋ณผ ์ ์๋ค๋ ์ ์์ ์ด๋ณด ๊ฐ๋ฐ์ ๋ถ๋ค์ ์์๋์๋ฉด ์ข๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ ๊ฐ ํญ์ ๊ฐ์กฐํ๋ ๊ฒ์ '์ ๊ธฐ์ ์ด๋ ํธ๋ ๋๋ฅผ ์๋ฉด ์ข์ง๋ง, ์๋ก๋์จ ๊ธฐ์ ์ด ์๋ ๊ธฐ์ ๋ณด๋ค ํญ์ ๋ ์ข์ ๊ฒ์ ์๋๋ค' ๋ผ๋ ๊ฒ์
๋๋ค.
์๋ก ๋์จ ๊ฒ๋ค๋ณด๋ค ๊ธฐ์กด์ ์๋ ๋ฐฉ์์ผ๋ก ๋ง๋ค์ด์ง ํ๋ก๊ทธ๋จ๋ค์ด ์ ๋ง ํจ์ฌ ๋ง๊ณ , ๊ทธ๊ฒ๋ค์ด ์ฌ์ ํ ์ ์ง๋ณด์๊ฐ ๋๊ณ ์์ต๋๋ค. JQuery๋ JDBC๋ฅผ ๋ณด๊ณ ํ๋ฑ์ฝ๋ฉ์ด๋ค ๋ญ ์ด๋ฐ ๋ง์ ํ์๋ ๋ถ๋ค๋ ๊ณ์ ๋ฐ, ์ค๋ ์จ์จ ๋ฐฉ์๋ค์ ๊ทธ๋งํผ ์ค๋ฅ๋ ์ ๊ณ ์์ ์ฑ์ด ๋ณด์ฅ์ด ๋๊ธฐ ๋๋ฌธ์ ๋ญ๋ ์ง ์ผ๋จ ์์๋์๋ฉด ์ข์ต๋๋ค.
์ ๊ฐ ์๋ ์ค์ต์ฝ๋ ์ฌ๋ ค ๋์์ผ๋ ํ ์ค์ฉ ์
๋ ฅํด๋ณด์๋ฉด์ ๋ฐ๋ผ ํด ๋ณด์ธ์~
์ ๋ง ์ฝ๊ณ ์ด๋ ต์ง ์์ต๋๋ค. DB๋ Oracle์ฌ์์ ๋ฌด๋ฃ๋ก ์ ๊ณตํ๋ Oracle DB ๋ค์ด๋ฐ์ผ์
์ ํ์๋ฉด ๋ฉ๋๋ค.
DB์ ์์ด๋์ ๋น๋ฐ๋ฒํธ ์ ๋๋ฅผ ์ ์ฅํ๋ ๊ฐ๋จํ ํ์๊ฐ์
์ฟผ๋ฆฌ๋ฅผ ์ฐ์ตํด ๋ณผ๊ฑด๋ฐ์.
์ ์ฒด ์ฝ๋๋ ๋งจ ๋ง์ง๋ง์ ์์ผ๋ ์ผ๋จ ์์๋๋ก ์ฝ์ด ๋ณด์๊ณ ๋ง์ง๋ง์ ๋ฐ๋ผ ํด ๋ณด์๊ธธ ์ถ์ฒ๋๋ฆฝ๋๋ค.
๊ทธ๋ฆฌ๊ตฌ ์ ๊ฐ ์์ ์ JAVA ์๊ฐ์ ๋ฐฐ์ด ์์
๋ด์ฉ์ ์ ๋ฆฌํ ๊ฒ์ด๋ *๋ถํ๊ธ์ง*
ํฌ์คํ
ํ๋๋ฐ 3์๊ฐ ๊ฑธ๋ฆผ...๋๋ณด๋ค ์ ๋ฆฌ ์ ํ ์ฌ๋ ์์ผ๋ฉด ๋์๋ณด๋ผ๊ตฌ ํด > <
2. JDBC ์๋ ์๋ฆฌ


JDBC ์ฐ๊ฒฐ ์์ 5๋จ๊ณ
1. ๋๋ผ์ด๋ฒ ๋ก๋ฉ
2. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ
3. Query ์ ์ก
4. ๊ฒฐ๊ณผ๋ฅผ ์ด์ฉํ ์์
์ฒ๋ฆฌ
5. ์์ ๋ฐ๋ฉ
STEP1. ๋๋ผ์ด๋ฒ ๋ก๋ฉ
Class.forName("oracle.jdbc.driver.OracleDriver");
Class.forName() ๋ฉ์๋๋ก JDBC ๋๋ผ์ด๋ฒ๋ฅผ ๋ถ๋ฌ์ค๋ ๊ณผ์ ์ด๋ค.
JDBC ๋๋ผ์ด๋ฒ๋?
์๋ฐ์์ ์ ๊ณตํด์ฃผ๋ ์ธํฐํ์ด์ค๋ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ์ฌ์์ ์์์ ๋ฐ์์ ๋ก์ง์ ๊ตฌํํ ํด๋์ค ํ์ผ๋ค์ ๋ชจ์์ด๋ค.
๋๋ผ์ด๋ฒ ๋ก๋ฉ์ด๋ ์ฐ๋ฆฌ๊ฐ ์ด๋ค ํ์ฌ์ DB๋ฅผ ์ฌ์ฉํ ๊ฒ์ธ์ง ๊ฒฐ์ ํ๋ ๊ฒ์ด๋ค. ๋ค๋ง ์ด ๋จ๊ณ์์๋ Syntax Error(๊ตฌ๋ฌธ์ค๋ฅ)์ธ ClassNotFoundException๋ผ๋ ์์ธ ์ํฉ์ด ๋ฐ์ํ ์๊ฐ ์๊ธฐ ๋๋ฌธ์ try-catch ๋ธ๋ก์ผ๋ก ์ก์ ์ค์ผ ํ๋ค.
ClassNotFoundException ๋ฐฉ์งํ๋ ๋ฒ
(1) ๋งค๊ฐ๋ณ์์ ์คํ ์๋์ง ํ์ธ
(2) ํ๋ก์ ํธ์ ojdbc6.jarํ์ผ ์ถ๊ฐํ๋์ง ํ์ธ. (๋ฒ์ ๋ง๋ค jar ํ์ผ ์ด๋ฆ ๋ค๋ฆ)
๋๋ผ์ด๋ฒ๋ฅผ ๋ก๋ฉํ๋ ๊ณผ์ ์์ ๋ฐ๋์ ํ๋ก์ ํธ์ jar ํ์ผ์ ์ฐ๊ฒฐํด ์ฃผ์ด์ผ ํ๋ค.
jar ํ์ผ์ด๋?
ํ์ฅ์๊ฐ jar์ธ ํ์ผ๋ก ๊น์ด ๋ชจ๋ฝ๋ชจ๋ฝ ๋๋ ์ปต ์์ด์ฝ์ด๋ค. ์ฝ๊ฒ ๋งํด์ ํด๋์ค๋ฅผ ์ฌ๋ฌ ๊ฐ ๋ชจ์์ ์์ถํ ํ์ผ์ด jar ํ์ผ์ด๋ค. ๊ทธ๋ฅ ์ฐ๋ฆฌ๊ฐ ์๋ zip์ด๋ ๋น์ทํ๋ค๊ณ ์๊ฐํ๋ฉด ๋๋๋ฐ ์๋ฐ์์ ํธํ๋๋ ํ์ฅ์๊ฐ jar์ด๋ค.
ํ๋ก์ ํธ์ jar ํ์ผ ์ถ๊ฐํ๋ ๋ฒ
ํ๋ก์ ํธ ์ ํ > ๋ง์ฐ์ค ์ฐํด๋ฆญ > [build path] > [configure build path] > [libraries] ํญ > [class path] ์ ํ > ์ฐ์ธก์ [add external jars] ์ ํ > ์ํ๋ jar ํ์ผ ๊ฒฝ๋ก ์ ํ > apply and close

Oracle JDBC์ฉ jar ํ์ผ ๋ค์ด๋ฐ๋ ๋ฒ
https://www.oracle.com/kr/database/technologies/appdev/jdbc-downloads.html
JDBC and UCP Downloads page | Oracle ๋ํ๋ฏผ๊ตญ
Oracle JDBC Driver Implements JDBC 4.2 spec and certified with JDK8, JDK11, JDK17, and JDK19 Oracle JDBC driver except classes for NLS support in Oracle Object and Collection types. (4,535,061 bytes) - (SHA1: f46bbf6c42210736236e81bb18a955e3e1aa9a88)
www.oracle.com
์๋ฐ 8 ์ด์ ๋ฒ์ ์์๋ ojdbc8.jar, ์๋ฐ 11 ๋ฒ์ ์ด์์ ojdbc11.jar ๋ค์ด (2024.11.4. ํ์ฌ ๊ธฐ์ค)

STEP2. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ์ ํ์ํ 3๊ฐ์ง ์ค๋น๋ฌผ : url(์ฐ๊ฒฐ๊ฒฝ๋ก), user(๊ณ์ ์ด๋ฆ), password(ํจ์ค์๋)
์ ์ธ ๊ฐ์ง๊ฐ ์ค๋น ๋์๋ค๋ฉด Connection ๊ฐ์ฒด์ DriverManager.getConnection(url, user, passworld) ๋ฅผ ๋ด์ ์ฃผ์
String url = "jdbc:oracle:thin:@127.0.0.1:1520:jdbctest";
String user = "service";
String passward = "12345";
// jdbc:oracle:thin --> oracle thin๋ฒ์
// @127.0.0.1 --> ip์ฃผ์
// 1520 --> ํฌํธ ๋ฒํธ(์ค๋ณตx)
// jdbctest --> ์ฌ์ฉ์๊ฐ ์ค์ ํ oracle db ๋ณ์นญ
Connection conn = DriverManager.getConnection(url, user, passward);
๊ธฐ๋ณธ์ ์ธ Oracle์ URL ํ์
jdbc:oracle:thin:@<ํธ์คํธ>:<ํฌํธ>:<SID>
jdbc:oracle:thin:@localhost:1521:xe
- ํธ์คํธ: ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ์ IP ์ฃผ์๋ ๋๋ฉ์ธ ์ด๋ฆ
- ํฌํธ: ๊ธฐ๋ณธ์ ์ผ๋ก Oracle์ 1521 ํฌํธ๋ฅผ ์ฌ์ฉ
- SID: ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์์คํ ์๋ณ์(SID)
IP ์ฃผ์ ๋์ ์๋น์ค์ด๋ฆ(localhost)์ ์จ ์ค๋ ๋๋ค.
jdbc:oracle:thin:@//<ํธ์คํธ>:<ํฌํธ>/<์๋น์ค ์ด๋ฆ>
jdbc:oracle:thin:@//localhost:1521/orclpdb1
Connection ์ด๋?
Connection conn = DriverManager.getConnection(url, user, passward);
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ํ๊ธฐ ์ํ ๋ชจ๋ ๋ฉ์๋๋ฅผ ๊ฐ์ง๊ณ ์๋ ์ธํฐํ์ด์ค, ์ฆ MetaData
๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ชจ๋ ํต์ ์ Connection ๊ฐ์ฒด๋ฅผ ํตํด์๋ง ์ด๋ฃจ์ด์ง๋ค.
conn์ ์ฌ์ฉ ๊ฐ๋ฅํ ํ
์ด๋ธ ๋ชฉ๋ก, ์ปฌ๋ผ ์ ๋ณด ๋ฑ ์ฐ๊ฒฐ๋ DB์ ๋ชจ๋ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
STEP3. Query ์ ์ก
jdbc๋ MyBatis ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ Spring JPA์ฒ๋ผ ๋ณตํฉํ ์ฟผ๋ฆฌ๋ฅผ ๋ค๋ฃจ๊ธฐ์๋ ์ ํฉํ์ง ์์ง๋ง ๊ฐ๋จํ CRUD ๋ฌธ ์ ๋๋ ์ฒ๋ฆฌ ๊ฐ๋ฅํ๋ค.
์ค์ db์์ ์ฐ์ด๋ SQL ์ฟผ๋ฆฌ๋ฌธ์ ์์ฑํด์ db์ ์ ์กํ๊ธฐ ์ํ ์ค๋น๋ฅผ ํ๋ ๋จ๊ณ์ด๋ค. ๋ ๊ฐ์ง ์ค๋น๋ฌผ์ด ํ์ํ๋ฐ, ์ฒซ๋ฒ์งธ๋ก Stringํ์
์ ์ฟผ๋ฆฌ๋ฌธ์ด๋ค. ์ด ์ฟผ๋ฆฌ๋ฌธ์ PreparedStatement๋ผ๋ ๊ฐ์ฒด์ ๋ด์์ db์ ๋ณด๋ธ๋ค. ๋ณดํต PreparedStatement๋ฅผ ์ค์ฌ์ psmt๋ผ๊ณ ์ ์ธํ๋๋ฐ, ๊ทธ๋ฅ ์ฟผ๋ฆฌ๋ฅผ ๋ด์์ db๋ก ๋ณด๋ด๋ ๋๊ตฌ(์๋ ) ์ ๋๋ก ์๊ฐํ๋ฉด ์ดํดํ๊ธฐ ํธํ๋ค.
if(conn != null) {
System.out.println("์ฐ๊ฒฐ์ฑ๊ณต");
}
String sql = "INSERT INTO AIMEMBER VALUES(?,?,?,?)";
// ?์ธ์
// : ์ฌ์ฉ์๋ก๋ถํฐ ์ด๋ค ๋ฐ์ดํฐ๊ฐ ๋ค์ด์ฌ์ง ๋ชจ๋ฅผ ๋ ์ฌ์ฉ
// : ์ง์ ํ ๋ฐ์ดํฐ ๊ณต๊ฐ ๋งํผ ๋น์๋๊ณ ์คํํ๊ธฐ ์ ๊น์ง ๋๊ธฐ
// DB์ ์ ์กํ ์ ์๋๋ก PrepareStatement๊ฐ์ฒด์ ๋ด์์ฃผ๊ธฐ
PrepareStatement psmt = conn.prepareStatement(sql);
// ์ ์กํ๊ธฐ ์ ์ ?์ธ์ ์ฑ์ฐ๋ ์์
psmt.setString(1, id);
psmt.setString(2, pw);
psmt.setString(3, name);
psmt.setInt(4, age);
if(conn != null) {
System.out.println("์ฐ๊ฒฐ์ฑ๊ณต");
}
conn ๊ฐ์ฒด๊ฐ null์ด ์๋๋ฉด ์ฐ๊ฒฐ ์ฑ๊ณต์ด๋ผ๋ ๋ฉ์ธ์ง๋ฅผ ์ฝ์์ฐฝ์ ๋์ด๋ค. conn์ด null์ด ์๋๋ผ๋ ๋ง์ db ์ฐ๊ฒฐ์ด ์ ์์ ์ผ๋ก ์ํ๋์ด์ ๋ฐ์ดํฐ๊ฐ conn ๊ฐ์ฒด ์์ ์ ๋ค์ด์ ์๋ค๋ ๊ฒ์ด๋ค. ์ฆ, ์ด ์ฝ๋๋ DB ์ฐ๊ฒฐ์ด ์ ์์ ์ผ๋ก ์ ๋์๋์ง ํ์ธํ๊ธฐ ์ํ ๊ฒ์ด๋ค. ๋ง์ฝ conn ์ด ๋น์ด ์๋ค๋ฉด db ์ฐ๊ฒฐ์ ๋ฌธ์ ๊ฐ ์๊ฒผ๋ค๋ ๋ป์ด๊ณ , ์ฟผ๋ฆฌ๋ฅผ ์คํํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ผ์ด๋ฒ ๋ก๋ฉ๋ถํฐ ๋ค์ ํ์ธํด ๋ด์ผ ํ๋ค.
์ ์ฝ๋์์๋ PreaparedStatement psmt ๋ฅผ ์ค๊ฐ์ ์ ์ธํ๋๋ฐ ์ฌ์ค์ main์์ญ ๋งจ ์์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ด๊ธฐํ ํด ์ฃผ๋๊ฒ ๋ ์ข์ ์ฝ๋์ด๋ค. Scanner ์ ์ธํ ๋ ๊ฐ์ด ์ ์ธํ๊ณ null๊ฐ์ผ๋ก ์ธํ
ํด๋์ผ๋ฉด ๋๋ค.
String sql = "INSERT INTO AIMEMBER VALUES(?,?,?,?)";
psmt.setString(1, id);
์ฒ์์ sql ๋ณ์์ '?' ์ธ์๋ฅผ ๋น์๋๋ ์ด์ ๋ ์ด ์๋ฆฌ์ ์ด๋ค ๊ฐ์ด ๋ค์ด์ฌ ์ง ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์ด๋ค. ์ผ๋จ ๋น์ ๋๊ณ psmt.setString, psmt.setInt ๋ฉ์๋๋ฅผ ํตํด '?' ์ธ์๋ฅผ ์ฑ์์ค๋ค.
STEP4. ๊ฒฐ๊ณผ๋ฅผ ์ด์ฉํ ์์ ์ฒ๋ฆฌ
// SQL๋ฌธ ์ ์ก(์คํ) --DML(delete, insert, update)
int row = psmt.executeUpdate();
// excuteUpdate() : insert, delete, update์ ์ฌ์ฉ
// ๊ฒฐ๊ณผ๋ฅผ ์ด์ฉํ ์์
์ฒ๋ฆฌ
if(row > 0) {
System.out.println("ํ์๊ฐ์
์ฑ๊ณต");
} else {
System.out.println("ํ์๊ฐ์
์คํจ");
}
์ฟผ๋ฆฌ๋ฅผ ๋ณด๋ด์ฃผ๋ ๋จ๊ณ์ด๋ค. psmt.executeUpdate() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋๋ฐ ๊ทธ ๊ฒฐ๊ณผ๊ฐ์ด intํ์ผ๋ก ๋ฆฌํด๋๋ ๊ฒ์ ์ ์ ์๋ค.
executeUpdate() ๋ฉ์๋๋ insert, delete, update์๋ง ์ฌ์ฉ๋๊ณ select์๋ ์ฌ์ฉ๋์ง ์๋๋ค.
์ด ์ฝ๋์์ intํ์
์ ๊ฒฐ๊ณผ๊ฐ์ผ๋ก ๋ญ ๋ฐ์์ค๋ ๊ฑธ๊น? ๋ฐ๋ก executeUpdate() ๋ฉ์๋์ ์ํฅ์ ๋ฐ์ ํ์ ์๋ฅผ ๋ฐํํ๋ค. ์ฃผ๋ก INSERT, UPDATE, DELETE ์์
ํ์ ์ฌ์ฉ๋๋ค. ํ ์ถ๊ฐ, ํ ์ญ์ ๋ฑ์ ํตํด ์ํฅ์ ๋ฐ์ ํ์ ์ซ์์ด๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ select๋ executeUpdate() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค. select๋ ๋จ์ํ ๋ฐ์ดํฐ๋ฅผ ์กฐํ๋ง ํ๊ณ ์์ ์ ํ์ง ์๊ธฐ ๋๋ฌธ์ ํ ์ซ์์ ๋ณ๋์ด ์๋ค.
๊ทธ๋ผ Select ์ฟผ๋ฆฌ๋ฅผ ์ํํ ๋๋ ์ด๋ค ๋ฉ์๋๋ฅผ ์ฐ๋๊ฐ? executeQuery()๋ฅผ ์ฌ์ฉํ๋ค.
๊ฒฐ๊ณผ๊ฐ์ int๊ฐ ์๋๋ผ ResultSet ๊ฐ์ฒด์ ๋ด๊ธด๋ค.
String sql = "SELECT * FROM users";
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
System.out.println("ID: " + id + ", Name: " + name);
}
SELECT๋ก ์กฐํํ๋ ๋ฐ์ดํฐ๋ค์ ๋ณดํต ์ฌ๋ฌ ์ค ์ด๋ฏ๋ก rs.next()๋ฅผ ํธ์ถํด์ ๋ค์ ์ค๋ก ์ปค์ ์ด๋์ ํด ์ค๋ค. ๋ค์ ํ์ด ์กด์ฌํ๋ ๊ฒฝ์ฐ true๋ฅผ ๋ฐํํ๊ณ , ๋ ์ด์ ํ์ด ์์ ๊ฒฝ์ฐ false๋ฅผ ๋ฐํํ๋ค. ๊ทธ๋์ while ๋ฃจํ๋ก ๋ชจ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ค.
// ๊ฒฐ๊ณผ๋ฅผ ์ด์ฉํ ์์
์ฒ๋ฆฌ
if(row > 0) {
System.out.println("ํ์๊ฐ์
์ฑ๊ณต");
} else {
System.out.println("ํ์๊ฐ์
์คํจ");
}
๊ฒฐ๊ณผ๋ฅผ ์ํ ์์
์ฒ๋ฆฌ๋ฅผ ํ๋ ์ด์ ๋ ์์
์ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฉ์์๊ฒ ์๊ฐ์ ์ผ๋ก ๋ณด์ฌ์ฃผ๊ธฐ ์ํด์์ด๋ค. psmt.executeUpdate()๊ฐ ์ค๋ฅ์์ด ์ ์คํ์ด ๋์๋ค๋ฉด, row์ 0๋ณด๋ค ํฐ ๊ฐ์ด ๋ค์ด๊ฐ๋ค. ์ด๊ฒ์ ์ด์ฉํด์ ์ฌ์ฉ์์๊ฒ ํ์๊ฐ์
์ฑ๊ณต ์ฌ๋ถ๋ฅผ ๋์ ์ค ์ ์๋ฐ.
STEP5. ์์ ํด์
์ฌ๊ธฐ๊น์ง ์์ผ๋ฉด ๋ค ์๋ค. ใ
try {
// ์์์ ๋ฐ๋ฉํ ๋๋ ์ฌ์ฉํ ์์์ ์ญ์์ผ๋ก ๋ฐ๋ฉ
if(psmt != null)
psmt.close(); // sql๋ฌธ ์ ์ก ์ข
๋ฃ
if(conn !=null)
conn.close(); // DB์ฐ๊ฒฐ ์ข
๋ฃ
} catch (SQLException e) {
e.printStackTrace();
}
conn์ ๋จผ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ psmt ๋จผ์ ๋ซ์ ์ฃผ๊ณ , conn์ ๋ซ์ ์ค๋ค. ์์ธ์ฒ๋ฆฌ๋ ๊ฐ์ด ํด ์ฃผ๋ ๊ฒ์ด ์ข๋ค.
3. JDBC ๋ก๊ทธ์ธ ์ ์ฒด ์ฝ๋
package ex01JDBC๋ก๊ทธ์ธ;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;
public class ex01ํ์๊ฐ์
{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("ID ์
๋ ฅ : ");
String id = sc.next();
System.out.print("PW ์
๋ ฅ : ");
String pw = sc.next();
System.out.print("์ด๋ฆ ์
๋ ฅ : ");
String name = sc.next();
System.out.print("๋์ด ์
๋ ฅ : ");
int age = sc.nextInt();
PreparedStatement psmt = null;
Connection conn = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@127.0.0.1:1521:xe";
String user = "service";
String passward = "12345";
conn = DriverManager.getConnection(url, user, passward);
if(conn != null) {
System.out.println("์ฐ๊ฒฐ์ฑ๊ณต");
}
String sql = "INSERT INTO AIMEMBER VALUES(?,?,?,?)";
psmt = conn.prepareStatement(sql);
psmt.setString(1, id);
psmt.setString(2, pw);
psmt.setString(3, name);
psmt.setInt(4, age);
int row = psmt.executeUpdate();
if(row > 0) {
System.out.println("ํ์๊ฐ์
์ฑ๊ณต");
} else {
System.out.println("ํ์๊ฐ์
์คํจ");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if(psmt != null)
psmt.close();
if(conn != null)
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
์ฌ๊ธฐ๊น์ง ํฌ์คํ
ํ๋๋ผ ๋๋ฌด ํ๋ค์๋ค.
ํ์ง๋ง, ์ด ํฌ์คํ
์ ํ๋ฉด์ ๋๋ ๊ฒ์ ์์ ์๋ JDBC๋ฅผ ํ๋ฉด์ ํ๋๋ ์ดํด๊ฐ ์ ๋๋๋ฐ ์ด์ ๋ ์ด ์ ๋์ฏค์ ์๋ฌด๊ฒ๋ ์๋๋ผ๋ ๊ฒ์ด๋ค. ์ฒ์์ ์๋ฐ ๋ณ์ฐ๊ธฐ๋ ์ด๋ ค์ ํ ๋๊ฐ ์์๋๋ฐใ
ใ
ใ
ใ
์ ๋ง๋ก ๊พธ์คํ ํ๋ฉด ๋๊ตฌ๋ ์ง ์์ ์ ์ด๋ ค์ํ๋ ๊ฒ์ ์ฝ๊ฒ ํ ์ ์๋ ๋ ์ด ์จ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ญ๋ ์ง ๊ทธ๋ง๋๊ณ ํฌ๊ธฐํ๊ฒ ๋ง๋๋ ๊ฐ์ฅ ํฐ ์ ์ ๋๋ ค์์ด๋ค. ์ด๋ ต๋๋ผ๋ ๋ณ ๊ฒ ์๋ ๊ฑฐ๋ผ๊ณ ์๊ฐํ๊ณ ํ๋ ๋ง์๊ฐ์ง์ด ํ์ํ๋ฉฐ, ๋งค์ผ ์กฐ๊ธ์ฉ ๊พธ์คํ ํ๋ ๊ฒ์ด ์ค์ํ๋ค.
์ฌ๋ฌ๋ถ ํ๋ด์๊ตฌ ์ข์ ํ๋ฃจ ๋ณด๋ด์ธ์
ํฌ์คํ ์ ์ฐธ๊ณ ํ ์๋ฃ
https://www.javamadesoeasy.com/2015/07/jdbc-connection-with-oracle-11g.html
JDBC connection with Oracle 11g - ojdbc6.jar - configure java build path - registering driver - getConnection - Writing your Fir
You are here : Home / Core Java Tutorials / JDBC - Java Database connectivity tutorial In this tutorial we will learn JDBC conne...
www.javamadesoeasy.com
https://blog.naver.com/yeon_doit/223335756094
[์ค๋งํธ์ธ์ฌ๊ฐ๋ฐ์ ๊ด์ฃผ๋จ๊ตฌ์ ] JDBC๋? ์ค์ต์ ํตํด ์์๋ณด์.
์๋ ํ์ญ๋๊น! ์ ๋ ๊ด์ฃผ ์ค๋งํธ์ธ์ฌ๊ฐ๋ฐ์์์ ๋น ๋ฐ์ดํฐ ๊ณผ์ ์ ๋ฃ๊ณ ์์ต๋๋ค. ์ค๋งํธ์ธ์ฌ๊ฐ๋ฐ์์ ๊ตญ๋น...
blog.naver.com
'ํ๋ก๊ทธ๋๋ฐ์ธ์ด > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
1. JDBC๋?
Java DataBase Connector๋ก ์๋ฐ์ ์ค๋ผํด๊ฐ์ ๋ฐ์ดํฐ ๋ฒ ์ด์ค๋ฅผ ์ฐ๋ํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
JDBC ๋ง๊ณ ๋ ์๋ฐ์์๋ ๋ค์ํ ๋ฐฉ๋ฒ์ผ๋ก db์ ์ฐ๊ฒฐ์ ํ ์๊ฐ ์์ต๋๋ค~ ใ
ใ
ใ
Spring JPA๋ MyBatis ๋ฑ์ ํ๋ ์์ํฌ๋ฅผ ์จ์ ์ฐ๊ฒฐํ๋ ๋ฐฉ์์ด ๊ฐ์ฅ ์ ์๋ ค์ ธ ์์ฃ .

์ฌ์ค JDBC๋ ์ค๋๋ ๋ฐฉ์ ์ค์ ํ๋์ด๊ณ , ์์ฆ์ ๋ง์ด ์ฐ์ด์ง๋ ์์ง๋ง, ๊ฐ์ฅ ๊ฐ๋จํ๊ฒ ์ดํด๋ฆฝ์ค์์ db์ฐ๋์ ์ค์ตํด ๋ณผ ์ ์๋ค๋ ์ ์์ ์ด๋ณด ๊ฐ๋ฐ์ ๋ถ๋ค์ ์์๋์๋ฉด ์ข๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ ๊ฐ ํญ์ ๊ฐ์กฐํ๋ ๊ฒ์ '์ ๊ธฐ์ ์ด๋ ํธ๋ ๋๋ฅผ ์๋ฉด ์ข์ง๋ง, ์๋ก๋์จ ๊ธฐ์ ์ด ์๋ ๊ธฐ์ ๋ณด๋ค ํญ์ ๋ ์ข์ ๊ฒ์ ์๋๋ค' ๋ผ๋ ๊ฒ์
๋๋ค.
์๋ก ๋์จ ๊ฒ๋ค๋ณด๋ค ๊ธฐ์กด์ ์๋ ๋ฐฉ์์ผ๋ก ๋ง๋ค์ด์ง ํ๋ก๊ทธ๋จ๋ค์ด ์ ๋ง ํจ์ฌ ๋ง๊ณ , ๊ทธ๊ฒ๋ค์ด ์ฌ์ ํ ์ ์ง๋ณด์๊ฐ ๋๊ณ ์์ต๋๋ค. JQuery๋ JDBC๋ฅผ ๋ณด๊ณ ํ๋ฑ์ฝ๋ฉ์ด๋ค ๋ญ ์ด๋ฐ ๋ง์ ํ์๋ ๋ถ๋ค๋ ๊ณ์ ๋ฐ, ์ค๋ ์จ์จ ๋ฐฉ์๋ค์ ๊ทธ๋งํผ ์ค๋ฅ๋ ์ ๊ณ ์์ ์ฑ์ด ๋ณด์ฅ์ด ๋๊ธฐ ๋๋ฌธ์ ๋ญ๋ ์ง ์ผ๋จ ์์๋์๋ฉด ์ข์ต๋๋ค.
์ ๊ฐ ์๋ ์ค์ต์ฝ๋ ์ฌ๋ ค ๋์์ผ๋ ํ ์ค์ฉ ์
๋ ฅํด๋ณด์๋ฉด์ ๋ฐ๋ผ ํด ๋ณด์ธ์~
์ ๋ง ์ฝ๊ณ ์ด๋ ต์ง ์์ต๋๋ค. DB๋ Oracle์ฌ์์ ๋ฌด๋ฃ๋ก ์ ๊ณตํ๋ Oracle DB ๋ค์ด๋ฐ์ผ์
์ ํ์๋ฉด ๋ฉ๋๋ค.
DB์ ์์ด๋์ ๋น๋ฐ๋ฒํธ ์ ๋๋ฅผ ์ ์ฅํ๋ ๊ฐ๋จํ ํ์๊ฐ์
์ฟผ๋ฆฌ๋ฅผ ์ฐ์ตํด ๋ณผ๊ฑด๋ฐ์.
์ ์ฒด ์ฝ๋๋ ๋งจ ๋ง์ง๋ง์ ์์ผ๋ ์ผ๋จ ์์๋๋ก ์ฝ์ด ๋ณด์๊ณ ๋ง์ง๋ง์ ๋ฐ๋ผ ํด ๋ณด์๊ธธ ์ถ์ฒ๋๋ฆฝ๋๋ค.
๊ทธ๋ฆฌ๊ตฌ ์ ๊ฐ ์์ ์ JAVA ์๊ฐ์ ๋ฐฐ์ด ์์
๋ด์ฉ์ ์ ๋ฆฌํ ๊ฒ์ด๋ *๋ถํ๊ธ์ง*
ํฌ์คํ
ํ๋๋ฐ 3์๊ฐ ๊ฑธ๋ฆผ...๋๋ณด๋ค ์ ๋ฆฌ ์ ํ ์ฌ๋ ์์ผ๋ฉด ๋์๋ณด๋ผ๊ตฌ ํด > <
2. JDBC ์๋ ์๋ฆฌ


JDBC ์ฐ๊ฒฐ ์์ 5๋จ๊ณ
1. ๋๋ผ์ด๋ฒ ๋ก๋ฉ
2. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ
3. Query ์ ์ก
4. ๊ฒฐ๊ณผ๋ฅผ ์ด์ฉํ ์์
์ฒ๋ฆฌ
5. ์์ ๋ฐ๋ฉ
STEP1. ๋๋ผ์ด๋ฒ ๋ก๋ฉ
Class.forName("oracle.jdbc.driver.OracleDriver");
Class.forName() ๋ฉ์๋๋ก JDBC ๋๋ผ์ด๋ฒ๋ฅผ ๋ถ๋ฌ์ค๋ ๊ณผ์ ์ด๋ค.
JDBC ๋๋ผ์ด๋ฒ๋?
์๋ฐ์์ ์ ๊ณตํด์ฃผ๋ ์ธํฐํ์ด์ค๋ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ์ฌ์์ ์์์ ๋ฐ์์ ๋ก์ง์ ๊ตฌํํ ํด๋์ค ํ์ผ๋ค์ ๋ชจ์์ด๋ค.
๋๋ผ์ด๋ฒ ๋ก๋ฉ์ด๋ ์ฐ๋ฆฌ๊ฐ ์ด๋ค ํ์ฌ์ DB๋ฅผ ์ฌ์ฉํ ๊ฒ์ธ์ง ๊ฒฐ์ ํ๋ ๊ฒ์ด๋ค. ๋ค๋ง ์ด ๋จ๊ณ์์๋ Syntax Error(๊ตฌ๋ฌธ์ค๋ฅ)์ธ ClassNotFoundException๋ผ๋ ์์ธ ์ํฉ์ด ๋ฐ์ํ ์๊ฐ ์๊ธฐ ๋๋ฌธ์ try-catch ๋ธ๋ก์ผ๋ก ์ก์ ์ค์ผ ํ๋ค.
ClassNotFoundException ๋ฐฉ์งํ๋ ๋ฒ
(1) ๋งค๊ฐ๋ณ์์ ์คํ ์๋์ง ํ์ธ
(2) ํ๋ก์ ํธ์ ojdbc6.jarํ์ผ ์ถ๊ฐํ๋์ง ํ์ธ. (๋ฒ์ ๋ง๋ค jar ํ์ผ ์ด๋ฆ ๋ค๋ฆ)
๋๋ผ์ด๋ฒ๋ฅผ ๋ก๋ฉํ๋ ๊ณผ์ ์์ ๋ฐ๋์ ํ๋ก์ ํธ์ jar ํ์ผ์ ์ฐ๊ฒฐํด ์ฃผ์ด์ผ ํ๋ค.
jar ํ์ผ์ด๋?
ํ์ฅ์๊ฐ jar์ธ ํ์ผ๋ก ๊น์ด ๋ชจ๋ฝ๋ชจ๋ฝ ๋๋ ์ปต ์์ด์ฝ์ด๋ค. ์ฝ๊ฒ ๋งํด์ ํด๋์ค๋ฅผ ์ฌ๋ฌ ๊ฐ ๋ชจ์์ ์์ถํ ํ์ผ์ด jar ํ์ผ์ด๋ค. ๊ทธ๋ฅ ์ฐ๋ฆฌ๊ฐ ์๋ zip์ด๋ ๋น์ทํ๋ค๊ณ ์๊ฐํ๋ฉด ๋๋๋ฐ ์๋ฐ์์ ํธํ๋๋ ํ์ฅ์๊ฐ jar์ด๋ค.
ํ๋ก์ ํธ์ jar ํ์ผ ์ถ๊ฐํ๋ ๋ฒ
ํ๋ก์ ํธ ์ ํ > ๋ง์ฐ์ค ์ฐํด๋ฆญ > [build path] > [configure build path] > [libraries] ํญ > [class path] ์ ํ > ์ฐ์ธก์ [add external jars] ์ ํ > ์ํ๋ jar ํ์ผ ๊ฒฝ๋ก ์ ํ > apply and close

Oracle JDBC์ฉ jar ํ์ผ ๋ค์ด๋ฐ๋ ๋ฒ
https://www.oracle.com/kr/database/technologies/appdev/jdbc-downloads.html
JDBC and UCP Downloads page | Oracle ๋ํ๋ฏผ๊ตญ
Oracle JDBC Driver Implements JDBC 4.2 spec and certified with JDK8, JDK11, JDK17, and JDK19 Oracle JDBC driver except classes for NLS support in Oracle Object and Collection types. (4,535,061 bytes) - (SHA1: f46bbf6c42210736236e81bb18a955e3e1aa9a88)
www.oracle.com
์๋ฐ 8 ์ด์ ๋ฒ์ ์์๋ ojdbc8.jar, ์๋ฐ 11 ๋ฒ์ ์ด์์ ojdbc11.jar ๋ค์ด (2024.11.4. ํ์ฌ ๊ธฐ์ค)

STEP2. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ์ ํ์ํ 3๊ฐ์ง ์ค๋น๋ฌผ : url(์ฐ๊ฒฐ๊ฒฝ๋ก), user(๊ณ์ ์ด๋ฆ), password(ํจ์ค์๋)
์ ์ธ ๊ฐ์ง๊ฐ ์ค๋น ๋์๋ค๋ฉด Connection ๊ฐ์ฒด์ DriverManager.getConnection(url, user, passworld) ๋ฅผ ๋ด์ ์ฃผ์
String url = "jdbc:oracle:thin:@127.0.0.1:1520:jdbctest"; String user = "service"; String passward = "12345"; // jdbc:oracle:thin --> oracle thin๋ฒ์ // @127.0.0.1 --> ip์ฃผ์ // 1520 --> ํฌํธ ๋ฒํธ(์ค๋ณตx) // jdbctest --> ์ฌ์ฉ์๊ฐ ์ค์ ํ oracle db ๋ณ์นญ Connection conn = DriverManager.getConnection(url, user, passward);
๊ธฐ๋ณธ์ ์ธ Oracle์ URL ํ์
jdbc:oracle:thin:@<ํธ์คํธ>:<ํฌํธ>:<SID> jdbc:oracle:thin:@localhost:1521:xe
- ํธ์คํธ: ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ์ IP ์ฃผ์๋ ๋๋ฉ์ธ ์ด๋ฆ
- ํฌํธ: ๊ธฐ๋ณธ์ ์ผ๋ก Oracle์ 1521 ํฌํธ๋ฅผ ์ฌ์ฉ
- SID: ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์์คํ ์๋ณ์(SID)
IP ์ฃผ์ ๋์ ์๋น์ค์ด๋ฆ(localhost)์ ์จ ์ค๋ ๋๋ค.
jdbc:oracle:thin:@//<ํธ์คํธ>:<ํฌํธ>/<์๋น์ค ์ด๋ฆ> jdbc:oracle:thin:@//localhost:1521/orclpdb1
Connection ์ด๋?
Connection conn = DriverManager.getConnection(url, user, passward);
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ํ๊ธฐ ์ํ ๋ชจ๋ ๋ฉ์๋๋ฅผ ๊ฐ์ง๊ณ ์๋ ์ธํฐํ์ด์ค, ์ฆ MetaData
๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ชจ๋ ํต์ ์ Connection ๊ฐ์ฒด๋ฅผ ํตํด์๋ง ์ด๋ฃจ์ด์ง๋ค.
conn์ ์ฌ์ฉ ๊ฐ๋ฅํ ํ
์ด๋ธ ๋ชฉ๋ก, ์ปฌ๋ผ ์ ๋ณด ๋ฑ ์ฐ๊ฒฐ๋ DB์ ๋ชจ๋ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
STEP3. Query ์ ์ก
jdbc๋ MyBatis ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ Spring JPA์ฒ๋ผ ๋ณตํฉํ ์ฟผ๋ฆฌ๋ฅผ ๋ค๋ฃจ๊ธฐ์๋ ์ ํฉํ์ง ์์ง๋ง ๊ฐ๋จํ CRUD ๋ฌธ ์ ๋๋ ์ฒ๋ฆฌ ๊ฐ๋ฅํ๋ค.
์ค์ db์์ ์ฐ์ด๋ SQL ์ฟผ๋ฆฌ๋ฌธ์ ์์ฑํด์ db์ ์ ์กํ๊ธฐ ์ํ ์ค๋น๋ฅผ ํ๋ ๋จ๊ณ์ด๋ค. ๋ ๊ฐ์ง ์ค๋น๋ฌผ์ด ํ์ํ๋ฐ, ์ฒซ๋ฒ์งธ๋ก Stringํ์
์ ์ฟผ๋ฆฌ๋ฌธ์ด๋ค. ์ด ์ฟผ๋ฆฌ๋ฌธ์ PreparedStatement๋ผ๋ ๊ฐ์ฒด์ ๋ด์์ db์ ๋ณด๋ธ๋ค. ๋ณดํต PreparedStatement๋ฅผ ์ค์ฌ์ psmt๋ผ๊ณ ์ ์ธํ๋๋ฐ, ๊ทธ๋ฅ ์ฟผ๋ฆฌ๋ฅผ ๋ด์์ db๋ก ๋ณด๋ด๋ ๋๊ตฌ(์๋ ) ์ ๋๋ก ์๊ฐํ๋ฉด ์ดํดํ๊ธฐ ํธํ๋ค.
if(conn != null) { System.out.println("์ฐ๊ฒฐ์ฑ๊ณต"); } String sql = "INSERT INTO AIMEMBER VALUES(?,?,?,?)"; // ?์ธ์ // : ์ฌ์ฉ์๋ก๋ถํฐ ์ด๋ค ๋ฐ์ดํฐ๊ฐ ๋ค์ด์ฌ์ง ๋ชจ๋ฅผ ๋ ์ฌ์ฉ // : ์ง์ ํ ๋ฐ์ดํฐ ๊ณต๊ฐ ๋งํผ ๋น์๋๊ณ ์คํํ๊ธฐ ์ ๊น์ง ๋๊ธฐ // DB์ ์ ์กํ ์ ์๋๋ก PrepareStatement๊ฐ์ฒด์ ๋ด์์ฃผ๊ธฐ PrepareStatement psmt = conn.prepareStatement(sql); // ์ ์กํ๊ธฐ ์ ์ ?์ธ์ ์ฑ์ฐ๋ ์์
psmt.setString(1, id); psmt.setString(2, pw); psmt.setString(3, name); psmt.setInt(4, age);
if(conn != null) { System.out.println("์ฐ๊ฒฐ์ฑ๊ณต"); }
conn ๊ฐ์ฒด๊ฐ null์ด ์๋๋ฉด ์ฐ๊ฒฐ ์ฑ๊ณต์ด๋ผ๋ ๋ฉ์ธ์ง๋ฅผ ์ฝ์์ฐฝ์ ๋์ด๋ค. conn์ด null์ด ์๋๋ผ๋ ๋ง์ db ์ฐ๊ฒฐ์ด ์ ์์ ์ผ๋ก ์ํ๋์ด์ ๋ฐ์ดํฐ๊ฐ conn ๊ฐ์ฒด ์์ ์ ๋ค์ด์ ์๋ค๋ ๊ฒ์ด๋ค. ์ฆ, ์ด ์ฝ๋๋ DB ์ฐ๊ฒฐ์ด ์ ์์ ์ผ๋ก ์ ๋์๋์ง ํ์ธํ๊ธฐ ์ํ ๊ฒ์ด๋ค. ๋ง์ฝ conn ์ด ๋น์ด ์๋ค๋ฉด db ์ฐ๊ฒฐ์ ๋ฌธ์ ๊ฐ ์๊ฒผ๋ค๋ ๋ป์ด๊ณ , ์ฟผ๋ฆฌ๋ฅผ ์คํํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ผ์ด๋ฒ ๋ก๋ฉ๋ถํฐ ๋ค์ ํ์ธํด ๋ด์ผ ํ๋ค.
์ ์ฝ๋์์๋ PreaparedStatement psmt ๋ฅผ ์ค๊ฐ์ ์ ์ธํ๋๋ฐ ์ฌ์ค์ main์์ญ ๋งจ ์์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ด๊ธฐํ ํด ์ฃผ๋๊ฒ ๋ ์ข์ ์ฝ๋์ด๋ค. Scanner ์ ์ธํ ๋ ๊ฐ์ด ์ ์ธํ๊ณ null๊ฐ์ผ๋ก ์ธํ
ํด๋์ผ๋ฉด ๋๋ค.
String sql = "INSERT INTO AIMEMBER VALUES(?,?,?,?)";
psmt.setString(1, id);
์ฒ์์ sql ๋ณ์์ '?' ์ธ์๋ฅผ ๋น์๋๋ ์ด์ ๋ ์ด ์๋ฆฌ์ ์ด๋ค ๊ฐ์ด ๋ค์ด์ฌ ์ง ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์ด๋ค. ์ผ๋จ ๋น์ ๋๊ณ psmt.setString, psmt.setInt ๋ฉ์๋๋ฅผ ํตํด '?' ์ธ์๋ฅผ ์ฑ์์ค๋ค.
STEP4. ๊ฒฐ๊ณผ๋ฅผ ์ด์ฉํ ์์ ์ฒ๋ฆฌ
// SQL๋ฌธ ์ ์ก(์คํ) --DML(delete, insert, update) int row = psmt.executeUpdate(); // excuteUpdate() : insert, delete, update์ ์ฌ์ฉ // ๊ฒฐ๊ณผ๋ฅผ ์ด์ฉํ ์์
์ฒ๋ฆฌ if(row > 0) { System.out.println("ํ์๊ฐ์
์ฑ๊ณต"); } else { System.out.println("ํ์๊ฐ์
์คํจ"); }
์ฟผ๋ฆฌ๋ฅผ ๋ณด๋ด์ฃผ๋ ๋จ๊ณ์ด๋ค. psmt.executeUpdate() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋๋ฐ ๊ทธ ๊ฒฐ๊ณผ๊ฐ์ด intํ์ผ๋ก ๋ฆฌํด๋๋ ๊ฒ์ ์ ์ ์๋ค.
executeUpdate() ๋ฉ์๋๋ insert, delete, update์๋ง ์ฌ์ฉ๋๊ณ select์๋ ์ฌ์ฉ๋์ง ์๋๋ค.
์ด ์ฝ๋์์ intํ์
์ ๊ฒฐ๊ณผ๊ฐ์ผ๋ก ๋ญ ๋ฐ์์ค๋ ๊ฑธ๊น? ๋ฐ๋ก executeUpdate() ๋ฉ์๋์ ์ํฅ์ ๋ฐ์ ํ์ ์๋ฅผ ๋ฐํํ๋ค. ์ฃผ๋ก INSERT, UPDATE, DELETE ์์
ํ์ ์ฌ์ฉ๋๋ค. ํ ์ถ๊ฐ, ํ ์ญ์ ๋ฑ์ ํตํด ์ํฅ์ ๋ฐ์ ํ์ ์ซ์์ด๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ select๋ executeUpdate() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค. select๋ ๋จ์ํ ๋ฐ์ดํฐ๋ฅผ ์กฐํ๋ง ํ๊ณ ์์ ์ ํ์ง ์๊ธฐ ๋๋ฌธ์ ํ ์ซ์์ ๋ณ๋์ด ์๋ค.
๊ทธ๋ผ Select ์ฟผ๋ฆฌ๋ฅผ ์ํํ ๋๋ ์ด๋ค ๋ฉ์๋๋ฅผ ์ฐ๋๊ฐ? executeQuery()๋ฅผ ์ฌ์ฉํ๋ค.
๊ฒฐ๊ณผ๊ฐ์ int๊ฐ ์๋๋ผ ResultSet ๊ฐ์ฒด์ ๋ด๊ธด๋ค.
String sql = "SELECT * FROM users"; ResultSet rs = stmt.executeQuery(sql); while (rs.next()) { int id = rs.getInt("id"); String name = rs.getString("name"); System.out.println("ID: " + id + ", Name: " + name); }
SELECT๋ก ์กฐํํ๋ ๋ฐ์ดํฐ๋ค์ ๋ณดํต ์ฌ๋ฌ ์ค ์ด๋ฏ๋ก rs.next()๋ฅผ ํธ์ถํด์ ๋ค์ ์ค๋ก ์ปค์ ์ด๋์ ํด ์ค๋ค. ๋ค์ ํ์ด ์กด์ฌํ๋ ๊ฒฝ์ฐ true๋ฅผ ๋ฐํํ๊ณ , ๋ ์ด์ ํ์ด ์์ ๊ฒฝ์ฐ false๋ฅผ ๋ฐํํ๋ค. ๊ทธ๋์ while ๋ฃจํ๋ก ๋ชจ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ค.
// ๊ฒฐ๊ณผ๋ฅผ ์ด์ฉํ ์์
์ฒ๋ฆฌ if(row > 0) { System.out.println("ํ์๊ฐ์
์ฑ๊ณต"); } else { System.out.println("ํ์๊ฐ์
์คํจ"); }
๊ฒฐ๊ณผ๋ฅผ ์ํ ์์
์ฒ๋ฆฌ๋ฅผ ํ๋ ์ด์ ๋ ์์
์ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฉ์์๊ฒ ์๊ฐ์ ์ผ๋ก ๋ณด์ฌ์ฃผ๊ธฐ ์ํด์์ด๋ค. psmt.executeUpdate()๊ฐ ์ค๋ฅ์์ด ์ ์คํ์ด ๋์๋ค๋ฉด, row์ 0๋ณด๋ค ํฐ ๊ฐ์ด ๋ค์ด๊ฐ๋ค. ์ด๊ฒ์ ์ด์ฉํด์ ์ฌ์ฉ์์๊ฒ ํ์๊ฐ์
์ฑ๊ณต ์ฌ๋ถ๋ฅผ ๋์ ์ค ์ ์๋ฐ.
STEP5. ์์ ํด์
์ฌ๊ธฐ๊น์ง ์์ผ๋ฉด ๋ค ์๋ค. ใ
try { // ์์์ ๋ฐ๋ฉํ ๋๋ ์ฌ์ฉํ ์์์ ์ญ์์ผ๋ก ๋ฐ๋ฉ if(psmt != null) psmt.close(); // sql๋ฌธ ์ ์ก ์ข
๋ฃ if(conn !=null) conn.close(); // DB์ฐ๊ฒฐ ์ข
๋ฃ } catch (SQLException e) { e.printStackTrace(); }
conn์ ๋จผ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ psmt ๋จผ์ ๋ซ์ ์ฃผ๊ณ , conn์ ๋ซ์ ์ค๋ค. ์์ธ์ฒ๋ฆฌ๋ ๊ฐ์ด ํด ์ฃผ๋ ๊ฒ์ด ์ข๋ค.
3. JDBC ๋ก๊ทธ์ธ ์ ์ฒด ์ฝ๋
package ex01JDBC๋ก๊ทธ์ธ; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.Scanner; public class ex01ํ์๊ฐ์
{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("ID ์
๋ ฅ : "); String id = sc.next(); System.out.print("PW ์
๋ ฅ : "); String pw = sc.next(); System.out.print("์ด๋ฆ ์
๋ ฅ : "); String name = sc.next(); System.out.print("๋์ด ์
๋ ฅ : "); int age = sc.nextInt(); PreparedStatement psmt = null; Connection conn = null; try { Class.forName("oracle.jdbc.driver.OracleDriver"); String url = "jdbc:oracle:thin:@127.0.0.1:1521:xe"; String user = "service"; String passward = "12345"; conn = DriverManager.getConnection(url, user, passward); if(conn != null) { System.out.println("์ฐ๊ฒฐ์ฑ๊ณต"); } String sql = "INSERT INTO AIMEMBER VALUES(?,?,?,?)"; psmt = conn.prepareStatement(sql); psmt.setString(1, id); psmt.setString(2, pw); psmt.setString(3, name); psmt.setInt(4, age); int row = psmt.executeUpdate(); if(row > 0) { System.out.println("ํ์๊ฐ์
์ฑ๊ณต"); } else { System.out.println("ํ์๊ฐ์
์คํจ"); } } catch (Exception e) { e.printStackTrace(); } finally { try { if(psmt != null) psmt.close(); if(conn != null) conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } }
์ฌ๊ธฐ๊น์ง ํฌ์คํ
ํ๋๋ผ ๋๋ฌด ํ๋ค์๋ค.
ํ์ง๋ง, ์ด ํฌ์คํ
์ ํ๋ฉด์ ๋๋ ๊ฒ์ ์์ ์๋ JDBC๋ฅผ ํ๋ฉด์ ํ๋๋ ์ดํด๊ฐ ์ ๋๋๋ฐ ์ด์ ๋ ์ด ์ ๋์ฏค์ ์๋ฌด๊ฒ๋ ์๋๋ผ๋ ๊ฒ์ด๋ค. ์ฒ์์ ์๋ฐ ๋ณ์ฐ๊ธฐ๋ ์ด๋ ค์ ํ ๋๊ฐ ์์๋๋ฐใ
ใ
ใ
ใ
์ ๋ง๋ก ๊พธ์คํ ํ๋ฉด ๋๊ตฌ๋ ์ง ์์ ์ ์ด๋ ค์ํ๋ ๊ฒ์ ์ฝ๊ฒ ํ ์ ์๋ ๋ ์ด ์จ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ญ๋ ์ง ๊ทธ๋ง๋๊ณ ํฌ๊ธฐํ๊ฒ ๋ง๋๋ ๊ฐ์ฅ ํฐ ์ ์ ๋๋ ค์์ด๋ค. ์ด๋ ต๋๋ผ๋ ๋ณ ๊ฒ ์๋ ๊ฑฐ๋ผ๊ณ ์๊ฐํ๊ณ ํ๋ ๋ง์๊ฐ์ง์ด ํ์ํ๋ฉฐ, ๋งค์ผ ์กฐ๊ธ์ฉ ๊พธ์คํ ํ๋ ๊ฒ์ด ์ค์ํ๋ค.
์ฌ๋ฌ๋ถ ํ๋ด์๊ตฌ ์ข์ ํ๋ฃจ ๋ณด๋ด์ธ์
ํฌ์คํ ์ ์ฐธ๊ณ ํ ์๋ฃ
https://www.javamadesoeasy.com/2015/07/jdbc-connection-with-oracle-11g.html
JDBC connection with Oracle 11g - ojdbc6.jar - configure java build path - registering driver - getConnection - Writing your Fir
You are here : Home / Core Java Tutorials / JDBC - Java Database connectivity tutorial In this tutorial we will learn JDBC conne...
www.javamadesoeasy.com
https://blog.naver.com/yeon_doit/223335756094
[์ค๋งํธ์ธ์ฌ๊ฐ๋ฐ์ ๊ด์ฃผ๋จ๊ตฌ์ ] JDBC๋? ์ค์ต์ ํตํด ์์๋ณด์.
์๋ ํ์ญ๋๊น! ์ ๋ ๊ด์ฃผ ์ค๋งํธ์ธ์ฌ๊ฐ๋ฐ์์์ ๋น ๋ฐ์ดํฐ ๊ณผ์ ์ ๋ฃ๊ณ ์์ต๋๋ค. ์ค๋งํธ์ธ์ฌ๊ฐ๋ฐ์์ ๊ตญ๋น...
blog.naver.com