TECH
QUESTION
자주하는 질문답변 입니다.
Oracle
작성자 | 유건데이타 | 등록일 | 2015-05-20 |
제목 | image file 을 insert 하는 예제 | ||
---|---|---|---|
다음은 image file 을 insert 하는 예제입니다.
참고 하십시오. * 이미지 화일의 Type에는 여러가지 형태가 있다. 예를 들면 BMP, PCX, TIF, ... 이 중에서도 압축 효율이 높은 File의 형태를 선택하는 것이 좋다. 가령 BMP Type보다는 PCX Format이 거의 1/4 정도로 압축을 해주므로 보다 효율 적이다. * 일단 PC의 Windows의 PaintBrush 또는 Image 처리하는 Tool로써 이미지 화일을 적절한 형태로 처리하여 File로 만들어서 Unix Server로 올린다. *image file을 저장하기 위해서는 image file이 저장될 column의 data type이 long raw이어야 한다. * Long Data를 처리하기 위해서는 file size를 알아야하며, 추후 File의 Size로써 처리해야 하는 일이 있다면, Table에 File의 Size도 저장하는 것이 효율적이다. * 아래의 프로그램은 Image File을 읽어서 Table에 저장하는 내용이다. #include typedef char bitmap[56262]; /* file size */ EXEC SQL BEGIN DECLARE SECTION; VARCHAR username[20]; VARCHAR password[20]; EXEC SQL TYPE bitmap IS LONG RAW(56262) REFERENCE; bitmap buffer; EXEC SQL END DECLARE SECTION; EXEC SQL INCLUDE sqlca; void sqlerror(); /* handles unrecoverable errors */ FILE *fp; main() { strcpy(username.arr, "SCOTT"); username.len = strlen(username.arr); strcpy(password.arr, "TIGER"); password.len = strlen(password.arr); EXEC SQL WHENEVER SQLERROR DO sqlerror(); EXEC SQL CONNECT :username IDENTIFIED BY :password; EXEC SQL WHENEVER SQLERROR DO sqlerror(); fp=fopen("xxx.bmp","r"); fread(&buffer, 1, 56262, fp); EXEC SQL INSERT INTO IMAGE VALUES (20, :buffer); EXEC SQL COMMIT WORK RELEASE; } void sqlerror() { EXEC SQL WHENEVER SQLERROR CONTINUE; printf("\nORACLE error detected:\n"); printf("\n% .70s \n", sqlca.sqlerrm.sqlerrmc); EXEC SQL ROLLBACK WORK RELEASE; exit(1); } |
Comment | |||
---|---|---|---|
등록된 코멘트가 없습니다. |