示例#1
0
        private static void SetInValueInternalWithOdbType <TKey>(this DB2ParametersWrapper <TKey> paramWrapper, TKey key, object value, DB2Type odbType, ParameterDirection pDir = ParameterDirection.Input)
        {
            value = value ?? DBNull.Value;

            //aggiorno
            if (paramWrapper.ContainsKey(key))
            {
                paramWrapper[key].Value = value;
            }
            else
            {
                var p = new DB2Parameter
                {
                    Direction     = pDir,
                    ParameterName = "@par_" + key,
                    DB2Type       = odbType,
                    Value         = value,
                };
                paramWrapper[key] = p;
            }
        }
示例#2
0
        public static object GetValue <TKey>(this DB2ParametersWrapper <TKey> paramWrapper, TKey key, TypeCode type)
        {
            object value = null;

            if (paramWrapper.ContainsKey(key))
            {
                switch (type)
                {
                case TypeCode.Int16:
                    if (paramWrapper[key].DB2Type != DB2Type.SmallInt)
                    {
                        ThrowArgumentException(key, paramWrapper[key].DB2Type);
                    }
                    value = ((short)(DB2Int16)paramWrapper[key].Value);
                    break;

                case TypeCode.Int32:
                    if (paramWrapper[key].DB2Type != DB2Type.Integer)
                    {
                        ThrowArgumentException(key, paramWrapper[key].DB2Type);
                    }
                    value = ((int)(DB2Int32)paramWrapper[key].Value);
                    break;

                case TypeCode.Int64:
                    if (paramWrapper[key].DB2Type != DB2Type.BigInt)
                    {
                        ThrowArgumentException(key, paramWrapper[key].DB2Type);
                    }
                    value = ((long)(DB2Int64)paramWrapper[key].Value);
                    break;

                case TypeCode.Decimal:
                    if (paramWrapper[key].DB2Type != DB2Type.Decimal)
                    {
                        ThrowArgumentException(key, paramWrapper[key].DB2Type);
                    }
                    value = ((decimal)(DB2Decimal)paramWrapper[key].Value);
                    break;

                case TypeCode.Double:
                    if (paramWrapper[key].DB2Type != DB2Type.Double)
                    {
                        ThrowArgumentException(key, paramWrapper[key].DB2Type);
                    }
                    value = ((double)(DB2Double)paramWrapper[key].Value);
                    break;

                case TypeCode.String:
                    var odbType = paramWrapper[key].DB2Type;
                    if (odbType != DB2Type.Char ||
                        odbType != DB2Type.VarChar ||
                        odbType != DB2Type.Graphic ||
                        odbType != DB2Type.VarGraphic ||
                        odbType != DB2Type.Clob ||      //CLOB is a string
                        odbType != DB2Type.DbClob
                        )
                    {
                        ThrowArgumentException(key, paramWrapper[key].DB2Type);
                    }
                    value = ((string)(DB2String)paramWrapper[key].Value);
                    break;

                case TypeCode.DateTime:
                    if (paramWrapper[key].DB2Type == DB2Type.Date)
                    {
                        value = ((DateTime)(DB2Date)paramWrapper[key].Value);
                    }
                    else if (paramWrapper[key].DB2Type == DB2Type.Timestamp)
                    {
                        value = (DateTime)((DB2TimeStamp)paramWrapper[key].Value);
                    }
                    else if (paramWrapper[key].DB2Type == DB2Type.Time)
                    {
                        value = (TimeSpan)((DB2Time)paramWrapper[key].Value);
                    }
                    else
                    {
                        ThrowArgumentException(key, paramWrapper[key].DB2Type);
                    }
                    break;

                case TypeCode.DBNull:
                    //will return default value
                    break;

                //IMPLEMENT OTHER TYPES HERE
                default:
                    throw new ArgumentException($"Not a valid TypeCode {Enum.GetName(typeof(TypeCode), type)}");
                }
                return(value);
            }
            else
            {
                throw new DataException(string.Format($"Output parameter key {key} does not exist"));
            }
        }
示例#3
0
        private static void SetInValueInternal <TValue, TKey>(this DB2ParametersWrapper <TKey> paramWrapper, TKey key, object value, ParameterDirection pDir = ParameterDirection.Input)
        {
            value = value ?? DBNull.Value;

            if (paramWrapper.ContainsKey(key))
            {
                paramWrapper[key].Value = value;
            }
            else
            {
                var p = new DB2Parameter
                {
                    Direction     = pDir,
                    ParameterName = "@par_" + key
                };

                var type = typeof(TValue);

                switch (Type.GetTypeCode(type))
                {
                case TypeCode.Int16:
                    p.DB2Type = DB2Type.SmallInt;
                    p.Value   = value;
                    break;

                case TypeCode.Int32:
                    p.DB2Type = DB2Type.Integer;
                    p.Value   = value;
                    break;

                case TypeCode.Int64:
                    p.DB2Type = DB2Type.BigInt;
                    p.Value   = value;
                    break;

                case TypeCode.Decimal:
                    p.DB2Type = DB2Type.Decimal;
                    p.Value   = value;
                    break;

                case TypeCode.Double:
                    p.DB2Type = DB2Type.Double;
                    p.Value   = value;
                    break;

                case TypeCode.String:
                    p.DB2Type = DB2Type.VarChar;
                    p.Value   = value;
                    break;

                case TypeCode.DateTime:
                    p.DB2Type = DB2Type.Date;
                    p.Value   = value;
                    break;

                default:
                    throw new ArgumentException("Error to map specified type to an DB2Type.");
                }

                paramWrapper[key] = p;
            }
        }