벌써 다섯번째 게시글이 되었네요. 정말 빠르게 적나봐요..(대충대충?)

저는 공부하면서 정말 많은 시행착오와 에러를 넘어서 끝냈습니다. 원 글에 있는 댓글도 참고하면서요~

그래서 제가 이번에 포스팅할 때는 발생할 수 있는 에러같은 경우에는 다 짚고 넘어갈려고 하는데, 다 짚을 수 있을지 모르겠네요

사람마다 발생하는 에러가 천차만별이라서 하하하.. 아무튼 하루만에 다섯번째 게시글 진행합니다~


저번 게시글에서 write를 통해 DB에 입력하는것까지 진행하였습니다. 그런데 왠걸?! 또 입력을 하려고보니 입력은 안되고 다음과 같은 에러가 나옵니다.

이 에러는 데이터베이스에 있는 기본키(PK)가 중복되어 insert되었기때문에 발생하는 에러입니다. 그렇다면

기본키인 idx가 중복되지 않게 입력을 해야겠죠? 간단히 생각해보면 board테이블에 select를 날려 가장 큰 IDX값을 가져와서

이 값에 +1한 값을 idx로 지정하여 넣으면 되겠네요?? 뭔가 직관적이고 간단해서 의심할 수도 있지만 이 기능을 DB에서도 지원을 해줍니다!! 

Oracle에서는 시퀸스라고 하죠! 이제 그 시퀸스를 사용해보죠

SQL Developer로 돌아와서 왼쪽에 보시면 시퀀스라는 폴더같이 생긴게 보일겁니다.

값을 넣지않으면 기본값으로 들어가니 확인을 눌러주세요. 그리고 Board 워크시트로 들어갑니다. 

그리고 다음 구문을 입력하고 실행합니다.

SELECT board_seq.currval from dual;



만약 위의 실행이 에러가 날 가능성이 다분한데 에러가 난다면 다음 구문을 입력한 후에 다시 시도해보세요.

SELECT board_seq.nextval from dual;

그럼 잘 될겁니다! 

간단히 설명하자면 currval는 현재 값이 무엇인지 알려주고 nextval는 현재값에서 증분값만큼 더한 값입니다.

nextval를 계속하면 숫자가 올라가는 것을 확인할 수 있겠지요. 하지만 지금 입력 많이 해두면 나중에 idx가 꼬일 수도

있어요.

자 이제 idx도 자동으로 생성하게 되었으니 이 코드를 적용해봅시다.

그리고 성공적으로 DB에 작성이 되었다면 다시 list로 돌아가도록 해봅시다.

간단하게 finally{}를 통하여 돌아가게 하였습니다.

out.print는 <%=%>와 마찬가지로 페이지에 코드를 그대로 뿌리는 역할을 하며

location.href=는 현재 경로를 변경하는 자바스크립트 구문입니다. JSP구문은 웹서버에서 가장먼저 실행되요


자 여기까지했지만 여전히 list.jsp에서는 db로부터 데이터를 가져오질 않습니다.  쓰는거만 했죠! 이제 가지고 올 수 있도록 해봅시다.

list.jsp 파일을 고쳐보도록합시다.

아까 insert.jsp에 넣었던 DB 커넥트부분이랑 매우매우 유사하죠?? 한가지 다른점은 ResultsSet rs =null;이 추가되었습니다.

게시글을 DB에서 가지고올 때 값이 하나가 아니라 여러개이기때문에 저장할 장소가 필요합니다. 

그렇다면 게시글이 하나일리는 없을테니까 여러번 반복하게 되겠죠? 그러면 어떻게 짜야될까요? 

스크립트릿은 어디에나 들어갈 수 있다는걸 생각하면됩니다! 스크립트릿을 나눠서 출력할 수 있게 해봅시다.


아 참 위에 <%@page import="java.sql.*"%> 하는거 잊지마세요.

DB에 있는 값들이랑 똑같죠? 이렇게 불러오면 되는겁니다. 근데 살짝 디자인이 바뀌었죠?

<head>태그가 끝나기 전에 아래의 구문을 입력하면 바뀌게 됩니다. CSS(Cascading Style Sheet)덕분이죠.

CSS는 html문서를 이쁘게 꾸며줍니다. 


<style type="text/css">
    table, td, th {
    border:1px solid purple;
    }
    th{
    background-color:purple;
    color:white;
    }
</style>

  1. ghp 2018.11.15 15:28

    1.4페이지가 없어졌어요 ㅜ

  2. ghp 2018.11.20 12:20

    우옹 감사합니다~!

+ Recent posts