본문 바로가기

수업 정리

29일차 수업 정리(MySQL 데이터베이스 연결작업 - 후-)

9. 데이터 삽입

    => 기본키 생성 방식

        - 기본키 값을 직접 입력하도록 : ID

        - 기본키의 값을 자동으로 설정하도록 하는 경우 : 일련번호

 

    => 직접 입력하도록 하는 경우 중복 검사 수행

    => 자동으로 설정하는 경우 오라클의 시퀀스나 MySQL Auto_Increment를 이용, 가장 큰 번호에 +1하는 방법등

  1) 기본키를 직접 입력받는 경우 : 입력받을 때 중복 검사 수행

    => getPlayer()를 이용하여 중복 검사 가능

        - num1개를 받아서 1개의 데이터를 찾아오는 메소드

        - 데이터가 리턴되면 존재, 리턴되지 않으면 존재하지 않는 num

    => DAO 클래스에

 

insert into player(playerID, playerName, playerLevel, playerDemage, playerCripercent, playerEXP, playerDate)

values(?,?,?,?,?,?,?)

 

    => MySQL의 한글 문제

        - 이전에는 OpenSource를 유럽에서 많이 진행

        - Open Source들의 인코딩 방식이 ISO-Latin1(ISO-8859-1)로 설정된 경우가 많음(한글 X)

        - 접속시 utf-8로 접속 할 수 있도록 연결 url을 수정

        - 연결 url뒤에 ?useUnicode=true&characterEncoding=utf8을 추가

  2) 기본키를 자동으로 입력

    => Oracle Sequence MySQL Auto_Increment를 사용

    => 테이블에서 직접 가장 큰 번호를 찾아서 +1을 하는 방식

        - pstmt.setString(1, this.bigID()+1);

    => DAO 클래스에 가장 큰 번호를 가져오는 메소드를 작성 - private로 생성

        - insertPlayer에서 호출하여 사용

    => 하나의 메소드에 여러개의 SQL수행시 작업순서에 주의

        - 연결 -> 작업 -> 해제 -> 연결 -> 작업 -> 해제의 순이 지켜져야 함

    => Main 클래스의 데이터 삽입 부분을 수정

        - 자동으로 대입되므로 ID를 입력받을 필요 없음

 

10. 삭제 작업

    => 삭제의 경우 대부분 기본키만 받아서 수행하는 경우가 많음

    => 회원제 사이트의 경우 비밀번호를 먼저 입력 받아서 데이터를 수정이나 삭제해도 되는 유저인지 판별후 수행

    => 삭제, 수정은 데이터가 맞는지 재확인하는 절차를 거침

    => 삽입은 이런 절차를 거치지 않지만 입력 내용이 보이지 않는 비밀번호의 경우만 이런 절차를 거침

    => 수정의 경우 데이터를 찾아와서 기존 내용이 무엇인지 보여주고 수정하도록 해주어야 함

    => 삭제하는 SQL : delete from player where playerID = ?

 

11. 수정하기

    => 수정하는 SQL : update 테이블명 set 컬럼명 = (계산식), 컬럼명 = ... where 기본키 = ?;

 

12. 부분일치 검색

    => 부분일치는 like wildcard 문자 이용

        - % : 글자수와 상관없음

        - _ : 아무글자나 1글자와 매칭

        ex) playerName이 호로 시작 - PlayerName like '%'

             playerName에 호가 포함 - PlayerName like '%%'

             playerName이 호로 끝나는 두글자 - PlayerName like '_'

    => 부분일치하는 데이터를 찾으면 0개 이상으로 봐야 함(데이터베이스 조회시는 0 or 1 / 0개이상이냐로 구분)

 

13. Paging 구현

    => 조회한 데이터가 많을 때 페이지 단위로 나누어서 출력(전체데이터 갯수와 페이지당 출력 갯수를 알면 계산가능)

    => 페이지 갯수 구하기

        (int)((double)전체 데이터 갯수 / 페이지당 출력 갯수 + (double)(페이지당 출력갯수-1)/페이지당 출력갯수)

 

ex) 페이지당 출력 갯수 : 10

전체 데이터 갯수 : 100 - 10page : (int)((double)100/10 + (9.0)/10)

전체 데이터 갯수 : 101 - 11page : (int)((double)101/10 + (9.0)/10)

    => 나누었을 때 소수가 있으면 자리올림을 해야 함

  2) 페이지 번호와 페이지당 데이터 갯수를 매개변수로 받아 페이지 번호에 해당하는 데이터를 조회하는 메소드 구현

    => MySQL에서 원하는 위치의 원하는 갯수만큼 데이터를 가져오는 방법은 limit

        - select 구문 완성 후 맨 뒤에 limit 시작번호 데이터갯수를 추가

ex)

select * from player limit 1,2;

 

  4) Main case 수정

    => 전통적인 PC용 웹 브라우저에서 조회하는 형태는 페이지 번호를 하단에 출력하여 번호 클릭시 해당 데이터 조회

    => Mobile에서는 페이지 번호를 정확하게 터치하는 것이 어려움

        - 다음에 조회할 데이터는 특별한 경우가 아니라면 바로 다음 페이지의 데이터

        - 최근에는 특정 이벤트시 다음페이지의 데이터를 출력하는 형식을 주로 사용

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

31일차 수업 정리(MongoDB- Connect)  (0) 2020.05.21
30일차 수업정리  (0) 2020.05.20
28일차 수업 정리(MySQL)  (0) 2020.05.18
27일차 수업 정리(MySQL)  (0) 2020.05.15
26일차 수업 정리  (0) 2020.05.14