Long Raw 의 데이타 처리는 BLOB 처리하는 Type 이 따로 있어요
다음과 같이 테스트를 진행 할 수 있을 겁니다.
int ret;
int i;
char TB_Mime[255];
int blob_size;
char *Blob;
FILE *fp;
TBA_DATA tba_data[1];
ret = TBAPI_Init(tba_data, "/home/toinb/toinb_api/message.ko","/tmp/Toinb_api.log");
if ( ret < 0 )
{
fprintf(stderr,"ERROR: [%d : %s]\n",TBAPI_GetErrorNo(tba_data),TBAPI_GetErrorMsg(tba_data));
}
ret = TBAPI_SetArg(tba_data,"jpg_id=lee001",',','=');
ret = TBAPI_GetData(tba_data,"210.124.184.4","6001",30,"get_jpg_blob(O:output=out)");
ret = TBAPI_GetColumnBlob(tba_data, "out",i, "TB_Blob", (void **)&Blob, &blob_size);
ret = TBAPI_GetColumnString(tba_data, "out",i, "TB_mime", TB_Mime, sizeof (TB_Mime), TB_STRING);
printf ("blob size[%d]\n", blob_size);
printf ("blob mime[%s]\n", TB_Mime);
fp = fopen("/tmp/blob.jpg","w");
ret = fwrite(Blob,1,blob_size,fp);
fclose(fp);
TBAPI_Free(tba_data);
일반적으로 위의 작업을 수행하려면 BLOB 만 처리하는 Service가 따로 존재 해야 해요
그래서 그 BLOB 서비스를 URL 로 가져와서 처리를 해야 하는 방법이 있어요
위의 소스가 얼마나 도움이 될런지 모르겠지만,
1) BLOB 처리 하는 Service
2) 데이타를 처리하는 Service 에서 URL 타입으로 BLOB 처리하는 Service 콜해서 처리
2번에서 아래의 부분에 TB_URL 를 추가 해야 하고
콜은 이벤트에서 다음과 같이 처리할 수 있습니다.
...
strcpy(tmp_url, "/edu_demo?toinb_dataid4=Data_Long_sl02&Num1=");
...
tmp_url은 URL 타입으로 선언한 헤더이고요....
도움이 되었으면 합니다.
>* 고객시스템명 : 사내시스템
>* TOInB 버전 : 5.0
>* 서버 Platform : IBM P690, oracle 8i
>* 문의 유형(질문/요청/참조) : C에서 TOInB API Library 관련문의
>* 내용 :
>
>C에서 API Library를 이용하여 transaction을 생성합니다.
>그런데, 이때 long raw를 저장하려고 하는데 도통 어떻게 해야 할지 모르겠네요
>
>html에서는 쉽게 예제도 있고 한데, C에서는 어떻게 해야 할지 샘플있으면 부탁드립니다.
>
>long raw이외는 다음과 같이 했고, 별 문제 없이 잘됩니다.
>
> TBAPI_CreateDatatable(tba_data, "input1");
> TBAPI_SetFormat(tba_data, "input1", TB_NORMAL_COL, "Edi_seq", TB_STRING, 11, 0);
> TBAPI_SetFormat(tba_data, "input1", TB_NORMAL_COL, "Bal_resno", TB_STRING, 13, 0) ;
> TBAPI_SetFormat(tba_data, "input1", TB_NORMAL_COL, "Bal_hname", TB_STRING, 20, 0);
> TBAPI_SetFormat(tba_data, "input1", TB_NORMAL_COL, "Bal_deptnm", TB_STRING, 24, 0);
> TBAPI_SetFormat(tba_data, "input1", TB_NORMAL_COL, "Bal_jikwi", TB_STRING, 20, 0);
> TBAPI_SetFormat(tba_data, "input1", TB_NORMAL_COL, "Confirmer_cnt", TB_STRING, 2, 0);
>
> TBAPI_PutColumnString(tba_data, "input1", "Edi_seq", ls_var1[0], strlen(ls_var1[0]), TB_STRING);
> TBAPI_PutColumnString(tba_data, "input1", "Bal_resno", ls_var1[1], strlen(ls_var1[1]), TB_STRING);
> TBAPI_PutColumnString(tba_data, "input1", "Bal_hname", ls_var1[2], strlen(ls_var1[2]), TB_STRING);
> TBAPI_PutColumnString(tba_data, "input1", "Bal_deptnm", ls_var1[3], strlen(ls_var1[3]), TB_STRING);
> TBAPI_PutColumnString(tba_data, "input1", "Bal_jikwi", ls_var1[4], strlen(ls_var1[4]), TB_STRING);
> TBAPI_PutColumnString(tba_data, "input1", "Confirmer_cnt", ls_var1[5], strlen(ls_var1[5]), TB_STRING);
>
> TBAPI_InsertRow(tba_data, "input1", TB_JOB_INSERT);
>
> TBAPI_Connect(tba_data, "XXX.XXX.XXX.XXX", "XXXX", 6);
>
> TBAPI_SendData(tba_data, "AAA_t01(I:input1=input1)");
> int ret = TBAPI_ReceiveData(tba_data);
>