怎样压缩sqlserver2000的数据库备份文件,像rar一样?小弟有一7m的sqlserver2000
数据库备份文件,在程序中怎样压缩啊?
复制代码 代码如下:
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('压缩完毕!');}
这是一段压缩图片的代码,压缩文件原理相同,只需稍做改动即可。
复制代码 代码如下:
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;