当前位置:  编程技术>.net/c#/asp.net

c#中CLR函数压缩(Gzip)ntext类型字段的实现代码

    来源: 互联网  发布时间:2014-08-30

    本文导语:  代码如下:   代码示例: using System; using System.Data; using System.Data.SqlClient; using System.Data.SqlTypes; using Microsoft.SqlServer.Server; using System.IO; using System.IO.Compression; using System.Text; public partial class Gzip { [Microsoft.SqlServer.Server.SqlFunction...

代码如下:
 

代码示例:

using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;

using System.IO;
using System.IO.Compression;
using System.Text;

public partial class Gzip
{

[Microsoft.SqlServer.Server.SqlFunction]
public static SqlChars GzipToString(SqlBytes gBytes)
{
byte[] bytes = gBytes.Value;
bytes = Decompress(bytes);
string str = Encoding.GetEncoding(936).GetString(bytes);
SqlChars sqlchars = new SqlChars(str);
return (sqlchars);
}

[Microsoft.SqlServer.Server.SqlFunction]
public static SqlBytes StringToGzip(SqlChars chars)
{
byte[] bytes = Encoding.GetEncoding(936).GetBytes(chars.Buffer);
bytes = Compress(bytes);
SqlBytes gBytes = new SqlBytes(bytes);

return (gBytes);
}

#region 采用.net系统自带Gzip压缩类进行流压缩
/**/
///
/// 压缩数据
///
///
/// www.
public static byte[] Compress(byte[] data)
{
byte[] bData;
MemoryStream ms = new MemoryStream();
GZipStream stream = new GZipStream(ms, CompressionMode.Compress, true);
stream.Write(data, 0, data.Length);
stream.Close();
stream.Dispose();
//必须把stream流关闭才能返回ms流数据,不然数据会不完整
//并且解压缩方法stream.Read(buffer, 0, buffer.Length)时会返回0
bData = ms.ToArray();
ms.Close();
ms.Dispose();
return bData;
}

/**/
///
/// 解压数据
///
///
///
public static byte[] Decompress(byte[] data)
{
byte[] bData;
MemoryStream ms = new MemoryStream();
ms.Write(data, 0, data.Length);
ms.Position = 0;
GZipStream stream = new GZipStream(ms, CompressionMode.Decompress, true);
byte[] buffer = new byte[1024];
MemoryStream temp = new MemoryStream();
int read = stream.Read(buffer, 0, buffer.Length);
while (read > 0)
{
temp.Write(buffer, 0, read);
read = stream.Read(buffer, 0, buffer.Length);
}
//必须把stream流关闭才能返回ms流数据,不然数据会不完整
stream.Close();
stream.Dispose();
ms.Close();
ms.Dispose();
bData = temp.ToArray();
temp.Close();
temp.Dispose();
return bData;
}
#endregion
}


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间java.awt.color类colorspace的类成员方法: type_8clr定义及介绍
  • 求助:各位大哥为什么会出现这样的错误啊(ioctl: LOOP_CLR_FD: 设备或资源忙)谢谢!
  • java命名空间java.awt.color类colorspace的类成员方法: type_2clr定义及介绍
  • sql2005中创建CLR存储过程的方法详解
  • java命名空间java.awt.color类colorspace的类成员方法: type_7clr定义及介绍
  • 在SQL Server 2005中创建CLR存储过程的详细介绍
  • java命名空间java.awt.color类colorspace的类成员方法: type_4clr定义及介绍
  • java命名空间java.awt.color类colorspace的类成员方法: type_5clr定义及介绍
  • java命名空间java.awt.color类colorspace的类成员方法: type_3clr定义及介绍
  • java命名空间java.awt.color类colorspace的类成员方法: type_6clr定义及介绍
  • java命名空间java.awt.color类colorspace的类成员方法: type_9clr定义及介绍
  • java命名空间java.awt.color类icc_profile的类成员方法: icsigspace3clr定义及介绍
  • java命名空间java.awt.color类icc_profile的类成员方法: icsigspace4clr定义及介绍
  • java命名空间java.awt.color类icc_profile的类成员方法: icsigspace5clr定义及介绍
  • java命名空间java.awt.color类icc_profile的类成员方法: icsigspace6clr定义及介绍
  • java命名空间java.awt.color类icc_profile的类成员方法: icsigspace7clr定义及介绍
  • java命名空间java.awt.color类icc_profile的类成员方法: icsigspace8clr定义及介绍
  • java命名空间java.awt.color类icc_profile的类成员方法: icsigspace9clr定义及介绍
  • java命名空间java.awt.color类icc_profile的类成员方法: icsigspace2clr定义及介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3