2011년 12월 12일 월요일

eclipse와 Oracle 연동하기

1. ojdbc14.jar
D:\oracle\product\10.2.0\db_1\jdbc\lib\ojdbc14.jar 복사
C:\Program Files\Java\jdk1.7.0_01\jre\lib\ext 위치에 붙여넣기

2. 이클립스 시작
JAVA EE 선택


이클립스 하단 콘솔창이 출력되는 영역부분 Data Source Explorer로 이동
Database Connections에서 마우스 오른쪽 클릭 후 New 선택


Coneection Profile Types에서 ORACLE 선택





































시계 모양 작은 아이콘 클릭 후 설치한 버젼에 맞는 오라클 버젼을 선택

JAR list 탭에서 ojdbc14.jar를 추가
기존에 디폴트로 추가되어 있는 ojdbc14.jar 삭제

Properties 탭에서 속성 수정

Catalog : [오라클 설치할 때 입력한 SID, default=orcl]
URL : jdbc:oracle:thin:@127.0.0.1:1521:orcl
DataBaseName : db
User ID : system
Password : [오라클 설치할 때 입력한 비밀번호]


수정 완료 후 OK


Test connection 버튼을 눌렀을 때 "Ping succeeded!" 메시지가 출력되면 DB 설정 성공
Finish 눌러 설정 마무리











eclipse와 tomcat 연동하기

1. 톰캣 다운로드
 http://tomcat.apache.org/ 


2. 압축 푼 후에 conf 폴더로 이동 - context.xml, server.xml 설정 바꾸기
--------------------------------------------------------------


    <Connector port="7777" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" URIEncoding="euc-kr" />






Connector port="8080" → Connector port="7777" 변경
URIEncoding = "euc-kr" 추가
-------------------------server.xml----------------------------


port 번호 변경 이유 : 오라클과 충돌 방지
euc-kr : 한글 인코딩 때문에
---------------------------------------------
<Context>


<Context reloadable="true"> 추가
------------------------context.xml----------


3. JRE_HOME, JAVA_HOME 환경변수 잡아주기
시작 → 내 컴퓨터 → 속성 → 고급 → 환경변수 → 시스템 변수 새로만들기
변수이름 : JAVA_HOME / 변수 값 : C:\Program Files\Java\jdk1.7.0_01
변수이름 : JRE_HOME   / 변수 값 : C:\Program Files\Java\jre7


재부팅


4. 이클립스 실행
Server tab에서 마우스 오른쪽 버튼 누른 후, New→Server











server type에 설치한 Tomcat 버젼 선택 후 next


































톰캣 설치 경로와 JRE 선택 후 Finish














생성된 서버 더블 클릭












Server Locations에서 Radio 버튼 아래와 같이 수정
Deploy Path 수정(작업 소스 파일은 워크 스페이스에 저장되지만 결과물은 별도의 폴더에 저장)
























수정 후 저장































[JAVA] Calendar를 이용한 달력

* 원하는 달을 입력받아 해당 달을 출력

import java.util.Calendar;
import java.util.Scanner;

public class start_1 {

/**
* Calendar를 사용한 달력 만들기
*/
public static void main(String[] args) {
// TODO Auto-generated method stub

Calendar cal = Calendar.getInstance();
String yyyymm;
int yyyy, mm, start_day, end_day, temp=0;
System.out.print("년 월 입력 (yyyymm) : ");
Scanner scan = new Scanner(System.in);
yyyymm=scan.next();
yyyy=Integer.parseInt(yyyymm.substring(0, 4));
mm=Integer.parseInt(yyyymm.substring(4, 6))-1;
cal.set(Calendar.YEAR, yyyy);
// 월은 0부터 11로 리턴되기 때문에 항상 1을 증가해야 한다. 7을 입력하면 8월이 된다.
     // 알고자 하는 달을 입력했을 경우에는 -1
     cal.set(Calendar.MONTH, mm);
cal.set(Calendar.DATE, 1);
//1~7까지 일~토
     start_day=cal.get(Calendar.DAY_OF_WEEK);
end_day=cal.getActualMaximum(Calendar.DATE);
System.out.println();
System.out.println("일\t월\t화\t수\t목\t금\t토");
for(int i=1; i<start_day; i++){
System.out.print("\t");
temp++;
}
for(int i=1; i<=end_day; i++){
temp++;
System.out.print(i+"\t");

if(temp%7==0)
System.out.println();
}
}
}

