Можно ли воспроизвести сжатие SQL на C#?C#

Место общения программистов C#
Ответить
Anonymous
 Можно ли воспроизвести сжатие SQL на C#?

Сообщение Anonymous »

Как я могу воспроизвести функцию сжатия, которую можно использовать в запросе на вставку SQL? Я знаю, что могу сделать следующее:

Код: Выделить всё

       INSERT INTO Player([Name],[Surname],[Info])
VALUES('John','Smith',COMPRESS(N'{"sport":"Tennis","age": 28,"rank":1,"points":15258, turn":17}'))
Но есть ли способ воспроизвести этот метод SQL Compress в C#, по существу сжимая код перед вставкой в ​​базу данных, а затем имея возможность распаковать его в запросе чтения SQL? Я попробовал несколько вариантов следующего кода:

Код: Выделить всё

    private readonly string _insertQuery =
@"INSERT INTO Player([Name],[Surname],[Info])
OUTPUT INSERTED.Id, inserted.Info
VALUES(?,?,?)";

public void CompressAndWriteToDB()
{
using OleDbConnection connection = new(_connectionString);

OleDbCommand cmd = new OleDbCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = _insertQuery;

cmd.Parameters.Add(new OleDbParameter("@name", "John"));
cmd.Parameters.Add(new OleDbParameter("@surname", "Smith"));

var uncompressedString = "{\"sport\":\"Basketball\",\"age\": 45,\"rank\":1,\"points\":15258, turn\":17}";
var bytes = Encoding.UTF8.GetBytes(uncompressedString);

using (var memoryStream = new MemoryStream())
{
using (var gzipStream = new GZipStream(memoryStream, CompressionLevel.Optimal))
{
gzipStream.Write(bytes, 0, bytes.Length);
}
var param = cmd.Parameters.Add("@info", SqlDbType.VarBinary);
param.Value = memoryStream.ToArray();
}

cmd.Connection = connection;

connection.Open();

cmd.ExecuteReader();
}
Но когда я пытаюсь распаковать эти данные в SSMS с помощью метода SQL Decompress, я получаю только странные символы:
Изображение


Подробнее здесь: https://stackoverflow.com/questions/791 ... press-in-c
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»