์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- ์ฝ๋ฉ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ๊ฐ์ดํ ์ข ๋ญ๊ฐ๋น
- Python
- html
- ์๋ฐ
- ์ํ
- database
- ๊น๋ฏธ๊ฒฝ์๋งํ์์
- ๋ฐฐ์์ ๋ฐฐ์
- Java
- ๋ ์
- ์ ๋ฆฌํธ๋ฆฌํธ
- ์ํ์ฃผ
- ์๋ฐ์คํฌ๋ฆฝํธ
- ๋๊ฐ
- JavaScript
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- ์ค๋ธ์
- ํ์ด์ฌ
- ์ฑ
- ํ์ฒ์ ๋ฆฌํธ๋ฆฌํธ
- ์ค๋ผํด
- ์นดํ๋๊ฐ
- K๋ฐฐํฐ๋ฆฌ๋ ๋ณผ๋ฃจ์
- ํ๋ก๊ทธ๋๋ฐ
- css
- ๊ฐ๋ฐ
- ๋ฐ์ํ
- ์นํผ๋ธ๋ฆฌ์ฑ
- Today
- Total
JiYoung Dev ๐ฅ
[JDBC] ์ค๋ผํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ดํด๋ฆฝ์ค ์ฐ๋ (2023.04.17) ๋ณธ๋ฌธ
[JDBC] ์ค๋ผํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ดํด๋ฆฝ์ค ์ฐ๋ (2023.04.17)
Shinjio 2023. 4. 17. 20:10๐ JDBC(Java DataBase Connectivity)
์๋ฐ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ์๋ฐ API
JDBC๋ฅผ ์ฌ์ฉํ๋ฉด Java์์ ๋ค์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ํ๊ณ SQL์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์กฐ์ํ ์ ์์
๐ JDBC Driver
JDBC๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ํต์ ์ ์ํ ํ์ค ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ฉฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ข ๋ฅ๋ ๋ฒค๋์ ๋ ๋ฆฝ์ ์ผ๋ก ์์ฑ๋ ์๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ค์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ํ ์ ์์.
๐ JDBC ํ๋ฆ ์์
โ๏ธ JDBC Driver ๋ก๋
๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฒค๋๊ฐ ์ ๊ณตํ๋ JDBC ๋๋ผ์ด๋ฒ๋ฅผ ๋ก๋ํจ.
๋๋ผ์ด๋ฒ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฐ๊ฒฐ์ ๊ด๋ฆฌํ๊ณ , JDBC API๋ฅผ ๊ตฌํํ ํด๋์ค๋ค์ ์งํฉ
โ ํด๋น ํ๋ก์ ํธ์์ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ถ๋ฌ์ค๊ธฐ
: ํ๋ก์ ํธ ์ฐํด๋ฆญ > Build Path > Configure Build Path
โก Libraries > Classpath > Add External Jars...
โข sql developer - jdbc - ojdbc8 ์ ํ
โ๏ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ
โ Windows > Show View > Other
โก data ๊ฒ์ > Data Source Explorer ํด๋ฆญ
โข Database Connections ์ฐํด๋ฆญ > New...
โฃ Oracle ์ ํ
โค Oracle Thin Driver 11 ์ ํ
โฅ JAR List > ๊ธฐ์กด Driver files ์ญ์ > Add JAR/ZIP... > [ sqldeveloper/jdbc/lib/ojdbc8 ] ์ ํ
โฆ Properties > Connection URL, Name, Password, ID ์ ๋ ฅ
โง name, password ์ ๋ ฅํ Test Connection > ์ฑ๊ณตํ๋ฉด Finish
โ๏ธ SQL ์คํ
1. DB์ฐ๊ฒฐ
//1.DB ์ฐ๊ฒฐ
Connection conn = null;
try {//DB๋ฅผ ์ฐ๊ฒฐํ ์ ์๋ ์ธ๋ถ ํด๋์ค ๊ฐ์ ธ์ค๊ธฐ
Class.forName("oracle.jdbc.driver.OracleDriver");
//DB์ฐ๊ฒฐ์ ํ์ํ ๊ฐ (URL, ID, PW)
String url = "jdbc:oracle:thin:@localhost:1521:xe";
String id = "";
String pw = "";
//DB ์ ์
conn = DriverManager.getConnection(url, id, pw);
System.out.println("์ ์์ฑ๊ณต");
} catch (ClassNotFoundException | SQLException e) {
System.out.println("์ ์์คํจ");
e.printStackTrace();
}
2. ์ฟผ๋ฆฌ๋ฌธ ์คํ
//์ฟผ๋ฆฌ๋ฌธ์ ์คํ์ํค๋ ๊ฐ์ฒด
//java์์ ๋ฌธ์์ด๋ก ๋ ์ฟผ๋ฆฌ๋ฌธ์ Oracle์ ์ฟผ๋ฆฌ๋ฌธ์ผ๋ก ๋ฐ๊ฟ์ ์คํ
PreparedStatement pstm = null;
Scanner sc = new Scanner(System.in);
System.out.print("์ง์ ์ด๋ฆ ์
๋ ฅ>>");
String inputName = sc.next();
System.out.print("๋น๋ฐ๋ฒํธ ์
๋ ฅ>>");
String inputPw = sc.next();
//์ฟผ๋ฆฌ๋ฌธ์ ํตํด์ ๋ฐ์ํ ์๋ต์ ๋ด์ ์ ์๋ ๊ฐ์ฒด
ResultSet rs = null;
//2. ์ ์ ํ ์คํํ๊ณ ์ถ์ ์ฟผ๋ฆฌ๋ฌธ ์คํ
//์ฟผ๋ฆฌ๋ฌธ์ ๋ฌธ์์ด๋ก ์ ์ฅ
String sql = "select * from ์ง์ where ์ด๋ฆ = ? and ํจ์ค์๋ = ?";
//๋ฌธ์์ด์ธ ์ฟผ๋ฆฌ๋ฌธ์ Oracle์ ์ฟผ๋ฆฌ๋ฌธ์ผ๋ก ๋ณํ
try {
//์ฟผ๋ฆฌ๋ฌธ ์์ฑ
pstm = conn.prepareStatement(sql);
pstm.setString(1, inputName);
pstm.setString(2, inputPw);
//์ฟผ๋ฆฌ๋ฌธ ์คํ
rs = pstm.executeQuery(); //๋ฐ์ดํฐ์ธํธ(์ปฌ๋ผ๋ช
๊น์ง ํฌํจ)๋ฅผ ๋ฐํ
while(rs.next()) { //์๋ ํ์ ๋ฐ์ดํฐ๊ฐ ์๋์ง ํ๋จ
String name = rs.getString("์ด๋ฆ");
System.out.println(name);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
3. DB ์ฐ๊ฒฐ ์ ๊ฑฐ
//3. DB ์ฐ๊ฒฐ ์ ๊ฑฐ
try {
if(rs != null) {
rs.close();
}
if(pstm != null) {
pstm.close();
}
if(conn != null) {
conn.close();
}
}catch(SQLException e){
e.printStackTrace();
}
์ ์ฒด ์ฝ๋
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;
import oracle.security.o3logon.a;
public class JDBCํ์๊ฐ์
{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("์ง์ ์ด๋ฆ ์
๋ ฅ >> ");
String inputName = sc.next();
System.out.print("๋น๋ฐ๋ฒํธ ์
๋ ฅ >> ");
String inputPw = sc.next();
System.out.print("์ฑ๋ณ ์
๋ ฅ >> ");
String inputGender = sc.next();
System.out.print("๋์ด ์
๋ ฅ >> ");
int inputAge = sc.nextInt();
System.out.print("์ฐ๋ด ์
๋ ฅ >> ");
int inputMoney = sc.nextInt();
//1.DB ์ฐ๊ฒฐ
Connection conn = null;
//์ฟผ๋ฆฌ๋ฌธ์ ์คํ์ํค๋ ๊ฐ์ฒด
//Java์์ ๋ฌธ์์ด๋ก ๋ ์ฟผ๋ฆฌ๋ฌธ์ Oracle์ ์ฟผ๋ฆฌ๋ฌธ์ผ๋ก ๋ฐ๊ฟ์ ์คํ์์ผ ์ฃผ๋ ๊ฐ์ฒด
PreparedStatement pstm = null;
//์ฟผ๋ฆฌ๋ฌธ์ ํตํด์ ๋ฐ์ํ ์๋ต์ ๋ด์ ์ ์๋ ๊ฐ์ฒด
ResultSet rs = null;
try {//forName ๋งค๊ฐ๋ณ์ ์ด๋ฆ์ Class๋ฅผ ๊ฐ์ ธ์จ๋ค.
//DB๋ฅผ ์ฐ๊ฒฐํ ์ ์๋ ์ธ๋ถ ํด๋์ค ๊ฐ์ ธ์ค๊ธฐ
Class.forName("oracle.jdbc.driver.OracleDriver");
//์ฐ๊ฒฐ์ ํ์ํ ๊ฐ (url, id, pw)
String url = "jdbc:oracle:thin:@localhost:1521:xe";
String id = "service";
String pw = "12345";
//oracledb์์ id, pw ์น๊ณ ์ํฐ์น๊ฑฐ
//DB ์ ์
//DriverManager --> DB์ ์ฐ๊ฒฐ (JAVA, DB ๊ฐ์ ํต๋ก๋ฅผ ๋ง๋ค์ด์ค!)
conn = DriverManager.getConnection(url, id, pw);
System.out.println("์ ์ ์ฑ๊ณต");
} catch (ClassNotFoundException | SQLException e) {
System.out.println("์ ์ ์คํจ");
e.printStackTrace();
}
//2. ์ ์ ํ ์คํํ๊ณ ์ถ์ ์ฟผ๋ฆฌ๋ฌธ ์คํ
//(1)๋์ด๊ฐ 40 ์ด์์ธ ์ง์์ ์ด๋ฆ๋ง ์ถ๋ ฅ์์ผ ์ฃผ์ธ์
//(2)์์์ ์
๋ ฅ๋ฐ์ name, pw๋ฅผ ์ด์ฉํด์ ํด๋นํ๋ ์ง์์ ๋์ด๋ฅผ ์ถ๋ ฅ์์ผ ์ฃผ์ธ์.
try {
//๋์ด๊ฐ 40์ด ์ด์์ธ ์ง์์ ์ด๋ฆ๋ง ์ถ๋ ฅ์์ผ์ฃผ์ธ์!
// String sql = "select ์ด๋ฆ, ๋์ด, ๋น๋ฐ๋ฒํธ from ์ง์ where ๋์ด >= 40";
// String sql = "select * from ์ง์ where ์ด๋ฆ = '" + inputName + "'and ๋น๋ฐ๋ฒํธ = '" + inputPw + "'";
// String sql = "select * from ์ง์ where ์ด๋ฆ = ? and ๋น๋ฐ๋ฒํธ = ?";
//(3)์ด๋ฆ, ๋น๋ฐ๋ฒํธ, ์ฑ๋ณ, ๋์ด, ์ฐ๋ด ์
๋ ฅ๋ฐ์์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๊ณ ์ถ์ต๋๋ค!
String sql = "insert into ์ง์ values('A0011', ?, ?, ?, ?, null, '123-123', ?, 'D006')";
// insert into ์ง์ values (์ง์id_seq.nextval,'1234','์นํ','๋จ',20,null,'123-123',3000,'D006');
//Java์์ ๋ฌธ์์ด๋ก๋ ์ฟผ๋ฆฌ๋ฌธ์ Oracle์ ์ฟผ๋ฆฌ๋ฌธ์ผ๋ก ๋ฐ๊ฟ์ค
pstm = conn.prepareStatement(sql);
pstm.setString(1, inputPw);
pstm.setString(2, inputName);
pstm.setString(3, inputGender);
pstm.setInt(4, inputAge);
pstm.setInt(5, inputMoney);
// rs = pstm.executeQuery(); --> select์ ๊ฐ์ด ๋ฐ์ดํฐ์ ๋ณ๊ฒฝ์ด ์์๋ ์ฌ์ฉ
int result = pstm.executeUpdate(); //--> insert, update, delete์ ๊ฐ์ด ๋ฐ์ดํฐ ๋ณ๊ฒฝ์ด ์์ ๋ ์ฌ์ฉ
//๋ณ๊ฒฝ์ด ๋ ํ์ ๊ฐ์๋ฅผ ๋ฐํ
if(result > 0) {
System.out.println("ํ์๊ฐ์
์ฑ๊ณต!");
}
// if(rs.next()) {
// int age = rs.getInt("๋์ด");
// System.out.println("์
๋ ฅํ ์ง์์ ๋์ด >> " + age);
// }
// while(rs.next()) {
// if(rs.getString("์ด๋ฆ").equals(inputName) && rs.getString("๋น๋ฐ๋ฒํธ").equals(inputPw)) {
// System.out.println(rs.getString("์ด๋ฆ") + "๋์ ๋์ด๋ " + rs.getString("๋์ด") + "์
๋๋ค.");
// }
// }
//next()๊ฐ ์์ผ๋ฉด ์ปฌ๋ผ๋ช
์ ์ถ๋ ฅ
// while(rs.next()) {
// String name = rs.getString(1);
//// String name = rs.getString("์ด๋ฆ");
// System.out.println(name);
// //rs.next() → ์ฃผ์๊ฐ์ ๋ฐ๊ฟ์ ๋ฐ์ดํฐ๊ฐ ์๋์ง ์๋์ง ํ๋จ
// // → boolean type
// //if(rs.next())๋ฅผ ์ฌ์ฉํ์ฌ ํ๋์ ๋ฐ์ดํฐ๋ง ๋ฝ์ ์ ์์
//// if(rs.getInt("๋์ด")>=40) {
//// //getString("์ด๋ฆ") ์ปฌ๋ผ์์ ๋ฌธ์์ด๋ฐ์ดํฐ(์ด๋ฆ)์ ๊ฐ์ ธ์ค๊ฒ ์ต๋๋ค.
//// //getString(์ธ๋ฑ์ค) DB์์ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ ๋๋ 1๋ถํฐ ์ ์ฉ!
//// String name = rs.getString("์ด๋ฆ");
//// System.out.println(name);
//// }
//// }
//
} catch (SQLException e) {
System.out.println("์ฟผ๋ฆฌ๋ฌธ ์ค๋ฅ");
e.printStackTrace();
}
//3. DB ์ฐ๊ฒฐ ์ ๊ฑฐ --> ์ญ์์ผ๋ก ์งํํด์ผ ํจ
try {
if(rs != null) {
rs.close();
}
if(pstm != null) {
pstm.close();
}
if(conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
์์ ์ค๋ฅ ๋ฐ์์ ๊ฒฝ๋ก ์คํ ํ์ธ ํ ์๋ฐ ํ๋ก์ ํธ ๋ด์ ๋ ํผ๋ฐ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก jdbc.jar๊ฐ ์ ๋ค์ด์๋์ง ํ์ธํ๊ธฐ!
โ๏ธ ์ดํด๋ฆฝ์ค์์ DB ์ฐ๊ฒฐํ์ฌ ์ฌ์ฉํ๊ธฐ
์คํ ๋จ์ถํค : alt + x