zzbinfo ..求解...刚才一贴已结.
以下是我将文件写入数据库的完整代码...用的是oracle数据库.
- C/C++ code
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; }
qryTmp 在窗体show事件中已经打开..所以我这里直接append.
执行过程中..提示:qryTmp:Parameter 'cpt' not found;
我的report表结构如下:
- SQL code
create table report( cptname varchar2(200) not null, cpt blob, name varchar2(200), constraint pk_report primary key (cptname) )
百度无果...所以还是前来请教...
[解决办法]
cpt是一个Field吧,又不是参数,写成Parameters肯定找不见撒。
提交的部分改成:
- C/C++ code
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"不是参数吧??