怎样压缩sqlserver2000的数据库备份文件,像rar一样?小弟有一7m的sqlserver2000 数据库备份文件,在程序中怎样压缩啊? <div class="codetitle"><a style="CURSOR: pointer" data="64396" class="copybut" id="copybut64396" onclick="doCopy('code64396')"> 代码如下:<div class="codebody" id="code64396"> procedureTForm1.Button2Click(Sender:TObject); var SHExecInfo:SHELLEXECUTEINFO; begin SHExecInfo.cbSize:=sizeof(SHELLEXECUTEINFO); SHExecInfo.fMask:=SEE_MASK_NOCLOSEPROCESS; SHExecInfo.Wnd:=Handle; SHExecInfo.lpVerb:=nil; SHExecInfo.lpFile:='WinRAR.exe'; SHExecInfo.lpParameters:='ae:qwqw.rare:qwqw'; SHExecInfo.lpDirectory:=nil; SHExecInfo.nShow:=SW_SHOW; SHExecInfo.hInstApp:=Handle; ShellExecuteEx(@SHExecInfo); WaitForSingleObject(SHExecInfo.hProcess,INFINITE); CloseHandle(SHExecInfo.hProcess); ShellExecute(application.MainForm.Handle,'open','winrar.exe',PChar('ae:zqzq.rare:zqzq'),'',SW_show); ShowMessage('压缩完毕!');}
这是一段压缩图片的代码,压缩文件原理相同,只需稍做改动即可。 <div class="codetitle"><a style="CURSOR: pointer" data="56110" class="copybut" id="copybut56110" onclick="doCopy('code56110')"> 代码如下:<div class="codebody" id="code56110"> var mss:TMemoryStream; zip:TDeCompressionStream; zip1:TCompressionStream; fs:TFileStream; fBuf:Array[0..16383]ofByte; flen:Integer; //从数据库中取出图片 //...写出SQL语句以取得有图片的记录,此处从略 mss:=TMemoryStream.Create; fs:=TFileStream.Create('filename.jpg',fmCreateorfmOpenWrite); try TBlobField(Que.FieldByName('pic')).SaveToStream(mss); zip:=TDeCompressionStream.Create(fs); try flen:=zip.Read(fbuf,SizeOf(fBuf)); whileflen>0dobegin fs.Write(fbuf,flen); flen:=zip.Read(fbuf,SizeOf(fBuf)); end; finally FreeAndNil(zip); end; finally mss.Free; fs.Free; end; //将文件filename.jpg中的图片保存到数据库 //...写出SQL语句,打开Que,并定位到要保存图片的记录,此处从略 fs:=TFileStream.Create('filename.jpg',fmOpenRead); mss:=TMemoryStream.Create; try zip1:=TCompressionStream.Create(clDefault,mss); try flen:=fs.Read(fbuf,SizeOf(fBuf)); whileflen>0dobegin zip1.Write(fbuf,flen); flen:=fs.Read(fbuf,SizeOf(fBuf)); end; //保存到数据库 TBlobField(Que.FieldByName('pic')).LoadFromStream(mss); Que.UpdateBatch(); //... finally zip1.Free; end; finally fs.Free; mss.Free; end;
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|