kreta/Sda.DataProvider/Wrappers/MSSQL/MSSQLCommandParameterCollectionWrapper.cs
2024-03-13 00:33:46 +01:00

108 lines
3.3 KiB
C#

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;
}
}
}
}