使用CLR函式壓縮(Gzip)ntext型別欄位
Gzip to String
String to Gzip
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壓縮類進行流壓縮
/**/
///
/// 壓縮資料
///
///
///
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
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/66009/viewspace-1059288/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Apache 開啟gzip壓縮Apache
- 前端效能優化gzip初探(補充gzip壓縮使用演算法brotli壓縮的相關介紹)前端優化演算法
- nginx指定埠開啟gzip壓縮Nginx
- Vue開啟gzip壓縮檔案Vue
- Apache開啟GZIP壓縮功能方法Apache
- vue-cli3.0配置GZIP壓縮Vue
- 高效能 gzip 壓縮工具 pgzip
- MongoDB更改欄位型別MongoDB型別
- JSON欄位型別在ORM中的使用JSON型別ORM
- 如何透過ZBlogPHP啟用Gzip壓縮?PHP
- 關gzip壓縮,我有新發現
- sql語句修改欄位型別和增加欄位SQL型別
- ES Mapping ,1 欄位型別APP型別
- MySQL欄位型別最全解析MySql型別
- Apache開啟gzip壓縮提高網站速度Apache網站
- nginx快取配置及開啟gzip壓縮Nginx快取
- MybatisPlus經典示例:使用Wrapper查詢指定欄位並新增欄位函式處理MyBatisAPP函式
- 【mongo】mongo 欄位型別互轉Go型別
- MySQL欄位新增註釋,但不改變欄位的型別MySql型別
- 伺服器端如何開啟GZIP壓縮功能伺服器
- 探索HTTP傳輸中gzip壓縮的祕密HTTP
- 解析ws訂閱返回的GZIP 壓縮資料
- VuePress 部落格優化之開啟 Gzip 壓縮Vue優化
- [提問交流]建立模型,新增屬性,欄位型別如何設定2位小數的欄位型別模型型別
- 《NET CLR via C#》---第七章(常量,讀/寫欄位,可讀欄位)C#
- TypeScript 函式型別TypeScript函式型別
- pandas dataframe 時間欄位 diff 函式函式
- 簡單聊聊 GZIP 的壓縮原理與日常應用
- vue-cli 啟動gzip壓縮,及後臺配置Vue
- mysql表操作(alter)/mysql欄位型別MySql型別
- Oracle 修改欄位型別和長度Oracle型別
- .Net7 CLR的呼叫函式和編譯函式函式編譯
- python使用魔法函式建立可切片型別Python函式型別
- MySQL - 分組連線欄位函式GROUP_CONCAT的使用MySql函式
- MySQL中TEXT與BLOB欄位型別的區別MySql型別
- Nginx開啟gzip壓縮大幅提高頁面載入速度Nginx
- c語言,批次處理檔案,進行gzip壓縮C語言
- Python 序列型別以及函式引數型別Python型別函式
- 儲存過程、觸發器、遊標、檢視、自定義函式 欄位型別、欄位可空、統計欄位、邏輯刪除 許可權系統資料庫&無限極類別設計儲存過程觸發器函式型別資料庫