Database 관련 Helper class
Esempio n. 1
0
        /// <summary>
        /// <see cref="DbCommand"/>의 Parameter에 값을 설정합니다.
        /// </summary>
        /// <param name="db">instance of <see cref="Database"/> defined in DAAB</param>
        /// <param name="cmd">instance of DbCommand</param>
        /// <param name="adoParameters">Command Parameter에 설정할 정보</param>
        public static void SetParameterValues(Database db, DbCommand cmd, params IAdoParameter[] adoParameters)
        {
            if (adoParameters.IsEmptySequence())
            {
                return;
            }

            // NOTE: output parameter 등의 값을 초기화 해주어야 한다.
            //
            InitializeParameterValues(db, cmd);

            var cmdParamNames = cmd.Parameters.Cast <IDataParameter>().Select(dp => dp.ParameterName.RemoveParameterPrefix()).ToList();

            foreach (var p in adoParameters)
            {
                var pName = cmdParamNames.FirstOrDefault(cpn => cpn.Compare(p.Name, true) == 0);

                if (pName.IsNotWhiteSpace())
                {
                    db.SetParameterValue(cmd, pName, p.Value);

                    if (IsDebugEnabled)
                    {
                        log.Debug("DbCommand의 파라미터 값을 설정했습니다. parameter=[{0}]", p);
                    }
                }
                else
                {
                    try {
                        if (p.Value != null && p.ValueType == DbType.Object)
                        {
                            p.ValueType = DbFunc.GetDbType(p.Value.GetType());
                        }

                        if (p.Size.HasValue)
                        {
                            db.AddParameter(cmd, p.Name, p.ValueType, p.Size.Value, p.Direction, true, 0, 0, p.SourceColumn,
                                            p.SourceVersion, p.Value);
                        }
                        else
                        {
                            db.AddParameter(cmd, p.Name, p.ValueType, p.Direction, p.SourceColumn, p.SourceVersion, p.Value);
                        }
                    }
                    catch {
                        // NOTE: SQLite에서는 Direction을 지정하지 못합니다.
                        //
                        db.AddInParameter(cmd, p.Name, p.ValueType, p.Value);
                    }

                    if (IsDebugEnabled)
                    {
                        log.Debug("Command에 파라미터를 추가했습니다. parameter=[{0}]", p);
                    }
                }
            }
        }
Esempio n. 2
0
 /// <summary>
 /// constructor
 /// </summary>
 /// <param name="name">parameter name</param>
 /// <param name="value">parameter value</param>
 public AdoParameter(string name, object value)
     : this(name, value, DbFunc.GetDbType((value != null) ? value.GetType() : typeof(object)))
 {
 }