• SQL SERVER 2008中用C#定义压缩与解压缩函数


    下面用C#2010定义一个函数,供SQL SERVER 2008使用:

    下面是压缩函数

     1 using System.Data.SqlClient;
     2 using System.Data.SqlTypes;
     3 using Microsoft.SqlServer.Server;
     4 using System.Collections;
     5 
     6 public partial class UserDefinedFunctions
     7 {
     8     [Microsoft.SqlServer.Server.SqlFunction(
     9         DataAccess=DataAccessKind.Read,
    10         FillRowMethodName="GetNextDepartment",
    11         TableDefinition="Name nvarchar(50),GroupName nvarchar(50)")]
    12     public static IEnumerable GetDepartments()
    13     {
    14         // 在此处放置代码
    15         using (SqlConnection conn = new SqlConnection("context connection=true"))
    16         {
    17             string sql = "Select Name,GroupName From HumanResources.Department";
    18             conn.Open();
    19             SqlCommand comm = new SqlCommand(sql, conn);
    20             SqlDataAdapter adaptor = new SqlDataAdapter(comm);
    21             DataSet dSet = new DataSet();
    22             adaptor.Fill(dSet);
    23             return (dSet.Tables[0].Rows);
    24         }
    25     }
    26 
    27     public static void GetNextDepartment(object row,
    28         out string name,
    29         out string groupName)
    30     {
    31         DataRow theRow = (DataRow)row;
    32         name=(string)theRow["Name"];
    33         groupName=(string)theRow["GroupName"];
    34     }
    35 };


    解压函数:

     1 using System;
     2 using System.Data;
     3 using System.Data.SqlClient;
     4 using System.Data.SqlTypes;
     5 using System.IO;
     6 using System.IO.Compression;
     7 using Microsoft.SqlServer.Server;
     8 
     9 public partial class UserDefinedFunctions
    10 {
    11     [Microsoft.SqlServer.Server.SqlFunction]
    12     public static SqlBytes BinaryDecompress(SqlBytes inputBinary)
    13     {
    14         // 在此处放置代码
    15         byte[] inputBytes = (byte[])inputBinary.Value;
    16 
    17         using (MemoryStream memStreamIn = new MemoryStream(inputBytes))
    18         {
    19             using (GZipStream s = new GZipStream(memStreamIn, CompressionMode.Decompress))
    20             {
    21                 using (MemoryStream memStreamOut = new MemoryStream())
    22                 {
    23                     for (int num = s.ReadByte(); num != -1; num = s.ReadByte())
    24                     {
    25                         memStreamOut.WriteByte((byte)num);
    26                     }
    27                     return (new SqlBytes(memStreamOut.ToArray()));
    28                 }
    29             }
    30         }
    31     }
    32 };
  • 相关阅读:
    AVR开发 Arduino方法(六) 内存子系统
    AVR开发 Arduino方法(五) 模数转换子系统
    AVR开发 Arduino方法(四) 串行通信子系统
    AVR开发 Arduino方法(三) 定时/计数器子系统
    AVR开发 Arduino方法(二) 中断子系统
    2014.5.17—所谓生活,就是让自己变得更好
    2014.5.10—做事分清时间地点
    2014.5.7—社交网络用户心理分析
    2014.5.7—20岁这几年
    2014.5.5—反向绑定域名,无需工信部备案
  • 原文地址:https://www.cnblogs.com/djcsch2001/p/2805930.html
Copyright © 2020-2023  润新知