Learn/KH정보교육원

[KH정보교육원 당산] 20일차 (오라클과 엑셀파일을 이용한 실습 - 주유소)

Dahoon06 2021. 4. 6. 17:16
728x90
반응형

어제 내준 문제

문제1. 주어진 파일을 이용하여 데이터베이스에 저장한 후, 저장된 파일을 html파일로 출력

문제2. 셀프 가능 주요소 개수와 비 셀프 주유소의 개수 파악.

 

준비)

1.오라클 테이블 생성

=> 필드명(상호,주소,상표,전화번호,셀프여부,휘발유,경유)

=>휘발유와 경유는 정수형

2.자바와 오라클 연동

=> 드라이버 필요

3.엑셀파일을 읽어서 값을 오라클에 저장

=> jxl.jar필요 

 

테이블 생성

 

 

JDBC_Class 

쿼리 실행 객체

Statement : 단순조회(쿼리 안에 변수가 없을 경우)

                접속 성공한 Connection 객체를 통해 생성

 

예) "select *from oilbank"를 자바에서 오라클에게 실행 요청

      (쿼리문에 변수가 없기때문에 굳이 PreparedStatement 사용안함)
statement stmt = conn.createStatement();
String querySelect = "select * from oilbank";
ResultSet rs = stmt.exceuteQuery(querySelect); 

// select 쿼리문을 사용했을 경우 반드시 ResultSet으로 반환 받아야한다.
또는
statement stmt = conn.createStatement("select * from ex1");  // 내부에 바로 쿼리문을 줄 수 있다.

 

 

PreparedStatement : 쿼리 내부에 변수를 생성할 경우 사용

                접속 성공한 Connection 객체를 통해 생성

 

String query_insert = "insert into gas_station values (?,?,?,?,?,?,?)";

pstmt = conn.prepareStatement(query_insert);

pstmt.setString(1, cells[0].getContents());  => 1번째 물음표 위치에 변수 cells[0].getContents()의 값을 대입(치환)

 => setString()메소드 이용(문자열일경우) 

 

executeQuery(); => select구문 실행

executeUpdate(); => insert/update/delete 구문 실행

: 두가지 메소드 모두 쿼리문을 전달 받아야한다. 없으면 이클립스 내에서는 오류가 뜨지 않지만 실행해서 오류 발생

 

ExcelReaderClass

 

메인에서 실행할 때는 데이터 삽입은 한번만 실행 후 주석처리를 하던 지우던 해야한다.

안그러면 계속 해서 같은 데이터가 쌓이게된다.

String uri = null;

//uri = "D:/Excercise/local_oil.xls";

//ExcelReaderClass.readExcel(uri);

 

오라클에 데이터 저장 끝


저장된 파일을 HTML파일로 만들어야한다.

PrintClass에서 tag를 만들고 HTML파일을 만드는 메소드를 만들 것이다.

 

Tag 생성

 

 

makeTags 메소드에서 전체 데이터가 들어있는 ResultSet rs를 메인메소드에서 받는다.

 

HTML 파일 생성

 

FileWriter 클래스 사용

 

 

MainClass

태그 및 HTML파일을 생성하기 위해서는 데이터가 필요하다.

오라클에 데이터를 저장 해놨기에 꺼내다 써야한다.

Query문 "select * from oilbank";

select쿼리문은 반드시 저장 타입을 ResultSet으로 받아야한다.

 

완성된 HTML 파일(open)


셀프 가능 주요소 개수와 비 셀프 주유소의 개수 파악하기

 

1.self 필드의 전체 데이터를 조회한 후 자바에서 검색

=> select self oilbank where self='Y';

    select self oilbank where self='N';

2. 오라클이 제공하는 함수 사용 : count() 함수

=> select count(*) from oilbank where self='Y';

    select count(*) from oilbank where self='N';

 

 

JDBC_Class에 추가된 메소드

 

메인에서 보내는 값을 가지고 메소드 내부에서는 count()함수를 사용하여 개수를 구한다.

 

 

MainClass 추가된 코드

 

출력값

 

2번까지 끝났다.

 


다음 문제)

1. best_sandwiches_list_chicago_price_address.xls 읽어서 

   오라클에 저장 (Rank, Cafe, Menu, Price, Address)

2. 이미지 파일명을 저장 (30, 34번은 이미지가 없다. => default.jpg 대체)

   오라클에 저장 (이미지.jpg)

 

오라클 : rank, cafe, menu, price, addr, img <== 필드명

 

 저장된 데이터를 html 로 출력 (10행 5열)

rank menu img price addr => 순으로 되도록

728x90
반응형