Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
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 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

작은 지식주머니

DataBase 20211020 수업 본문

DB수업

DataBase 20211020 수업

작지 2021. 10. 20. 17:54

Vscode 외부 Jar 불러오는법.

 

수업은 오라클db로 진행됨.

 

ojdbc14.jar
1.12MB
Referenced Libraries에서 추가

or 환경 변수 설정으로 들어가 class path에 경로설정.

 

 

JDBC Programming

  1. JDBC Driver 로딩.
  2. DB 서버 접속하기
  3. Statment / PreparedStatement 객체 생성하기
  4. SQL문 실행
  5. 자원해제 

순으로 이루어짐

 

우선 JDBC Driver 로딩과 DB 서버 접속을 해야하는데.

DBUtill 이라는 Class 생성 후 

 

 

import java.sql.*;

public class DBUtil {

public static Connection getConnection() {
        Connection conn = null;
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
            conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "scott", "tiger");
        } catch (Exception e) {
            e.printStackTrace();
        }

        return conn;
    }
}

Connection getConnection() 이라는 개체를 만들고 

Connection conn 값 설정 → null값 지정

Class.forName("  oracle.jdbc.driver.OracleDriver    ");  OracleDriver의 위치를 집어넣어줌.

OracleDriver 위치 찾기

conn DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe",(아이디),(비밀번호)); 입력으로 접속

conn을 반환하는 메서드를 작성했음.

 

또한 집어넣을 테이블이 필요하므로

MemberVO 라는 클래스 생성.

id , passwd, name, mail 값 을 넣어준 후 기본생성자 생성 → 메인 생성자 생성 → getter,setter 설정 → toString 설정

public class MemberVO {
    
    private String id;
    private String passwd;
    private String name;
    private String mail;

    public MemberVO() {

    }
    
    public MemberVO(String id, String passwd, String name, String mail) {
        super();
        this.id = id;
        this.passwd = passwd;
        this.name = name;
        this.mail = mail;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getPasswd() {
        return passwd;
    }

    public void setPasswd(String passwd) {
        this.passwd = passwd;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getMail() {
        return mail;
    }

    public void setMail(String mail) {
        this.mail = mail;
    }
    
    @Override
    public String toString() {
        
        return id + "/" + passwd + "/" + name + "/" + mail;
    }
}

MemberVO를 입혀줄 MemberDAO 클래스를 생성.

 

close에 대한 메서드는 좀 더 밑에 설명되어있음.

import java.sql.*;

//Member 테이블 처리 객체
public class MemberDAO {
    

    //회원 추가
    public void memberInsert(MemberVO vo) {
        Connection conn = DBUtil.getConnection();
        PreparedStatement pstmt = null;
        try {
            String sql = "insert into member values(?,?,?,?)";
            pstmt = conn.prepareStatement(sql);
            pstmt.setString(1, vo.getId());
            pstmt.setString(2, vo.getPasswd());
            pstmt.setString(3, vo.getName());
            pstmt.setString(4, vo.getMail());

            pstmt.executeUpdate();

        } catch (Exception e) {
        e.printStackTrace();
        } finally {
            DBUtil.close(conn, pstmt);
        }
    }

 

MemberInsert 메서드에 방금 만든 MemberVO 값을 넣어주고

Connection conn 생성 → DButil 에서 만든 서버접속용 getConnection(); 메소드를 가져옴.

그 후 PreparedStatement pstmt = null 값 설정 후

SQL 명령문 String sql = "insert into member(테이블) values(?,?,?,?)"; 의 (?) = 임의의 값을 세팅

?의 값을 넣어줘야 하므로

pstmt.setString으로 MemberVO의 개체들을 전부 가져옴.

 

pstmt.executeUpdate로 sql 업데이트

 

이제 SQL문의 실행을 위해서 Main class를 생성

import java.sql.*;

//Member 테이블의 데이터 처리 객체
public class test2 {
    public static void main(String[] args) {
        
        MemberDAO dao = new MemberDAO();

        
        //회원 추가
        for (int i = 2; i < 10; i++) {
            MemberVO vo = new MemberVO("user0" + i, "1111", "Amy", "user01@gmail.com");
            dao.memberInsert(vo);
        }
    }
}

MemberDAO를 불러온 후

MemberVO에 값을 지정.

meberinsert 메서드를 실행 해야하지만 지금까지 자원해제를 하지 않았으므로 다시 DButil로 돌아감.

//자원 해제
    public static void close(Connection conn, PreparedStatement pstmt) {
        try {
            if (pstmt != null) pstmt.close();
            if (conn != null) conn.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

DButil 클래스에 추가.

자원해제는 마지막으로 썼던 pstmt , conn 순으로

pstmt값이 null이 아닌경우엔 close를 한다.

이유는 sql문에서 오류가 발생한다면 null 값 그대로 이식이 되는데 NullPointException이 발생하기 때문이다.

MemberDAO , memberInsert

 

이제 main 메서드에서 실행하면

잘 생성된 모습

 

 

이제 sql실행을 자바 내에서 하기 위해서는 일단 방금 마지막으로 했던 DButil close 메서드를 한개 더 만든다.

public static void close(Connection conn, PreparedStatement pstmt, ResultSet rs) {
        try {
            if (rs != null) rs.close();
            if(pstmt != null) pstmt.close();
            if(conn != null) conn.close();
            
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

ResultSet rs 라는 구문이 추가되어있다.

자원해제는 마지막으로 썼던 rs, pstmt , conn 순으로 닫는다.

다시 MemberDAO 클래스로 돌아가서.

   public MemberVO getMember(String id){
        Connection conn = DBUtil.getConnection();
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        MemberVO vo = null;

        try {
            pstmt = conn.prepareStatement("select * from member where id=?");
            pstmt.setString(1, id);

            rs = pstmt.executeQuery();

            if (rs.next()) {
                vo = new MemberVO();
                vo.setId(rs.getString("id"));
                vo.setPasswd(rs.getString(2));
                vo.setName(rs.getString(3));
                vo.setMail(rs.getString(4));
            }

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            
        }

        return vo;
    }

getMember 라는 메서드를 사용한다 String id를 기준으로 값을 찾아내도록 설정하고

conn, pstmt, rs, vo 값을 전부 불러와주고 나서

pstmt 값에 SQL명령문 설정 ? = 임의의 값

pstmt.setString(1,id); = id 값을 기준으로 검색

 

rs= pstmt.executeQuery(); = ResultSet의 객체를 반환함.

 

그 후 VO 값을 가져와서 전부 입혀줌.

 

마지막으로 VO; 값을 반환시켜주게 하면 끝.

 

Main class로 돌아가 

MemberVO r = dao.getMember("user01");
        if (r != null) {
            System.out.println(r);
        } else {
            System.out.println("존재하지않는id");
        }


        dao.getMember("user01");

"user01" 에 대한 정보가 있다면 모든 정보를 뱉어내고 아니라면

존재하지 않는다고 getMember(String id) 값을 실행

올바른 값

 

'DB수업' 카테고리의 다른 글

DataBase 수업 20211019  (0) 2021.10.19
DataBase 수업 20211018  (0) 2021.10.18
DataBase 20211017 수업  (0) 2021.10.17
Database 수업 20211014 (2)  (0) 2021.10.14
DataBase 수업 20211014  (0) 2021.10.14
Comments