C# 压缩2M字符串存入mysql
时间: 2023-07-24 07:11:19 浏览: 181
在C#中,可以使用`System.IO.Compression`命名空间中的`GZipStream`类将字符串进行Gzip压缩,然后将压缩后的数据存入MySQL数据库中。以下是一个简单的示例代码:
```csharp
using System;
using System.IO;
using System.IO.Compression;
using MySql.Data.MySqlClient;
class Program
{
static void Main(string[] args)
{
string inputString = new string('a', 2_000_000); // 生成一个长度为2M的字符串
// 压缩字符串
byte[] inputBytes = System.Text.Encoding.UTF8.GetBytes(inputString);
byte[] compressedBytes;
using (var outputStream = new MemoryStream())
{
using (var gzipStream = new GZipStream(outputStream, CompressionMode.Compress))
{
gzipStream.Write(inputBytes, 0, inputBytes.Length);
}
compressedBytes = outputStream.ToArray();
Console.WriteLine($"压缩后大小:{compressedBytes.Length}"); // 输出压缩后的大小
}
// 存入MySQL数据库
string connectionString = "server=localhost;user=root;password=123456;database=test;";
using (var connection = new MySqlConnection(connectionString))
{
connection.Open();
var command = connection.CreateCommand();
command.CommandText = "INSERT INTO `data` (`id`, `data`) VALUES (@id, @data)";
command.Parameters.AddWithValue("@id", 1);
command.Parameters.AddWithValue("@data", compressedBytes);
command.ExecuteNonQuery();
}
}
}
```
在上面的代码中,我们首先生成一个长度为2M的字符串,然后使用`GZipStream`类进行压缩。在压缩时,我们创建一个输出流`outputStream`,然后将其传递给`GZipStream`类的构造函数。在调用`Write`方法时,`GZipStream`类将压缩数据写入输出流中。最后,我们将输出流转换为字节数组,并将其存储在`compressedBytes`变量中。
接下来,我们使用`MySqlConnection`类连接MySQL数据库,并将压缩后的数据存入`data`表中的`data`字段中。在存储时,我们使用参数化查询并将`compressedBytes`变量传递给参数`@data`。
值得注意的是,MySQL中的`BLOB`类型支持存储二进制数据,因此我们可以将压缩后的字节数组直接存入数据库中。在读取数据时,我们可以将其转换为字节数组,然后使用`GZipStream`类进行解压缩。
阅读全文