C#使用反射根据实体生成sql语句(添加和批量添加)

///


    /// 对象拼接sql语句
    ///

    public class SqlBuilderHelper
    {
        ///
        /// Insert SQL语句
        ///

        /// 要转换的对象,不可空
        /// 要添加的表明,不可空
        ///
        /// 空
        /// sql语句
        ///

        public static string InsertSql(T t, string tableName) where T : class
        {
            if (t == null || string.IsNullOrEmpty(tableName))
            {
                return string.Empty;
            }
            string columns = GetColmons(t);
            if (string.IsNullOrEmpty(columns))
            {
                return string.Empty;
            }
            string values = GetValues(t);
            if (string.IsNullOrEmpty(values))
            {
                return string.Empty;
            }
            StringBuilder sql = new StringBuilder();
            sql.Append("Insert into " + tableName);
            sql.Append("(" + columns + ")");
            sql.Append(" values(" + values + ")");
            return sql.ToString();
        }

        ///


        /// BulkInsert SQL语句(批量添加)
        ///

        /// 类型
        /// 要转换的对象集合,不可空
        /// >要添加的表明,不可空
        ///
        /// 空
        /// sql语句
        ///

        public static string BulkInsertSql(List objs, string tableName) where T : class
        {
            if (objs == null || objs.Count == 0 || string.IsNullOrEmpty(tableName))
            {
                return string.Empty;
            }
            string columns = GetColmons(objs[0]);
            if (string.IsNullOrEmpty(columns))
            {
                return string.Empty;
            }
            string values = string.Join(",", objs.Select(p => string.Format("({0})", GetValues(p))).ToArray());
            StringBuilder sql = new StringBuilder();
            sql.Append("Insert into " + tableName);
            sql.Append("(" + columns + ")");
            sql.Append(" values " + values + "");
            return sql.ToString();
        }

        ///


        /// 获得类型的列名
        ///

        ///
        ///
        private static string GetColmons(T obj)
        {
            if (obj == null)
            {
                return string.Empty;
            }
            return string.Join(",", obj.GetType().GetProperties().Select(p => p.Name).ToList());
        }

        ///


        /// 获得值
        ///

        ///
        ///
        private static string GetValues(T obj)
        {
            if (obj == null)
            {
                return string.Empty;
            }
            return string.Join(",", obj.GetType().GetProperties().Select(p => string.Format("'{0}'", p.GetValue(obj))).ToArray());
        }
    }

 

 

原文地址https://www.cnblogs.com/Yuuuuu/p/8688237.html

你可能感兴趣的:(C#使用反射根据实体生成sql语句(添加和批量添加))