BACKEND [Kamranahmedse Roadmap]/DB
JDBC를 통해 데이터 입력, 삭제, 조회하기
Alex Han
2025. 3. 24. 00:31
반응형
JDBC란 무엇인가?
JDBC(Java Database Connectivity)는 Java에서 데이터베이스와 연결하여 데이터를 조회, 삽입, 수정, 삭제할 수 있도록 도와주는 Java의 표준 API입니다. 📌 JDBC란?JDBC는 Java 프로그램과 데이터베이스(DBMS)
jyhan0625.tistory.com
1. DB 구조
Role.java
package kr.or.connect.jdbcexam.dto;
public class Role {
private Integer roleId;
private String description;
public Integer getRoleId() {
return roleId;
}
public void setRoleId(Integer roleId) {
this.roleId = roleId;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
@Override
public String toString() {
return "Role [roleId=" + roleId + ", description=" + description + "]";
}
public Role(Integer roleId, String description) {
super();
this.roleId = roleId;
this.description = description;
}
}
1. 입력하기
RoleDao.java에서의 addRole 메서드
package kr.or.connect.jdbcexam.dao;
import kr.or.connect.jdbcexam.dto.Role;
import java.sql.*;
public class RoleDao {
private static String dburl = "jdbc:mysql://localhost:3306/connectdb?serverTimezone=Asia/Seoul&useSSL=false";
private static String dbUser = "root";
private static String dbPassword = "";
public int addRole(Role role) {
int insertCount = 0;
Connection conn = null;
PreparedStatement ps = null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection(dburl, dbUser, dbPassword);
String sql = "INSERT INTO role(role_id, description) VALUES (?,?)";
ps = conn.prepareStatement(sql);
ps.setInt(1, role.getRoleId());
ps.setString(2, role.getDescription());
insertCount = ps.executeUpdate();
}catch(Exception e) {
e.printStackTrace();
} finally {
if(ps != null) {
try {
ps.close();
} catch(Exception e) {
e.printStackTrace();
}
}
if(conn != null) {
try {
conn.close();
} catch(Exception e) {
e.printStackTrace();
}
}
}
return insertCount;
}
}
JDBCExam2.java
package kr.or.connect.jdbcexam;
import java.util.Scanner;
import kr.or.connect.jdbcexam.dto.Role;
import kr.or.connect.jdbcexam.dao.RoleDao;
public class JDBCExam2 {
public static void main(String args[]) {
Scanner scanner = new Scanner(System.in);
System.out.printf("추가하고자 하는 역할 Id를 입력하시오: ");
int role_id = scanner.nextInt();
System.out.printf("추가하고자 하는 %d번 역할의 설명을 입력하시오: ", role_id);
String description = scanner.next();
Role role = new Role(role_id, description);
RoleDao roleDao = new RoleDao();
int insertCount = roleDao.addRole(role);
System.out.println("실행결과: " + insertCount);
}
}
2. 삭제하기
RoleDao.java에서의 deleteRole 메서드
package kr.or.connect.jdbcexam.dao;
import kr.or.connect.jdbcexam.dto.Role;
import java.sql.*;
public class RoleDao {
private static String dburl = "jdbc:mysql://localhost:3306/connectdb?serverTimezone=Asia/Seoul&useSSL=false";
private static String dbUser = "root";
private static String dbPassword = "";
public int deleteRole(int role_id) {
int deleteCount = 0;
Connection conn = null;
PreparedStatement ps = null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection(dburl, dbUser, dbPassword);
String sql = "DELETE FROM role WHERE role_id = ?";
ps = conn.prepareStatement(sql);
ps.setInt(1, role_id);
deleteCount = ps.executeUpdate();
}catch(Exception e) {
e.printStackTrace();
} finally {
if(ps != null) {
try {
ps.close();
} catch(Exception e) {
e.printStackTrace();
}
}
if(conn != null) {
try {
conn.close();
} catch(Exception e) {
e.printStackTrace();
}
}
}
return deleteCount;
}
}
JDBCExam3.java
package kr.or.connect.jdbcexam;
import java.util.Scanner;
import kr.or.connect.jdbcexam.dto.Role;
import kr.or.connect.jdbcexam.dao.RoleDao;
public class JDBCExam3 {
public static void main(String args[]) {
Scanner scanner = new Scanner(System.in);
System.out.printf("삭제하고자 하는 역할의 Id를 입력하시오: ");
int role_id = scanner.nextInt();
RoleDao roleDao = new RoleDao();
int insertCount = roleDao.deleteRole(role_id);
System.out.println("실행결과: " + insertCount);
}
}
3. 조회하기
RoleDao.java에서의 getRole 메서드
package kr.or.connect.jdbcexam.dao;
import kr.or.connect.jdbcexam.dto.Role;
import java.sql.*;
public class RoleDao {
private static String dburl = "jdbc:mysql://localhost:3306/connectdb?serverTimezone=Asia/Seoul&useSSL=false";
private static String dbUser = "root";
private static String dbPassword = "";
public Role getRole(Integer role_id) {
Role role = null;
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection(dburl, dbUser, dbPassword);
String sql = "SELECT role_id, description FROM role WHERE role_id = ?";
ps = conn.prepareStatement(sql);
ps.setInt(1, role_id);
rs = ps.executeQuery();
if(rs.next()) {
Integer id = rs.getInt("role_id");
String description = rs.getString("description");
role = new Role(id, description);
}
} catch(Exception e) {
e.printStackTrace();
} finally {
if(rs != null) {
try {
rs.close();
} catch(Exception e) {
e.printStackTrace();
}
}
if(ps != null) {
try {
ps.close();
} catch(Exception e) {
e.printStackTrace();
}
}
if(conn != null) {
try {
conn.close();
} catch(Exception e) {
e.printStackTrace();
}
}
}
return role;
}
}
JDBCExam1.java
package kr.or.connect.jdbcexam;
import java.util.Scanner;
import kr.or.connect.jdbcexam.dto.Role;
import kr.or.connect.jdbcexam.dao.RoleDao;
public class JDBCExam1 {
public static void main(String args[]) {
System.out.printf("조회하고자 하는 Role id를 입력하시오: ");
Scanner scanner = new Scanner(System.in);
Integer role_id = scanner.nextInt();
RoleDao roleDao = new RoleDao();
Role role = roleDao.getRole(role_id);
System.out.println(role);
}
}
반응형