码迷,mamicode.com
首页 > 数据库 > 详细

根据Model有值的自动生成添加的Sql语句

时间:2015-06-17 18:11:06      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:

        static string Table_Name = "";

        /// <summary>
        /// model实体中的字段名相对数据库表添加的字段
        /// 如:
        /// model中一字段名为cm_tableName,
        /// 其中tableName为数据库表名
        /// 则此变量的值为cm_
        /// </summary>
        static string Common_Prefix = "";

        /// <summary>         
        /// 泛型获取SQL  INSERT字符串         
        /// </summary>         
        /// <typeparam name="T">对象类型</typeparam>         
        /// <param name="md">对象类型参数</param>         
        /// <returns>返回SQL INSERT语句;调用方法:  </returns>         
        public static String toSqlInsertBuilder<T>(this T md)
        {
            //要插入的字段
            string SQL_STR_INSERT_FIELDS = "";
            //要插入的值
            string SQL_STR_INSERT_VALUES = "";
            string SQL_STR = "";
            //获取当前实例的类型
            Type type = md.GetType();
            //获取实体名(即表名)
            String tableName = type.Name.ToString();
            //如果表名还没给值,则把表名赋给它
            //Table_Name = str;


            //插入语句的头部
            String SQL_STR_INSERT_HEADER = "insert  into " + tableName + "(";
            //根据类型创建一个空的实体model
            object obj = Activator.CreateInstance(type);
            //获取所有为Public的字段和实例成员(如果有的话)
            PropertyInfo[] props = type.GetProperties(BindingFlags.Public | BindingFlags.Instance);
            //遍历每一个字段
            foreach (PropertyInfo p in props)
            {
                if (p.GetValue(md, null) != null)
                {
                    if (p.Name.ToLower() != "id")
                    {
                        //返回传入的实体中此(P)字段的值,如果此值不为空,则进入if方法体内
                        if (p.GetValue(md, null).ToString().Trim().Length > 0)
                        {
                            SQL_STR_INSERT_FIELDS = SQL_STR_INSERT_FIELDS
                                //将字段名比数据库字段名多的部分替换掉
                                //.Replace(Common_Prefix.ToLower().ToString(), "")
                                + p.Name.ToLower().ToString() + ",";
                            SQL_STR_INSERT_VALUES = SQL_STR_INSERT_VALUES + "‘, ‘"
                                + p.GetValue(md, null).ToString().Trim();
                        }
                    }
                }
            }
            //
            if (SQL_STR_INSERT_FIELDS.ToString().Trim().Length > 3)
            {
                SQL_STR = SQL_STR_INSERT_HEADER
                    + SQL_STR_INSERT_FIELDS.Substring(0, SQL_STR_INSERT_FIELDS.Length - 1)
                    + ")values(" + SQL_STR_INSERT_VALUES.Substring(2, SQL_STR_INSERT_VALUES.Length - 2)
                    + "‘);";
            }
            return SQL_STR;
        }

        public static String SqlInsertBuilder(DataSet Ds)
        {
            DataTable dt = new DataTable();
            if (Ds != null)
            {
                if (Ds.Tables.Count > 0)
                {
                    dt = Ds.Tables[0];
                }
            }
            String SQL_STR_INSERT_HEADER = "insert  into mytablename(";
            string SQL_STR_INSERT_FIELDS = "";
            string SQL_STR_INSERT_VALUES = "";
            string SQL_STR = "";
            if (dt.Rows.Count > 0)
            {
                SQL_STR = "";
                foreach (DataRow dr in dt.Rows)
                {
                    SQL_STR_INSERT_HEADER = "insert  into mytablename(";
                    SQL_STR_INSERT_HEADER = SQL_STR_INSERT_HEADER.Replace("mytablename", Table_Name.ToString());
                    SQL_STR_INSERT_FIELDS = "";// SQL_STR_INSERT_FIELDS + dc.ColumnName.ToLower().ToString() + ",";   
                    SQL_STR_INSERT_VALUES = "";//SQL_STR_INSERT_VALUES + "‘, ‘" + dr[dc.ColumnName].ToString().Trim();
                    foreach (DataColumn dc in dt.Columns)
                    {
                        if (dr[dc.ColumnName].ToString().Trim().Length > 0)
                        {
                            SQL_STR_INSERT_FIELDS = SQL_STR_INSERT_FIELDS
                                + dc.ColumnName.ToLower().ToString() + ",";
                            SQL_STR_INSERT_VALUES = SQL_STR_INSERT_VALUES
                                + "‘, ‘" + dr[dc.ColumnName].ToString().Trim();
                        }
                    }
                    if (SQL_STR_INSERT_FIELDS.ToString().Trim().Length > 3)
                    {
                        SQL_STR = SQL_STR + SQL_STR_INSERT_HEADER
                            + SQL_STR_INSERT_FIELDS.Substring(0, SQL_STR_INSERT_FIELDS.Length - 1)
                            + ")values(" + SQL_STR_INSERT_VALUES.Substring(2, SQL_STR_INSERT_VALUES.Length - 2)
                            + "‘);";
                    }
                }
            }
            return SQL_STR;
        }

        public static String SqlInsertBuilder(DataTable dt)
        {
            String SQL_STR_INSERT_HEADER = "insert  into mytablename(";
            string SQL_STR_INSERT_FIELDS = "";
            string SQL_STR_INSERT_VALUES = "";
            string SQL_STR = "";
            if (dt.Rows.Count > 0)
            {
                SQL_STR = "";
                foreach (DataRow dr in dt.Rows)
                {
                    SQL_STR_INSERT_HEADER = "insert  into mytablename(";
                    SQL_STR_INSERT_HEADER = SQL_STR_INSERT_HEADER.Replace("mytablename", Table_Name.ToString());
                    SQL_STR_INSERT_FIELDS = "";
                    SQL_STR_INSERT_VALUES = "";
                    foreach (DataColumn dc in dt.Columns)
                    {
                        if (dr[dc.ColumnName].ToString().Trim().Length > 0)
                        {
                            SQL_STR_INSERT_FIELDS = SQL_STR_INSERT_FIELDS
                                + dc.ColumnName.ToLower().ToString() + ",";
                            SQL_STR_INSERT_VALUES = SQL_STR_INSERT_VALUES
                                + "‘, ‘" + dr[dc.ColumnName].ToString().Trim();
                        }
                    }
                    if (SQL_STR_INSERT_FIELDS.ToString().Trim().Length > 3)
                    {
                        SQL_STR = SQL_STR + SQL_STR_INSERT_HEADER
                            + SQL_STR_INSERT_FIELDS.Substring(0, SQL_STR_INSERT_FIELDS.Length - 1)
                            + ")values(" + SQL_STR_INSERT_VALUES.Substring(2, SQL_STR_INSERT_VALUES.Length - 2)
                            + "‘);";
                    }
                }
            }
            return SQL_STR;
        }

 

根据Model有值的自动生成添加的Sql语句

标签:

原文地址:http://www.cnblogs.com/qiywtc/p/4583855.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!