public static List <ProcedureParameter> GetParaFromObj(object obj) { List <ProcedureParameter> paralist = new List <ProcedureParameter>(); if (obj == null) { return(paralist); } if (obj is List <RLib.DB.ProcedureParameter> ) { return(obj as List <RLib.DB.ProcedureParameter>); } foreach (var p in obj.GetType().GetProperties()) { object v = p.GetValue(obj, null); if (v == null) { v = System.DBNull.Value; } ProcedureParameter para = new ProcedureParameter(p.Name, v); paralist.Add(para); } return(paralist); }
/// <summary>参数类型转化</summary> /// <param name="Par"></param> /// <returns></returns> private SqlParameter ParameterTransform(ProcedureParameter Par) { if (Par.ParType == ProcParType.Default) { return(new SqlParameter(Par.Name, Par.Value)); } SqlParameter p = new SqlParameter(); p.ParameterName = Par.Name; switch (Par.ParType) { case ProcParType.Int16: p.SqlDbType = SqlDbType.SmallInt; break; case ProcParType.Int32: p.SqlDbType = SqlDbType.Int; break; case ProcParType.Int64: p.SqlDbType = SqlDbType.BigInt; break; case ProcParType.Single: p.SqlDbType = SqlDbType.Real; break; case ProcParType.Double: p.SqlDbType = SqlDbType.Float; break; case ProcParType.Decimal: p.SqlDbType = SqlDbType.Decimal; break; case ProcParType.Char: p.SqlDbType = SqlDbType.Char; break; case ProcParType.VarChar: p.SqlDbType = SqlDbType.VarChar; break; case ProcParType.NVarchar: p.SqlDbType = SqlDbType.NVarChar; break; case ProcParType.Image: p.SqlDbType = SqlDbType.Binary; break; case ProcParType.DateTime: p.SqlDbType = SqlDbType.DateTime; break; default: throw new Exception("未知类型ProcParType:" + Par.ParType.ToString()); } p.Size = Par.Size; p.Direction = Par.Direction; switch (Par.Direction) { case ParameterDirection.Input: case ParameterDirection.InputOutput: if (Par.Value == null) { p.Value = DBNull.Value; } else { p.Value = Par.Value; } break; } return(p); }