// Semantics for SetBytes are to modify existing value, not overwrite
 //  Use in combination with SetLength to ensure overwriting when necessary
 // valid for SqlDbTypes: Binary, VarBinary, Image, Udt, Xml
 //      (VarBinary assumed for variants)
 public override int SetBytes(SmiEventSink sink, int ordinal, long fieldOffset, byte[] buffer, int bufferOffset, int length)
 {
     CheckWritingToColumn(ordinal);
     return(_fieldSetters[ordinal].SetBytes(fieldOffset, buffer, bufferOffset, length));
 }
 // Set value to null
 //  valid for all types
 public override void SetDBNull(SmiEventSink sink, int ordinal)
 {
     CheckSettingColumn(ordinal);
     _fieldSetters[ordinal].SetDBNull();
 }
 //  valid for SqlDbType.TinyInt
 public override void SetByte(SmiEventSink sink, int ordinal, byte value)
 {
     CheckSettingColumn(ordinal);
     _fieldSetters[ordinal].SetByte(value);
 }
 // valid for DateTimeOffset
 public override void SetDateTimeOffset(SmiEventSink sink, int ordinal, DateTimeOffset value)
 {
     CheckSettingColumn(ordinal);
     _fieldSetters[ordinal].SetDateTimeOffset(value);
 }
 // valid for SqlDbType.Variant
 public override void SetVariantMetaData(SmiEventSink sink, int ordinal, SmiMetaData metaData)
 {
     CheckWritingToColumn(ordinal);
     _fieldSetters[ordinal].SetVariantType(metaData);
 }
 // valid for SqlDbType.Numeric (uses SqlDecimal since Decimal cannot hold full range)
 public override void SetSqlDecimal(SmiEventSink sink, int ordinal, SqlDecimal value)
 {
     CheckSettingColumn(ordinal);
     _fieldSetters[ordinal].SetSqlDecimal(value);
 }
 // valid for SqlDbType.Time
 public override void SetTimeSpan(SmiEventSink sink, int ordinal, TimeSpan value)
 {
     CheckSettingColumn(ordinal);
     _fieldSetters[ordinal].SetTimeSpan(value);
 }
 // valid for character types: Char, VarChar, Text, NChar, NVarChar, NText
 public override void SetString(SmiEventSink sink, int ordinal, string value, int offset, int length)
 {
     CheckSettingColumn(ordinal);
     _fieldSetters[ordinal].SetString(value, offset, length);
 }
 // valid for SqlDbType.BigInt, SqlDbType.Money, SqlDbType.SmallMoney
 public override void SetInt64(SmiEventSink sink, int ordinal, long value)
 {
     CheckSettingColumn(ordinal);
     _fieldSetters[ordinal].SetInt64(value);
 }
 public override void SetCharsLength(SmiEventSink sink, int ordinal, long length)
 {
     CheckSettingColumn(ordinal);
     _fieldSetters[ordinal].SetCharsLength(length);
 }
Beispiel #11
0
        // Set value to null
        //  valid for all types
        public override void SetDBNull(SmiEventSink sink, int ordinal)
        {
            Debug.Assert(0 == ordinal, "TdsParameterSetter only supports 0 for ordinal.  Actual = " + ordinal);

            _target.EndElements(sink);
        }
Beispiel #12
0
 // valid for structured types
 //  This method called for both get and set.
 internal override SmiTypedGetterSetter GetTypedGetterSetter(SmiEventSink sink, int ordinal)
 {
     Debug.Assert(0 == ordinal, "TdsParameterSetter only supports 0 for ordinal.  Actual = " + ordinal);
     return(_target);
 }
Beispiel #13
0
        // Close method does nothing (value is sent to TDS), but we need to override to avoid throwing
        //  Also make sure protocol is followed (no calling setters after calling close).
        public override void Close(SmiEventSink eventSink)
        {
#if DEBUG
            _currentField = Closed;
#endif
        }
Beispiel #14
0
 // Get utility class valid in current thread execution environment
 //    This returns an object, to allow us to version the context without
 //    having to version this class.  (eg. SmiContext1 vs SmiContext2)
 internal abstract object GetCurrentContext(SmiEventSink eventSink);