|
용량이 큰 데이터 (3M이상) 를 데이터베이스에 입출력하는 방법에 대해 알고싶습니다.
데이터베이스는 MySQL을 사용하고 ODBC를 이용하여 DB핸들링합니다.
제가 작성한 프로그램은 다음과 같습니다.
bool __fastcall TData::InsertDataTbl(AnsiString table_name, int no, TMemoryStream *stream)
{
bool ret;
TBlobStream* pbStream;
if(Database1->Connected == false) return false;
TTable *table = new TTable(Application);
try{
table->Active = false;
table->DatabaseName = Database1->DatabaseName;
table->TableName = table_name;
table->Open();
table->Append();
table->FieldByName("no")->AsInteger = no;
pbStream = (TBlobStream*)table->CreateBlobStream(table->FieldByName("data"), bmWrite);
stream->SaveToStream(pbStream);
table->Post();
table->Close();
ret = true;
}
catch(const Exception& e){
MakeLog("SQL Error - Insert Data Table("+table_name+")");
ret = false;
}
delete table;
return ret;
}
여기서 저장하는 데이터가 커지면 "Invalid Blob Length" 라는 에러가 발생합니다.
BDE 환경설정에서 BLOB SIZE를 변경하지 않고 해결할 수 있는 방법이 있는지....궁금합니다..
|