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

MSSQL
SQL Server:SQL Server Maintenance Plan Wizard
SQL Server:SQL mai的配置和使用,你有所研究吗?
SQLServer:数据库的定时作业设置(经典)
SQL Server:小编浅谈SQL全文本检索方法
SQL Server:小编经验谈设计数据库表和字段
SQL Server:小编浅谈数据库完整性之约束
SQL Server:容易忽视的动态约束
SQL Server:时态数据库的时间间隔
SQL Server:浅谈数据库的安全性
SQL Server:不得不看的数据库设计技巧(看了终身受益)
SQL Server:数据库中的快照
SQL Server:数据库管理中关系代数的语法
SQL Server:关系代数中的语义
验证SQL保留字
精妙的SQL语句
SQL Server 数据库管理常用的SQL和T-SQL语句
SQL SERVER 与ACCESS、EXCEL的数据转换
SQL SERVER的数据类型
未公开的SQL Server口令的加密函数
SQl 语句(常见)

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 64 ::
收藏到网摘: 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;