Java/급여 계산기

Intellij 기반의 JDBC + MySQL 연동

모딩 2020. 5. 15. 20:15
반응형

 

- 이 포스팅은 https://blog.naver.com/lghlove0509/221031017994 을 참고하여 작성하였음을 밝힙니다.

 

 

사전에 MySQL을 사용하여 기본적인 DB, 테이블, 속성 생성과 속성값을 넣어보았는데요, 

이번 포스팅에서는 자바 클래스에서 원하는 값들을 DB에서 불러오도록 구현해보겠습니다. 

그러기 위해서는 JDBC와 MySQL을 연동해야 합니다. 아래에서 그 과정에 대해 상세하게 알아보겠습니다.

 

개발 환경

Intellij (Ultimate) 11.0.5

MySQL 5.1.49

macOS Catalina 10.15.3

 

 

JDBC 와 MySQL 연동하기

1. SQL 라이브러리 설정

JDBC (Java DataBase Connectivity) 자바에서 DB와 관련된 작업을 처리할 수 있도록 도와주는 역할을 하는 API입니다.

각각의 DBMS는 자신의 드라이버에 의해 동작하고 JDBC는 데이터베이스에 연결하기 위한(프로그래머에게) API를 제공하는 기능을 합니다. MySQL같은 경우에는 위에서 다운받은 커넥터로 자신의 드라이버를 공식적으로 제공하고 JDBC는 드라이버가 등록되면 미리 정의된 메소드 호출만으로도 데이터베이스에 접근 할 수 있습니다.

 

 

1) 먼저, sql connecter를 다운받아 설치합니다. 

https://dev.mysql.com/downloads/connector/j/

 

MySQL :: Download Connector/J

MySQL Connector/J 8.0 is highly recommended for use with MySQL Server 8.0, 5.7 and 5.6. Please upgrade to MySQL Connector/J 8.0.

dev.mysql.com

 

2) 설치가 끝나면, 압축을 풀어줍니다. 

 

3) File -> Project Structure -> Libraries 로 들어가서 + 버튼을 눌러 Java 탭을 클릭합니다.  

 

4) 아까 압축을 풀어뒀던 mysql-connnector 폴더로 들어가서 mysql-connector-java-5.1.49-bin.jar 파일을 선택합니다.

 

5) OK를 누르고 라이브러리 추가를 마칩니다. 이제 준비가 끝났습니다!

 

 

**주의!!! **

시작 전에 반드시 mysql 서버를 실행해야 DBMS가 작동됩니다. 

또한, 접근할 DB의 테이블에 속성값을 저장해두어야 합니다.

 

2. 클래스 파일 생성

 

저는 데이터베이스와 연동할 클래스의 이름을 DBManager라고 지정했습니다. 

import java.sql.*;

public class DBManager {
    String JDBC_DRIVER = "com.mysql.jdbc.Driver"; //드라이버
    String DB_URL = "jdbc:mysql://localhost/salary?&useSSL=false"; //접속할 DB 서버

    String USER_NAME = "root"; //DB에 접속할 사용자 이름
    String PASSWORD = ""; //사용자의 비밀번호

    public DBManager() {
        Connection conn = null;
        Statement state = null;
        try { //Reflection 방식
            Class.forName(JDBC_DRIVER);
            conn = DriverManager.getConnection(DB_URL, USER_NAME, PASSWORD); //db 내의 데이터를 저장
            state = conn.createStatement(); //sql 문을 실행하기 위해 conn 연결 정보를 state로 생성

            String sql;
            sql = "select * from salary";
            ResultSet rs = state.executeQuery(sql); // sql 실행결과를 rs에 저장
            while (rs.next()) {
                int id = rs.getInt("id");
                int year = rs.getInt("year");
                String position = rs.getString("position");
                String name = rs.getString("name");
                int m_salary = rs.getInt("m_salary"); // select 로 가져온 속성을 int 타입으로 반환
                int a_sales = rs.getInt("a_sales");
                int stock = rs.getInt("stock");
                System.out.println("Id: "+ id + "\nName: " + name + "\nPosition: " + position);
                System.out.println("m_salary: "+ m_salary + "\na_sales: " + a_sales + "\n-------------\n");
            }

            rs.close();
            state.close();
            conn.close();

        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        } finally {
            try{
                if(state != null)
                    state.close();
            } catch(SQLException e){
            e.printStackTrace();
        }
            try{
                if(conn != null)
                    conn.close();
            }catch (SQLException e){

            }
        }
    }

}

 

 

3. 실행 결과 출력

 

데이터베이스에 입력한 값들이  잘 출력되었음을 확인 할 수 있습니다. 

 

 

 

 

 

 

 

전체 코드는 깃헙에 올려두었습니다

https://github.com/jinnyjinny/Salary_java

 

jinnyjinny/Salary_java

자바 중간고사 대체 - 직원들의 급여를 계산하는 프로젝트입니다. . Contribute to jinnyjinny/Salary_java development by creating an account on GitHub.

github.com

 

 

 

 

 

 

 ** 내용에 오류가 있다면 답글로 남겨주세요. **

디버깅은 언제나 환영입니다! 

반응형

'Java > 급여 계산기' 카테고리의 다른 글

Database 구성  (0) 2020.05.15
자바 프로젝트 : 급여 계산기  (0) 2020.05.15