有没有办法在.NET中将Stream作为SQL参数传递,以将查询插入到Postgres的bytea/jsonb列中?由于我已经有了Stream,而这些列类型是二进制类型,所以我正在尝试将其传递给查询,而不是读取它并将其传递给byte[]/string。
就像在SQL Server的此示例或使用Java的JDBC驱动程序的此示例中一样。
我尝试过类似以下的东西:
就像在SQL Server的此示例或使用Java的JDBC驱动程序的此示例中一样。
我尝试过类似以下的东西:
public static async Task Insert(NpgsqlConnection connection, Guid id, Stream payload)
{
string commandText = $"INSERT INTO some_table (id, payload, occurred_on) " +
$"VALUES (@id, @payload, @occurred_on)";
await using var cmd = new NpgsqlCommand(commandText, connection);
cmd.Parameters.AddWithValue("id", id);
cmd.Parameters.AddWithValue("payload", payload);
cmd.Parameters.AddWithValue("occurred_on", DateTime.Now);
await cmd.ExecuteNonQueryAsync();
}
但它抛出了一个异常:
System.InvalidCastException: '无法使用ByteaHandler处理器写入CLR类型System.IO.MemoryStream'
我发现这里有一个https://www.npgsql.org/doc/copy.html#raw-binary-copy,但我想插入一行多列数据,其中一个作为流传递,如果我没记错的话,用这个方法是不可能的。