MAIN
여행
지식
낙서연구
Q&A
정보구름
 



L I N K S
KURAPA.COM MAPS
세고비아 길버드 Blog
홈미디어센타 X-Revo
고구마킬러 ㄲㅏㄲㅣ
DaDa의 원초적 잡화
아하! 무진장 알뜰정보
바조의 짜바스크립
일하는엄마 - 워킹맘
네이버,구글맵 지도 검색
세상을 살아가며 궁금한것들
CTICKET - 인생의 쿠폰
Super Coder's Page
똑똑한 검색 ReportBank
MSN Web Messenger
포토웤스(PHOTOWORKS)

믹시
Scouter for KURAPA.COM

0


Translator
Francais (French) Deutsch (German) Espanol (Spanish) Italiano (Italian) Portugues (Portugese) 日本語 (Japanese) 한국말 (Korean) ??中文 (Chinese) العربية (Arabic) Русский язык (Russian) English



> Q&A > Groovy
전체글 수: 12
요즘 뜬다는 그루비(Groovy)... 함께 심층 분석 해보세
그루비(Groovy) 튜토리얼 6 - GSQL
2008-07-11 11:03:21


2008.4.22 translation & editing by gilbird

원문: http://groovy.codehaus.org/Tutorial+6+-+Groovy+SQL

그루비 SQL

이번 튜토리얼에서는 앤드류 글로버(Adrew Glober)가 작성한 그루비 SQL에 대한 글의 일부를 보도록 하자. 아래는 문자열 선언부에 변수를 넣는 새로운 언어 구성체이다.  아래를 보도록 하자.

piEstimate = 3;
println("Pi is about ${piEstimate}");
println("Pi is closer to ${22/7}");

보시다시피 문자열에서 그루비는 ${}를 그루비 식으로 인식한다.

이 형식은 아래와 같이 보다 확장할 수 있다.

간단한 질의 실행하기

첫번째 그루비 SQL 코드는 세 줄이다.

import groovy.sql.Sql
sql = Sql.newInstance("jdbc:jtds:sqlserver://serverName/dbName-CLASS;domain=domainName", "username",
"password", "net.sourceforge.jtds.jdbc.Driver")
sql.eachRow("select * from tableName", { println it.id + " -- ${it.firstName} --"}

첫번째 줄은 자바 import이다. Sql 객체의 전체 이름을 알리고 있다. 두번째 줄은 SQL 데이터베이스에 새로운 연결을 하고 sql 변수에 연결을 저장한다.

이 코드는 MS SQL 서버로 연결하는 jTDS 연결용으로 작성했다. 각자 username과 password와 같이 사용하고자하는 데이터베이스에 대한 파라메터를 조절하기 바란다.

마지막 세번째 줄은 sql의 eachRow 메서드에 두개의 인자를 전달하는데 첫번째 인자는 질의 문자열이고 두번째 인자는 값을 출력하는 클로져이다.

클로저의 "it"은 두가지 다른 방식으로 액세스 한다는 점을 주의깊게 보기 바란다. 첫번째는 it의 id를 액세스하는 간단한 필드 참조이고 두번째는 앞서 언급한 그루비 식이 들어있다.

따라서 한 열에 대한 출력은 아래와 같이 나온다.

001 -- Lane --

DB에서 값 가져오기

DB의 한 열에서 한 개 이상의 컬럼 값이 필요하다면 아래와 같이 하면 된다.

row = sql.firstRow("select columnA, columnB from tableName")
println "Row: columnA = ${row.columnA} and columnB = ${row.columnB}"

복잡한 질의 수행하기

위 예제들은 아주 간단했는데 insert, delete, update 등 복잡한 데이터 처리 질의에 대해서 다루는 경우 그루비 SQL이 아주 유용하다. 이 때 클로저를 쓸 필요없이 그루비의 Sql 객체의 execute와 executeUpdate 메서드를 쓰면 된다. 이 메서드들은 기존 JDBC Statement 클래스에 있는 것들과 이름과 동작이 유사하다.

아래는 ${} 문법으로 변수를 치환하여 insert를 수행하는 간단한 예이다. 이 코드는 새로운 열을 people 테이블에 insert한다.

firstName = "yue"
lastName = "wu"
sql.execute("insert into people (firstName, lastName) "+
" values ('${firstName}', ${lastName})")

위의 예에서 insert문의 모든 문자열에 작은 따옴표를 넣어야 하는 점에 유의해야 한다. 이 방식은 바람직하진 않다 (데이터에 작은 따옴표 문자가 있을 경우를 생각해보라). 보다 나은 방식은 아래와 같이 prepared statement를 사용하는 것이다.

firstName = "yue"
lastName = "wu"
sql.execute("insert into people (firstName, lastName) "+
" values (?,?)", [firstName, lastName])

위의 예를 보면 insert문에서 넣고자 하는 데이터를 ?로 표시하고 실제 넣을 값은 배열 인자로 전달하면 된다. update도 유사한 방식이다. 아래 예를 보면 executeUpdate 메서드 역시 질의에서 ?에 들어갈 값을 가져온다.

comment = "Lazy bum"
sql.executeUpdate("update people set comment = ? where id=002", [comment])

delete는 질의 문법이 다른것 외에는 위와 동일하다.

sql.execute("delete from word where word_id = ?" , [5])


태그 : SQL , 그루비
추천 : 0, 조회 : 323
코멘트 0 | 트랙백 0 | 첨부파일 1
글자의 색상을 지정합니다 글자의 배경색상을 지정합니다
글자를 진하게 합니다 글자를 기울이게 합니다 밑줄을 긋습니다 취소선을 긋습니다
link를 만듭니다 이미지를 추가합니다 동영상/플래쉬등을 추가합니다 html 코드를 직접 입력합니다
이모티콘을 추가합니다 글박스를 만들거나 글숨김 기능을 추가합니다 html 코드를 직접 입력합니다
html모드로 변환합니다.
 
번호
제목
글쓴이
일자
추천
조회
12
2008-08-04
0
478
11
2008-07-11
0
1,410
10
2008-07-11
0
337
9
2008-07-11
0
330
8
2008-07-11
0
324
7
2008-07-11
0
303
6
2008-07-11
0
292
5
2008-07-11
0
639
4
2008-07-11
0
299
3
2008-07-11
0
383
2
2008-03-29
0
609
1
2008-03-28
0
470


 
Copyright 2000-2008 KURAPA.COM All Rights Reserved.