• 技术文章 >数据库 >mysql教程

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

    2016-06-07 17:57:12原创414

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

    怎样压缩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('filename.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;
    //将文件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));
    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;
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:SQL Server SQL Agent服务使用教程小结 下一篇:五种提高 SQL 性能的方法

    相关文章推荐

    • mysql怎样修改用户• 如何解决ubuntu mysql 乱码问题• mysql存储过程怎样变量赋值• centos中rpm怎样安装mysql• mysql怎样增加表格

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网