zoukankan      html  css  js  c++  java
  • 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 };
  • 相关阅读:
    Python初学笔记
    linux学习笔记一----------文件相关操作
    Linux目录结构及常用命令(转载)
    最简单冒泡事件及阻止冒泡事件
    IDEA 从SVN检出项目相关配置
    拦截器实现原理
    CUDA基本概念
    1.2CPU和GPU的设计区别
    RAM和DDR
    Myriad2 简介
  • 原文地址:https://www.cnblogs.com/djcsch2001/p/2805930.html
Copyright © 2011-2022 走看看