TdsParameterSetter.cs 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. //------------------------------------------------------------------------------
  2. // <copyright file="TdsParameterSetter.cs" company="Microsoft">
  3. // Copyright (c) Microsoft Corporation. All rights reserved.
  4. // </copyright>
  5. // <owner current="true" primary="true">[....]</owner>
  6. // <owner current="true" primary="false">[....]</owner>
  7. // <owner current="true" primary="false">[....]</owner>
  8. //------------------------------------------------------------------------------
  9. namespace System.Data.SqlClient {
  10. using System;
  11. using System.Data;
  12. using System.Data.SqlTypes;
  13. using System.Diagnostics;
  14. using Microsoft.SqlServer.Server;
  15. // Simple Getter/Setter for structured parameters to allow using common ValueUtilsSmi code.
  16. // This is a stand-in to having a true SmiRequestExecutor class for TDS.
  17. internal class TdsParameterSetter : SmiTypedGetterSetter {
  18. #region Private fields
  19. private TdsRecordBufferSetter _target;
  20. #endregion
  21. #region ctor & control
  22. internal TdsParameterSetter(TdsParserStateObject stateObj, SmiMetaData md) {
  23. _target = new TdsRecordBufferSetter(stateObj, md);
  24. }
  25. #endregion
  26. #region TypedGetterSetter overrides
  27. // Are calls to Get methods allowed?
  28. internal override bool CanGet {
  29. get {
  30. return false;
  31. }
  32. }
  33. // Are calls to Set methods allowed?
  34. internal override bool CanSet {
  35. get {
  36. return true;
  37. }
  38. }
  39. // valid for structured types
  40. // This method called for both get and set.
  41. internal override SmiTypedGetterSetter GetTypedGetterSetter(SmiEventSink sink, int ordinal) {
  42. Debug.Assert(0==ordinal, "TdsParameterSetter only supports 0 for ordinal. Actual = " + ordinal);
  43. return _target;
  44. }
  45. // Set value to null
  46. // valid for all types
  47. public override void SetDBNull(SmiEventSink sink, int ordinal) {
  48. Debug.Assert(0==ordinal, "TdsParameterSetter only supports 0 for ordinal. Actual = " + ordinal);
  49. _target.EndElements(sink);
  50. }
  51. #endregion
  52. }
  53. }