zzbinfo ..求解...刚才一贴已结.
以下是我将文件写入数据库的完整代码...用的是oracle数据库.
AnsiString sExepath = ExtractFileDir(Application->ExeName) + "\\Report" ; WIN32_FIND_DATA FindData; TMemoryStream *Inifile = new TMemoryStream(); memset(&FindData,0,sizeof(FindData)); AnsiString SearcePath = sExepath + "\\"; HANDLE hFind = FindFirstFile((SearcePath + "*.cpt").c_str(),&FindData); bool bFindNext=false; if(hFind!=INVALID_HANDLE_VALUE) bFindNext = true; try { while(bFindNext) { AnsiString Txtname = FindData.cFileName; Inifile->LoadFromFile(SearcePath + Txtname); qryTmp->Append(); // TBlobField *qryBlob = (TBlobField *)qryTmp->FieldByName("cpt"); qryTmp->FieldByName("cptname")->AsString = Txtname; qryTmp->Parameters->ParamByName("cpt")->LoadFromStream(Inifile,ftBlob); qryTmp->Post(); bFindNext = FindNextFile(hFind,&FindData); } } __finally { FindClose(hFind); delete Inifile; }
create table report( cptname varchar2(200) not null, cpt blob, name varchar2(200), constraint pk_report primary key (cptname) )
qryTmp->Append();qryTmp->FieldByName("cptname")->AsString = Txtname;TBlobField *pField = (TBlobField *)qryTmp->FieldByName("cpt");TADOBlobStream *pMem = new TADOBlobStream(pField, bmWrite);pMem->Seek(0, soFromBeginning);Inifile->SaveToStream(pMem);delete pMem;qryTmp->Post();
[解决办法]
象妖哥那样试试,你得"cpt"不是参数吧??