byte[] в bytea. PostgreSQL
возникла следующая проблем. Есть байт массив, который храниться в PostgreSQL в ячейке формата bytea. Байт массив получается парсингом DataRow:
private byte[] ParseRow(DataRow row)
{
return bytes = (byte[])row["Node"],
}
При получение из БД все хорошо, с байт массивом можно работать, изменять, но при составление запроса
var sqlCommand = $"UPDATE {TableName} SET " +
$"\"CodeTable\"='{bytes}' " +
$"WHERE \"ID\"='{item.Id}'"
Но в итоге получается в запросе получается
UPDATE "TableName" SET "Node"='System.Byte[]' WHERE "ID"='0024791d-b830-4594-bfad-9c34f6c81292'
Данные заносятся без ошибок (но не те). Перепробовал через Encoding.Default.GetString() преобразовывать, но в таком случае возникает ошибка. Используется Npgsql, .net7, postgreSQL 8.4
Ответы (1 шт):
Автор решения: Ke1ev.Ruiner
→ Ссылка
вопрос был решен через параметризацию. Примерный код:
var comm = new NpgsqlCommand(sqlCommand, Connection.conn);
NpgsqlParameter parameter = new NpgsqlParameter("@Node", NpgsqlDbType.Bytea);
parameter.Value = bytes;
comm.Parameters.Add(parameter);