直接用TADOBlobStream而不用TMemoryStream 可不可以
- C/C++ code
void __fastcall TForm1::btn3Click(TObject *Sender)//读取文件{ if(!dlgSave1->Execute()) return; qry1->SQL->Text = "select * from mytable1 where id =1"; qry1->Open(); TBlobField * pField1=(TBlobField *)qry1->FieldByName("content"); if(!pField1->IsNull) { TADOBlobStream* pmem=new TADOBlobStream (pField1,bmRead); pmem->Seek(0,soFromBeginning); //TMemoryStream *Inifile = new TMemoryStream(); //Inifile->LoadFromStream(pmem); //Inifile->SaveToFile(dlgSave1->FileName); pmem->SaveToFile(dlgSave1->FileName); //直接用这个TADOBlobStream对象指针 //delete Inifile; delete pmem; } qry1->Close();}像上面这样,用ado从数据库读取出之前保存进去的文件,直接用TADOBlobStream而不用TMemoryStream 可不可以(就是注释掉那几句),反正我试了下是可以正常读取出来的。但是不知道有没有什么bug。大伙帮忙看看。
[解决办法]
楼主试试看
- C/C++ code
void __fastcall TForm1::btn3Click(TObject *Sender)//读取文件{ if(!dlgSave1->Execute()) return; qry1->SQL->Text = "select * from mytable1 where id =1"; qry1->Open(); TBlobField * pField1=(TBlobField *)qry1->FieldByName("content"); if(pField1->BlobSize > 0) pField1->SaveToFile(dlgSave1->FileName); //直接用这个TBlobField 对象指针 qry1->Close();}
[解决办法]
完全可以.