0
 19   2   1
  View Articles

Name  
   손병목  (2003-03-29 02:42:54, Hit : 19553, Vote : 1520)
Homepage  
   http://www.itmembers.net
Subject  
   게시판 실습(6) - 입력 글 저장하기 (3) 소스 설명
회사 일도 바쁘고, 아니 그것보다는 감기 때문에... 반쪽 남은 소스 코드 설명을 이제서야 하게 되었습니다.
여러분들도 감기 조심 하세요...

전 시간에 이어서 설명드리겠습니다.



데이터베이스에 연결하는 부분입니다.
31행은 데이터베이스 드라이버를 찾는 부분입니다.
13강좌에서 설명드린 대로 JDBC를 설치했다면 오류가 없을 것입니다.

32행은 좀 깁니다. 주~욱 연결된 한 행입니다.
실제 DB에 연결하는 부분입니다. 연결 정보를 Conn 이라는 변수에 담아 둡니다. 이렇게 연결 정보를 담는 변수를 선언할 때는 Connnection 을 사용합니다.

32행을 해석하자면,

"localhost의 itmembers라는 DB에, 사용자 ID는 phpbbs이고 패스워드는 phpbbs로 하여 접속하되, 전세계 언어를 표시할 수 있는 유니코드를 사용할 수 있게 하며, 문자를 변환할 때는 한글 코드(euc-kr)를 사용한다" 라는 뜻입니다.

앞으로도 MySQL용 JDBC를 사용하기 위해 계속 보게 될 것입니다.
(지금은 MySQL에서 공식적으로 JDBC 드라이버를 내놓아 이렇게 사용하고 있는데, 예전에 여러 개의 JDBC가 떠돌때는 각각 사용하는 법도 약간씩 달랐습니다.)




str_sql 변수에 SQL 쿼리 문을 저장합니다.
그런데 쿼리문 중간중간에 물음표(?)가 보입니다. 이건 일종의 불완전한 쿼리문인데, 물음표 부분을 나중에 다른 내용으로 대체하게 됩니다.

UNIX_TIMESTAMP() 함수는 현재 시간을 유닉스 타임스탬프 형식으로 구할 때 사용합니다. 일반적으로 날짜나 시간을 표시할 때는 2003-03-25 23:22:15 와 같이  표시하는데, 이렇게 하지 않고 숫자로만 표시할 수 있습니다. 이를 타임스탬프 형식이라고 하는데, 컴퓨터에서 날짜를 인식하는 기본적인 방식이기도 합니다. 1970년 1월 1일을 기준으로, 그 이후로 계속해서 숫자를 더해나가는 방식입니다. 일반적으로 문자열 형식으로 저장하는 것보다 공간도 적게 차지하고 날짜나 시간을 계산하기에도 편리한 면이 있습니다.
그냥 보기 편하게 날짜나 시간 형식으로 저장해도 되겠지만, PHP 강좌에서 사용한 DB 구조를 그대로 사용하기 위해서라도 타임스탬프 형식으로 저장하게 된 겁니다. DB의 writetime 컬럼의 형식은 정수형으로 정의했었죠...

참고로,
UNIX_TIMESTAMP(CURRENT_TIMESTAMP)가 아니라, UNIX_TIMESTAMP(CURRENT_DATE)라고 쓰면 현재 날짜값만 입력됩니다.(즉 현재날짜의 0시0분0초에 해당되는 숫자가 저장됩니다.)




40~46행을 보면
pstmt.setString(1,s_name); 이런 식으로 써 놓은 거 있죠... 이게 바로 위의 쿼리문 중 첫번째 물음표에 s_name 값을 넣는다는 뜻입니다. 그리고 s_name의 데이터 형식은 문자열이구...
만약에 s_name의 데이터형이 정수형이었다면... pstmt.setInt(1,s_name) 과 같이 써야 합니다.

39행 볼까요.
pstmt는 PreparerdStatement 변수(객체)입니다.

자바에서 Statement는 일종의 DB 연결 통로를 말합니다. 32행에서 Connection 정보를 Conn에다가 저장해 두었죠? 이 연결 정보(Conn)를 가지고 실제 연결 통로(Statement)를 만드는 것입니다. 그 연결 통로를 pstmt로 정의하자라는 것입니다.
Statement가 완전한 의미의 연결 통로라면 PreparedStatement는 쿼리문이 불완전할 때, 즉 물음표(?)가 사용된 쿼리문이 있을 때 사용하는 것입니다.

이곳에서만 PreparedStatement를 사용하고 앞으로는 제대로된 Statement를 사용하게 될 겁니다.
물론 여기서도 PreparedStatement 대신 Statement를 사용해서 구현할 수 있지만, 앞으로도 그런 식의 표현은 계속~ 지겹도록 나오니까, 이것저것 공부하는 셈 치고 이렇게 표현해봤습니다.



48행에서 열어 두었던 연결 통로를 닫습니다.(꼭! 반드시! 닫아주세요~)
50행에서는 지금까지 사용한 연결 정보(Conn)를 닫아 줍니다.

이렇게 DB와 연동하기 위해 사용했던 연결 정보(Connection)와 연결 통로(Statement)를 반드시 닫아 주어야 합니다.



63~72행까지는 HTML 코드입니다. "입력한 글을 자~알 저장했습니다"라는 메시지를 표시하고 list.jsp 로 되돌아가는 자바 스크립트입니다.
self.window.alert("...") 를 그냥 window.alert("...")라고 해도 됩니다. 더 줄여서 alert("....")라고 해도 되구요.

자~ 어때요...

쉽게 설명드린다고 했지만 여전히 어렵게 느껴질 수 있습니다. 아직 저의 내공이 부족하여 쉽게 전달해 드리지 못하는 면도 있겠지만, 대부분 처음이 어렵습니다.
괜히 복잡해 보이고 어렵게 느껴지는 것 같구요...
그러나 아무리 복잡해 보여도 앞으로 계속해서 보게되면 어느 순간 매우 자연스럽게 느껴질 것입니다.

감기 조심 하세요~

이상, 동주아빠 손병목이었습니다.

Prev
   게시판 실습(7) - include 지시자 사용하여 DB 연결 부분 분리

손병목
Next
   게시판 실습(5) - 입력 글 저장하기 (2) 소스 설명

손병목


Copyright 1999-2021 Zeroboard / skin by Zetyx