首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

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

2013-01-07 
直接用TADOBlobStream而不用TMemoryStream 可不可以void __fastcall TForm1::btn3Click(TObject *Sender)/

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

[解决办法]
完全可以.

热点排行