using System.Data; using System.Data.SqlClient; using SDA.DataProvider.Core; namespace SDA.DataProvider.MSSQLWrappers { class MSSQLCommandParameterCollectionWrapper : SDACommandParameterCollectionWrapper { internal SqlParameterCollection Parameters { get { return Command.Parameters; } } public override bool Contains(SDACommandParameterWrapper parameter) { return Parameters.Contains("@" + parameter.ParameterName); } public override int IndexOf(SDACommandParameterWrapper parameter) { return Parameters.IndexOf("@" + parameter.ParameterName); } internal SqlCommand Command; internal MSSQLCommandParameterCollectionWrapper(SqlCommand command) { Command = command; } public override SDACommandParameterWrapper this[string parameterName] { get { if (!Parameters.Contains("@" + parameterName)) { return null; } SqlParameter parameter = Parameters["@" + parameterName]; return new MSSQLCommandParameterWrapper(parameter); } set { Parameters["@" + parameterName] = ((MSSQLCommandParameterWrapper)value).Parameter; } } public override SDACommandParameterWrapper this[int index] { get { return new MSSQLCommandParameterWrapper(Parameters[index]); } set { Parameters[index] = ((MSSQLCommandParameterWrapper)value).Parameter; } } public override SDACommandParameterWrapper Add(SDACommandParameterWrapper parameter) { Parameters.Add(((MSSQLCommandParameterWrapper)parameter).Parameter); return parameter; } public override SDACommandParameterWrapper Add(string name, SDADBType type) { SqlDbType dbtype = MSSQLParameterTypeConverter.ConvertSDADBTypeToSqlDbType(type); MSSQLCommandParameterWrapper result = new MSSQLCommandParameterWrapper(Command.Parameters.Add("@" + name, dbtype)); return result; } public override SDACommandParameterWrapper Add(string name, SDADBType type, int size) { SqlDbType dbtype = MSSQLParameterTypeConverter.ConvertSDADBTypeToSqlDbType(type); MSSQLCommandParameterWrapper result = new MSSQLCommandParameterWrapper(Command.Parameters.Add("@" + name, dbtype, size)); return result; } public override SDACommandParameterWrapper Add(string name, object value) { MSSQLCommandParameterWrapper result = new MSSQLCommandParameterWrapper(Command.Parameters.AddWithValue("@" + name, value)); return result; } public override void Remove(SDACommandParameterWrapper parameter) { Command.Parameters.Remove(((MSSQLCommandParameterWrapper)parameter).Parameter); } public override void Clear() { Command.Parameters.Clear(); } public override int Count { get { return Parameters.Count; } } } }