读书人

直接用TADOBlobStream而不要TMemorySt

发布时间: 2013-01-07 10:02:24 作者: rapoo

直接用TADOBlobStream而不用TMemoryStream 可不可以

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。大伙帮忙看看。
[解决办法]
楼主试试看


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();
}

[解决办法]
完全可以.

读书人网 >C++ Builder

热点推荐