/// <summary> /// Add SQL parameter to command object /// </summary> /// <param name="command">SQL command object</param> /// <param name="prms">SQL parameter to add</param> private static void AddParamToCommand(SqlCommand command, List <SqlParam>?prms = null) { if (prms != null) { foreach (SqlParam fParam in prms) { object value = SimpleConvert.ConvertNullToDbNull(fParam.Value); SqlParameter newpar = command.Parameters.AddWithValue(fParam.SqlName, value); if (fParam.Direction != ParameterDirection.Input) { newpar.Direction = fParam.Direction; //For non-inputed parameter save the original parameter object to retrieve value after SQL execute if (fParam.SqlParameter != null) { throw new InvalidOperationException("Concurency SQL execution call on non-input sql parameter! Not supported!"); } fParam.SqlParameter = newpar; } newpar.SqlDbType = ConvertDatabaseType(fParam.SqlType); if (fParam.Size.HasValue) { newpar.Size = fParam.Size.Value; } } } }
/// <summary> /// Read data from db result /// </summary> /// <param name="reader">DB reader</param> public override void DbRead(IDbDataReader reader) { base.DbRead(reader); ParamName = reader.ReadString(nameof(ParamName)); ParamType = SimpleConvert.Convert <SqlDbType>(reader.ReadString(nameof(ParamType))); TypeLength = reader.ReadInt16(nameof(TypeLength)); TypePrecision = reader.ReadByte(nameof(TypePrecision)); IsNullable = SimpleConvert.Convert <bool>(reader.ReadInt32(nameof(IsNullable))); OrderId = reader.ReadInt16(nameof(OrderId)); Collation = reader.ReadStringN(nameof(Collation)); }
/// <summary> /// Read/Write enum value /// </summary> /// <typeparam name="TEnum">Runtime type of Enum</typeparam> /// <param name="fieldName">Name of the De/Serialized field</param> /// <param name="value">Value to Serialize</param> /// <returns>Readed value</returns> public TEnum ReadWriteEnum <TEnum>(string fieldName, TEnum value) where TEnum : Enum { if (IsWrite) { int numberValue = SimpleConvert.Convert <int>(value); Writer !.WriteInt32(fieldName, numberValue); } else { int numberValue = Reader !.ReadInt32(fieldName); value = SimpleConvert.Convert <TEnum>(numberValue); } return(value); }
static void Main(string[] args) { Console.WriteLine(SimpleConvert.To <double>("5.6")); Console.WriteLine(SimpleConvert.To <decimal>("42")); }
/// <summary> /// Read data from db result /// </summary> /// <param name="reader">DB reader</param> public virtual void DbRead(IDbDataReader reader) { SchemaName = reader.ReadString(nameof(SchemaName)); ObjectName = reader.ReadString(nameof(ObjectName)); ObjectType = SimpleConvert.Convert <MsSqlDbObjectType>(reader.ReadString(nameof(ObjectType))); }