在程序中压缩sql server2000的数据库备份文件的代码

时间:2021-05-23

怎样压缩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;

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章