class_37.sql
자바프로젝트 studentManagement
DBConnectionManager.java
0.00MB
student.java
0.01MB
💡 학습 목표
JDBC를 사용하여 학생 관리 시스템을 구축해 보자.
- 학생의 정보를 데이터베이스에 저장하고 관리하는 간단한 시스템을 구축합니다.
- 학생 정보를 추가, 조회, 수정, 삭제할 수 있는 기능을 구현합니다.
- 기능 요구사항
- 학생 정보 추가
- 학생 정보 조회
- 학생 정보 수정
- 학생 정보 삭제
- 비기능 요구사항
- 사용자 친화적인 콘솔 인터페이스 제공
- 적절한 예외 처리 및 로그 기록
- 데이터베이스 연결 풀 사용(HikariCP)
>> 프로젝트 설계 <<
- 데이터베이스 설계 및 테이블 생성
- 테이블 - tbstudent 컬럼 - id, name, age, email
create database studentdb;
CREATE TABLE students (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
age INT NOT NULL,
email VARCHAR(100) NOT NULL UNIQUE
);
클래스 설계(자유롭게 설계)
DBConnectionManager
package ver1;
import java.sql.Connection;
import java.sql.SQLException;
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
public class DBConnectionManager {
private static HikariDataSource dataSource;
private static final String URL = "jdbc:mysql://localhost:3306/studentdb?serverTimezone=Asia/Seoul";
private static final String USER = "root";
private static final String PASSWORD = "asd123";
static {
HikariConfig config = new HikariConfig();
config.setJdbcUrl(URL);
config.setUsername(USER);
config.setPassword(PASSWORD);
config.setMaximumPoolSize(5); // 최대 연결 수 5개
dataSource = new HikariDataSource(config);
}
public static Connection getConnection() throws SQLException{
System.out.println("HIKAriCP 를 사용한 DATA Source 활용");
return dataSource.getConnection();
}
public static void main(String[] args) {
try {
Connection conn = DBConnectionManager.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
student
package ver1;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;
import java.util.logging.Logger;
public class student {
private static final Logger LOGGER = Logger.getLogger(student.class.getName());
public static void main(String[] args) {
try {
Connection conn = DBConnectionManager.getConnection();
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("1. 학생 정보 조회");
System.out.println("2. 학생 정보 추가");
System.out.println("3. 학생 정보 수정");
System.out.println("4. 학생 정보 삭제");
System.out.println("5. 종료");
System.out.println("-----------------");
int choice = scanner.nextInt();
if (choice == 1) {
System.out.println("학생 정보 조회 기능을 선택했습니다.");
// 조회 기능
studentSelect(conn);
} else if (choice == 2) {
System.out.println("학생 정보 추가 기능을 선택했습니다.");
// 정보 추가
studentAdd(conn, scanner);
} else if (choice == 3) {
System.out.println("학생 정보 수정 기능을 선택했습니다.");
// 정보 수정
studentUpdate(conn, scanner);
} else if (choice == 4) {
System.out.println("학생 정보 삭제 기능을 선택했습니다.");
// 정보 삭제
studentDelete(conn, scanner);
} else if (choice == 5) {
System.out.println("프로그램이 종료되었습니다.");
break;
} else {
System.out.println("잘못 입력되었습니다.");
}
} // end of while
} catch (Exception e) {
// TODO: handle exception
} // try- catch
} // end of main
private static void studentSelect(Connection conn) {
String sql = " select * from students ";
try (
PreparedStatement ptsmt = conn.prepareStatement(sql); ResultSet resultSet = ptsmt.executeQuery();
) {
while (resultSet.next()) {
System.out.println("문제 ID : " + resultSet.getInt("id"));
System.out.println("이름 : " + resultSet.getString("name"));
System.out.println("나이 : " + resultSet.getInt("age"));
System.out.println("이메일 : " + resultSet.getString("email"));
if (!resultSet.isLast()) {
System.out.println("-----------------------------------");
}
}
} catch (Exception e) {
// TODO: handle exception
}
} // end of studentSelect();
private static void studentUpdate(Connection conn, Scanner scanner) {
System.out.println("이름을 입력해 주세요.");
scanner.nextLine();
String name = scanner.nextLine();
System.out.println("나이를 입력해 주세요.");
String age = scanner.nextLine();
System.out.println("수정할 이름를 입력해 주세요.");
String name1 = scanner.nextLine();
System.out.println("수정할 이름를 입력해 주세요.");
String age1 = scanner.nextLine();
String sql = "Update students set name = ?, age = ? where name = ? && age = ? ";
try (
PreparedStatement ptsmt = conn.prepareStatement(sql);
) {
ptsmt.setString(1, name1);
ptsmt.setString(2, age1);
ptsmt.setString(3, name);
ptsmt.setString(4, age);
ptsmt.executeUpdate();
System.out.println("학생 정보 삭제 성공");
} catch (SQLException e) {
e.printStackTrace();
}
} // end of studentUpdate()
private static void studentAdd(Connection conn, Scanner scanner) {
System.out.println("이름을 입력해 주세요.");
scanner.nextLine();
String name = scanner.nextLine();
System.out.println("나이를 입력해 주세요.");
String age = scanner.nextLine();
System.out.println("주소를 입력해 주세요.");
String address = scanner.nextLine();
String sql = " Insert into students(name, age, email) values(?, ?, ?); ";
try (PreparedStatement ptsmt = conn.prepareStatement(sql);) {
ptsmt.setString(1, name);
ptsmt.setString(2, age);
ptsmt.setString(3, address);
ptsmt.executeUpdate();
System.out.println("학생 정보 추가 성공");
} catch (SQLException e) {
e.printStackTrace();
}
} // end of studentAdd()
private static void studentDelete(Connection conn, Scanner scanner) {
System.out.println("이름을 입력하세요.");
scanner.nextLine();
String name = scanner.nextLine();
System.out.println("나이를 입력해 주세요.");
String age = scanner.nextLine();
String sql_check = " select * from students where name = ? and age = ? ";
try {
PreparedStatement ptsmt = conn.prepareStatement(sql_check);
ptsmt.setString(1, name);
ptsmt.setString(2, age);
ptsmt.executeQuery();
} catch (Exception e) {
}
String sql = " delete from students where name = ? and age = ? ";
try (PreparedStatement ptsmt = conn.prepareStatement(sql);) {
ptsmt.setString(1, name);
ptsmt.setString(2, age);
ptsmt.executeUpdate();
System.out.println("학생 정보 삭제 성공");
} catch (SQLException e) {
e.printStackTrace();
}
} // end of student Delete
} // end of class

'Java' 카테고리의 다른 글
| 2024.06.27 JSP 프로그래밍 기본 HTTP 기초 지식 인코딩과포트 (0) | 2024.06.27 |
|---|---|
| 2024.06.18 JDBC 실습 예제 (같이 만들어보기) (0) | 2024.06.18 |
| 2024.06.17 Data Structure(자료구조) JDBC에서의 예외 처리 (0) | 2024.06.17 |
| 2024.06.17 Data Structure(자료구조) JDBC 성능 최적화 (0) | 2024.06.17 |
| 2024.06.14 Data Structure(자료구조) JDBC를 활용한 CRUD 와 SOLID 원칙 - 7 (0) | 2024.06.14 |