|
Oracle 9i를 dbExpress를 이용해서 쓰고 있습니다.
Table tt {
aa integer;
bb varchar2(512);
}
select aa, bb from tt; 를 수행한 다음에
int aaa = SQLDataSet1->FieldValues["aa"];
unsigned char bbb[1024];
memcpy(bbb, AnsiString(SQLDataSet1->FieldValues["bb"]).c_str(), 512);
를 수행하면 bb에 값이 들어가질 않습니다.
물론 field bb에 일반 string "abcd..." 이 넣어져 있는 경우 문제가 없는데....
bb에 값이 "0x00 0x01 0x02 0x03 ..... 등등으로 들어 있는 경우 이상한 값이 넘어 옵니다.
아마 String으로 인식하면서 NULL 때문에 Data가 truncate되던지...
아님 다른 이유가 있는지 잘 모르겠습니다.
어떤 글을 보니깐 oracle varchar2의 경우 C++Builder에서 BLOB type으로 간주한다고해서..
TBlobField *BlobField = dynamic_cast<TBlobField *>(SQLDataSet1->Fields->Fields[1]);
을 해봐고 BlobField가 NULL로 return 되는 군요.
조언 부탁드립니다.
감사합니다.
|