当前位置: 首页 > 图文教程 > 数据库 > MSSQL > 在程序中压缩sql server2000的数据库备份文件的代码

MSSQL
SQL Server中选出指定范围行的SQL语句写法
Microsoft SQL Server 2000安装问题集锦
修改SQL Server 2005 sa用户密码的方法
SQL Server数据库查询优化的常用方法总结
两种与SQL Server数据库交换数据的方法
Sun正式发布MySQL 5.1版 简化数据库应用
使用SQL Server 2008中对象相关性
SQL注入防御:用三种策略应对SQL注入攻击
SQL Server 2005 SP3正式版
MySQL数据库中使用GRANT语句增添新用户
讲解数据库加密技术的功能特性与实现方法
如何在SQL Server数据库中加密数据
30步检查SQL Server安全列表
在SQL Server数据库开发中的十大问题
向外扩展SQL Server 实现更高扩展性
SQL Server 2005 五个动态管理对象
从算法入手讲解SQL Server的典型示例
如何解决SQLServer占内存过多的问题
SQL指令植入式攻击的危害及其防范措施
SQL游标原理和使用方法

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 160 ::
收藏到网摘: n/a

怎样压缩sql server2000的数据库备份文件,像rar一样?小弟有一7m的sql server2000
数据库备份文件,在程序中怎样压缩啊?
复制代码 代码如下:

procedure TForm1.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 := 'a e:\qwqw.rar e:\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('a e:\zqzq.rar e:\zqzq'),'',SW_show);
ShowMessage('压缩完毕!'); }

这是一段压缩图片的代码,压缩文件原理相同,只需稍做改动即可。
复制代码 代码如下:

var
mss: TMemoryStream;
zip: TDeCompressionStream;
zip1: TCompressionStream;
fs : TFileStream;
fBuf: Array[0..16383] of Byte;
flen: Integer;
//从数据库中取出图片
//...写出SQL语句以取得有图片的记录,此处从略
mss := TMemoryStream.Create;
fs := TFileStream.Create('/upload/tech/2009/20090913073151_24681928425f5a9133504de568f5f6df.jpg',fmCreate or fmOpenWrite);
try
TBlobField(Que.FieldByName('pic')).SaveToStream(mss);
zip := TDeCompressionStream.Create(fs);
try
flen := zip.Read(fbuf, SizeOf(fBuf));
while flen > 0 do begin
fs.Write(fbuf, flen);
flen := zip.Read(fbuf, SizeOf(fBuf));
end;
finally
FreeAndNil(zip);
end;
finally
mss.Free;
fs.Free;
end;
//将文件/upload/tech/2009/20090913073151_24681928425f5a9133504de568f5f6df.jpg中的图片保存到数据库
//...写出SQL语句,打开Que,并定位到要保存图片的记录,此处从略
fs := TFileStream.Create('/upload/tech/2009/20090913073151_24681928425f5a9133504de568f5f6df.jpg',fmOpenRead);
mss := TMemoryStream.Create;
try
zip1 := TCompressionStream.Create(clDefault,mss);
try
flen := fs.Read(fbuf, SizeOf(fBuf));
while flen > 0 do begin
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;