2011년 12월 8일 목요일

[Miplatform] Bebug시 필요한 HOT KEY

* Hot Key
F9 : Break Point 설정
F6 : Debug mode 실행
F5 : Break Point 다중으로 설정한 후 다음 Break Point까지 점프
F10 : 다음라인 실행
F11 : 함수 안으로 진입
Ctrl+F10 : 커서 위치까지 점프
Shift+F5 : Debug 종료




* TRACE() 함수
OUTPUT에 해당 내용 찍어주기 (자바에 System.out.print()와 같은 기능)

2011년 12월 5일 월요일

[Oracle] 저장 프로시저와 함수

* 프로시저


CREATE [OR REPLACE] PROCEDURE procedure_name
(argument1 [MODE] data type,
 argument2 [MODE] data type..
)


IS
    local_variable declaration;
BEGIN
   statement1;
   statement2...
END








* 함수 - 실행 결과를 되돌려 받을 수 있다


CREATE [OR REPLACE] FUNCTION function_name
(argument1 [MODE] data type,
 argument2 [MODE] data type..
)
RETURN data_type;
IS
    local_variable declaration;
BEGIN
   statement1;
   statement2...
   RETURN variable_name;
END



매개변수 : 프로시저나 함수가 전달 받을 값을 저장할 변수
바인드변수 : EXECUTE 후에 구해진 결과를 SQL*Plus에서 받아오기 위해 사용하는 변수
[MODE] : IN, OUT, INOUT

[Oracle] Cursor

* 커서
PL/SQL의 RECORD + TABLE
프로그램 언어의 구조체




* 커서 사용 방법
① 커서 선언
CURSOR cursor_name


② 커서 오픈
OPEN cursor_name ...
Ex) FETCH C1 INTO VEMPNO, VENAME, VSAL;


③ 커서에 조회한 결과 값 인출 후 저장
FETCH cursor_name 


④ 커서 닫기
CLOSE cursor_name


→ OPEN-FETCH-CLOSE 없이 커서 처리 방법
    FOR   레코드명   IN   커서명   LOOP
    END LOOP;




* 커서의 상태
%NOTFOUND    : 커서 영역의 자료가 모두 FETCH 됐는가?
%FOUND           : 커서 영역에  FETCH가 되지 않은 자료가 있는가?
%ISOPEN          : 커서가 OPEN된 상태인가?
%ROWCOUNT   : FETCH된 RECORD가 몇 개 있는가?

[Oracle] PL/SQL

* 탄생 배경
SQL 비 절차적 언어라 간단히 작성된 문장을 입력함으로서 원하는 결과를 쉽게 얻지만, 절차적 언어만이 가진 기법 사용 불가능(조건에 따라 처리 달리하기, 반복적으로 여러 개 문장 실행 반복하기 등




* PL/SQL 구조
1) 선언부 - 변수나 상수 선언
스칼라(SCALAR) - 선언부에 사용하는 변수
REFERENCES 변수 제공 - %TYPE      
                                                (ex) vdeptno  emp.deptno%TYPE;
                                       %ROWTYPE
                                                (ex) vemp  emp%ROWTYPE;


2) 실행부 - 제어문, 반복문, 함수 정의 등 logic 기술
변수에 값 할당하기 :=
(ex) vdname := 'ACCOUNT'


PROMPT에서 값 입력 받기
(ex) ACCEPT 변수명 PROMPT '입력하고자 하는 메시지'
       ACCEPT PDAN PROMPT → DECLARE
                                                     VDAN NUMBER(2) := &PDAN;


PL/SQL 테이블과 레코드 - 변수 타입을 사용자가 지정
테이블(column)
          TYPE type_name IS TABLE OF
          table_name.column_name%TYPE
          INDEX BY BINARY_INTEGER;


레코드(row)
          TYPE record_name IS RECORD 
          ( filed_name1 field_type
            . . .
            field_nameN field_type);




3) 예외처리 - 예외 발생 시 해결


(SET SERVEROUTPUT ON으로 설정 후 dbms_output으로 실행 결과 보기)