Mallard
Search Results for

    Show / Hide Table of Contents

    Interface ISettableDuckDbValue

    Accepts a value from .NET code to pass into DuckDB.

    Namespace: Mallard
    Assembly: Mallard.dll
    Syntax
    public interface ISettableDuckDbValue
    Remarks

    There are a several kinds of objects in DuckDB that take in values that may be of any of the types supported in its SQL dialect, including but not limited to numbers, dates/times, strings, and blobs. Ultimately there need to be conversions from .NET values to their native representations under DuckDB.

    (These "input" conversions are in the opposite direction of the "output" conversions that happen when retrieving values/results from DuckDB.)

    To make the supported input types easy to discover, for each supported type, an extension method to set values of that type is defined in DuckDbValue. Thus, the static type is visible statically, instead of being erased as object, or hidden behind a unconstrained generic parameter (although such methods are also available for the benefit of generic code). This way, the compiler may also apply implicit conversions for the input types.

    The receiver object implements this interface, which has no public methods. All the value-setting operations are implemented in DuckDbValue. This simplifies the implementation, makes the basic API stable, and at the same time, allows users to define their own conversions for other input types on almost the same footing.

    Extension Methods

    DuckDbValue.SetBitString<TReceiver>(TReceiver, ReadOnlySpan<byte>, int)
    DuckDbValue.SetBlob<TReceiver>(TReceiver, ReadOnlySpan<byte>)
    DuckDbValue.SetGeneric<TReceiver, TInput>(TReceiver, TInput)
    DuckDbValue.SetNull<TReceiver>(TReceiver)
    DuckDbValue.SetObject<TReceiver>(TReceiver, object?)
    DuckDbValue.SetStringUtf16<TReceiver>(TReceiver, ReadOnlySpan<char>)
    DuckDbValue.SetStringUtf8<TReceiver>(TReceiver, ReadOnlySpan<byte>)
    DuckDbValue.Set<TReceiver>(TReceiver, DuckDbDate)
    DuckDbValue.Set<TReceiver>(TReceiver, DuckDbDecimal)
    DuckDbValue.Set<TReceiver>(TReceiver, DuckDbInterval)
    DuckDbValue.Set<TReceiver>(TReceiver, DuckDbTimestamp)
    DuckDbValue.Set<TReceiver>(TReceiver, bool)
    DuckDbValue.Set<TReceiver>(TReceiver, byte)
    DuckDbValue.Set<TReceiver>(TReceiver, BitArray)
    DuckDbValue.Set<TReceiver>(TReceiver, double)
    DuckDbValue.Set<TReceiver>(TReceiver, Int128)
    DuckDbValue.Set<TReceiver>(TReceiver, short)
    DuckDbValue.Set<TReceiver>(TReceiver, int)
    DuckDbValue.Set<TReceiver>(TReceiver, long)
    DuckDbValue.Set<TReceiver>(TReceiver, BigInteger)
    DuckDbValue.Set<TReceiver>(TReceiver, sbyte)
    DuckDbValue.Set<TReceiver>(TReceiver, float)
    DuckDbValue.Set<TReceiver>(TReceiver, string)
    DuckDbValue.Set<TReceiver>(TReceiver, UInt128)
    DuckDbValue.Set<TReceiver>(TReceiver, ushort)
    DuckDbValue.Set<TReceiver>(TReceiver, uint)
    DuckDbValue.Set<TReceiver>(TReceiver, ulong)
    DuckDbValue.TrySetGeneric<TReceiver, TInput>(TReceiver, TInput)
    DuckDbValue.TrySetObject<TReceiver>(TReceiver, object?)
    • Edit this page
    • View Source
    In this article
    Back to top Generated by DocFX