Case1. 쿼리의 시작과 종료위치 찾기
쿼리 파싱을 위해 가장 먼저 할 일은 쿼리의 시작지점과 종료지점을 찾는 것이다.
우선, 현재 예시로 사용하는 쿼리의 경우
시작지점은 "SELECT"문이 될 것이고, 종료지점은 ";"이 될 것이다.
BufferedReader로 읽은 쿼리정보에서 String.contains()으로 각 문자열을 찾는다.
■ 1단계
- 읽어들인 라인에 "SELECT" 문자가 있는지를 체크하여 시작라인을 찾는다.
- 읽어들인 라인에 ";" 문자가 있는지를 체크하여 시작라인을 찾는다.
※ String.contains( "찾을 문자열" ) : 문자열에 {찾을 문자열}이 포함되었는지를 체크한다. ( true/false return )
Case1. Query
Coding
int iQueryLine = 0;
while( ( strLine = br.readLine() ) != null ) {
iQueryLine++;
// Query의 시작지점 찾기
if( strLine.contains( "SELECT" ) ) System.out.println( "Query 시작라인 : " + iQueryLine );
// Query의 종료지점 찾기
if( strLine.contains( ";" ) ) System.out.println( "Query 종료라인 : " + iQueryLine );
}
|
결과
Query 시작라인 : 3
Query 시작라인 : 13
Query 종료라인 : 21
|
■ 2단계
위의 결과에서 보듯이 "시작라인"이 2회 출력이 되었다.
쿼리 중간에 있는 Inner Query의 SELECT문까지 추출이 되었기 때문이다.
이런 문제를 해결하기 위해서, 그리고 이후 추출을 위해서도 시작과 종료에 대한 bit관리가 필요할 것 같다.
시작 및 종료를 관리하는 Bit를 추가해 보자.
Coding
결과
Query 시작라인 : 3
Query 종료라인 : 21
|
위와 같이 boolean변수를 이용하여 시작과 종료 flag를 추가하였다.
끝
P.S
글을 작성할때 직접 코딩을 하면서 진행하고 있는데,
코딩을 하는 시간보다 블로그에 글을 쓰고, 이미지를 만들고 하는게 훨씬 더 시간이 많이 걸리는 것 같다.
Copy&Paste를 위해 코딩 내용도 이미지가 아닌 텍스트로 올리고 싶지 않은데,
그냥 문자를 복&붙하면 너무 이상하게 보이고, 테이블 태그안에 붙여넣으려니 잘 붙여지지가 않아 HTML을 수정해야 하고...
뭔가 효율적인 방법이 없을까... 고민이다. 다른 분들은 어떻게 하시는지...
노하우가 있으신 분은 공유 좀 부탁드립니다. plz~
혹, 문서파일로 만들고, 문서 내용을 그대로 (문서의 서식포함) 보여주는 기능은 없을지...
'Study > Java' 카테고리의 다른 글
String, StringBuffer, StringBuilder 차이점 (0) | 2018.10.31 |
---|---|
Case1. Query를 String Buffer에 저장하기. (0) | 2018.10.31 |
Case1. 쿼리 추출 기준, Oracle Dictionary (0) | 2018.10.28 |
JDBC를 이용한 Oracle DB접속하기 (0) | 2018.10.28 |
Case1. 쿼리 파일 읽기 (0) | 2018.10.28 |