啊鑫
2024-07-09 0552fcc8cb73fc3021e2915129f55a42ed3f20e5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
using System.Data;
using System.Data.Common;
 
namespace CSFramework.DB
{
    /// <summary>
    /// 参数操作工具
    /// </summary>
    public static class ParameterHelper
    {
        /// <summary>
        /// 添加参数
        /// </summary>
        /// <param name="cmd"></param>
        /// <param name="ParameterName"></param>
        /// <param name="ParameterValue"></param>
        /// <param name="dbType"></param>
        /// <returns></returns>
        public static DbParameter AddParameter(DbCommand cmd,
            string ParameterName, object ParameterValue, DbType dbType)
        {
            var dbp = cmd.CreateParameter();
            dbp.ParameterName = ParameterName;
            dbp.Value = ParameterValue;
            dbp.DbType = dbType;
            cmd.Parameters.Add(dbp);
            return dbp;
        }
 
        /// <summary>
        /// 添加参数
        /// </summary>
        /// <param name="cmd">命令</param>
        /// <param name="parameters">对象(匹配参数名称和对象的属性名称)</param>
        /// <param name="paramPrefix">参数前缀,如:@,?,:</param>
        public static void AddParameter(DbCommand cmd, object parameters,
            string paramPrefix)
        {
            if (parameters != null)
            {
                var T = parameters.GetType();
                var properties = T.GetProperties();
                foreach (var property in properties)
                {
                    var value = property.GetValue(parameters, null);
                    var paramName = paramPrefix + property.Name;
                    if (value != null && !cmd.Parameters.Contains(paramName))
                    {
                        var dbp = cmd.CreateParameter();
                        dbp.ParameterName = paramName;
                        dbp.Value = value;
                        dbp.DbType =
                            DBDataTypes.GetDbType(property.PropertyType);
                        cmd.Parameters.Add(dbp);
 
                        if (dbp.DbType == DbType.DateTime)
                            if (CommonMethods.ToSqlDateTime(value) <=
                                CommonMethods.MinSqlDate)
                                dbp.Value = CommonMethods.MinSqlDate;
 
                        if (dbp.DbType == DbType.Int16 ||
                            dbp.DbType == DbType.Int32 ||
                            dbp.DbType == DbType.Int64
                            || dbp.DbType == DbType.Single ||
                            dbp.DbType == DbType.Double ||
                            dbp.DbType == DbType.Decimal)
                            if (CommonMethods.ToDecimal(value) == 0)
                                dbp.Value = 0;
                    }
                }
            }
        }
    }
}