work list
2011-02-07 13:46:38

[BiKE]

1. Study presentation / Today

2. Fri Seminar => Paper..

- 14th ~ 19th

- make kn file..

- find previous works

- define my theroy..?

- 20th

- and meeting.

- make kn file

3. SNA Paper /14th ~ 17th

4. iPhone App / 7th ~ 18th

- make layout and Twitter information / 7th ~ 11th

- link to url / ~18th

5. Eng SNA Paper / 12th ~ 28th

- shorten 12th ~ 13th

- ...

[SSM]

1. 총회

2. Test

3. prepare interview 14th ~

[Car]

1. 10th day..

▼ more
clob이란?
2011-02-06 03:36:07

Lob type이란?

lob(Large Object) 타입은 대용량 데이터를 저장하기위한 데이터 타입으로 오라클 8버전부터 지원된다.

Lob 타입의 특징

이전에 대용량 처리는 long 타입으로 처리를 할 수 밖에 없었다. 그런데 이 칼럼은 한테이블에 하나만 사용할 수 있으며 최대 크기가 2GB였다. 더군다나 검색을 구현하기가 어려워 포기를 해야 했다. 그래서 이런 문제를 보안하기 위 나온 것이 Lob 타입이다. Lob 타입은 테이블에 여러개의 컬럼을 생성할 수 있으며 최대 크기가 4GB이다. 또한 long 타입보다 훨씬 쉬운 검색기능을 제공한다.

Lob type의 종류

이전에 대용량 처리는 long 타입으로 처리를 할 수 밖에 없었다. 그런데 이 칼럼은 한테이블에 하나만 사용할 수 있으며 최대 크기가 2GB였다. 더군다나 검색을 구현하기가 어려워 포기를 해야 했다. 그래서 이런 문제를 보안하기 위 나온 것이 Lob 타입이다. Lob 타입은 테이블에 여러개의 컬럼을 생성할 수 있으며 최대 크기가 4GB이다. 또한 long 타입보다 훨씬 쉬운 검색기능을 제공한다.

BLob (Binary Large Object), 이진 바이너리 데이터의 저장시 사용된다.

CLob (Character Large Object), 문서 데이터의 저장시 사용된다.

BFILE 외부 파일에 저장된 이진 데이터가 있는 경로의 저장시 사용된다.

문서에 대하여

- 작성자 : 김정식 (oramaster _at_ naver.com)

- 작성일 : 2005-10-11

- 강좌 URL : http://www.oracleclub.com/lecture/1870

- 이 문서를 다른 블로그나 홈페이지에 게재하실 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 오라클클럽의 모든 강좌는 크리에이티브 커먼즈의 저작자표시-비영리-동일조건변경허락(BY-NC-SA) 라이선스에 따라 자유롭게 사용할 수 있습니다.

▼ more
clob에 자료 넣기.
2011-02-06 03:35:11

Clob에 저장하기

1: import java.sql.*;

2: import java.io.*;

3: import oracle.sql.*;

4: import oracle.jdbc.driver.*;

5: ...

6:

7: public void insertQuery(UploadBoard up,int re_step,int re_level)

throws Exception

8: {

9: ResultSet rs = null;

10: PreparedStatement pstmt = null;

11: Connection conn = null;

12: String query = "insert into "+up.getTableName()+" (seq,re_step,

re_level,name,title,pwd,email,readnum,writeday,ip,relativeCnt,

homepage,imgInfo,content,tag)

values(?,?,?,?,?,?,?,0,sysdate,?,0,?,?,empty_clob(),?)";

오라클 명령어 empty_clob()을 이용해 공간을 확보한다.

13: try{

14: conn = DBManager.getClobConnection();

15: conn.setAutoCommit(false);

CLOB column을 업데이트 하는동안 다른 process의 접근을 막기위해

setAutoCommit(false)를 반드시 설정해야 한다. 이부분이 가장 중요하다.

16: pstmt = conn.prepareStatement(query);

17: pstmt.setInt(1,up.getSeq());

18: pstmt.setInt(2,re_step);

19: pstmt.setInt(3,re_level);

20: pstmt.setString(4,up.getName());

21: pstmt.setString(5,up.getTitle());

22: pstmt.setString(6,up.getPwd());

23: pstmt.setString(7,up.getEmail());

24: pstmt.setString(8,up.getIp());

25: pstmt.setString(9,up.getHomepage());

26: pstmt.setString(10,up.getImgInfo());

27: pstmt.setString(11,up.getTag());

28: pstmt.executeUpdate();

29: pstmt.close();

30: String query2 = " select /*+ index_desc("+up.getTableName()+

" "+up.getTableName()+"_indx) */ content from "+

up.getTableName()+" where seq = ? for update ";

for update를 이용해 CLOB column을 lock한다.

31: pstmt = conn.prepareStatement(query2);

32: pstmt.setInt(1,up.getSeq());

33: rs = pstmt.executeQuery();

34: if(rs.next()) {

35: CLOB clob = ((OracleResultSet)rs).getCLOB(1);

36: Writer writer = clob.getCharacterOutputStream();

37: Reader src = new CharArrayReader(up.getContent().toCharArray());

38: char[] buffer = new char[1024];

39: int read = 0;

40: while ( (read = src.read(buffer,0,1024)) != -1) {

41: writer.write(buffer, 0, read); // write clob.

42: }

43: src.close();

44: writer.close();

45: }

46: conn.commit();

47: conn.setAutoCommit(true);

CLOB column에 데이터을 저장하였다면 commit()을 실행시키고

conn.setAutoCommit(true)로 다시 설정한다.

48: }finally{

49: DBManager.close(rs,pstmt,conn);

50: }

51: }

Clob 불러오기

...

1: public BoardTable getViewData(String tableName,int seq) throws Exception

2: {

3: BoardTable bTable = new BoardTable();

4: String query = " select * from "+tableName+" where seq = ? ";

5: ResultSet rs = null;

6: PreparedS\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0tatement pstmt = null;

7: Connection conn = null;

8: try{

9: conn = DBManager.getConnection();

10: pstmt = conn.prepareStatement(query);

11: pstmt.setInt(1,seq);

12: rs = pstmt.executeQuery();

13: if (rs.next()) {

14: ...

15: ...

16: StringBuffer output = new StringBuffer();

17: Reader input = rs.getCharacterStream("content");

18: char[] buffer = new char[1024];

19: int byteRead;

20: while((byteRead=input.read(buffer,0,1024))!=-1){

21: output.append(buffer,0,byteRead);

22: }

23: input.close();

24: bTable.setContent(output.toString());

CLOB 데이터를 불러오기 위해서는 위에서처럼

rs.getCharacterStream("content")로 불러서 StringBuffer에 담아야 한다.

25: ...

26: ...

27: }

28: } finally {

29: DBManager.close(rs,pstmt,conn);

30: }

31: return bTable;

32: }

문서에 대하여

- 작성자 : 김정식 (oramaster _at_ naver.com)

- 작성일 : 2005-10-11

- 강좌 URL : http://www.oracleclub.com/lecture/1870

- 이 문서를 다른 블로그나 홈페이지에 게재하실 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 오라클클럽의 모든 강좌는 크리에이티브 커먼즈의 저작자표시-비영리-동일조건변경허락(BY-NC-SA) 라이선스에 따라 자유롭게 사용할 수 있습니다.

▼ more
Twitter App on iPhone
2011-02-05 21:16:57

드디어,

기능 구현 실제 부.

1. Table refresh

2. Grouping Table.

3. Using sqllite

4. Twitter

5. View and 형재형 url..

▼ more