C#——反射,自動生成添加的SQL語句


 C#中的反射。是C#中特別重要也是特別神奇的特性,對后面學習框架,了解框架的原理。以及自己寫框架,都是必不可少的。學習反射的過程中。總給我一種茅塞頓開的感覺,以前不懂的,現在懂了

  

  反射的介紹:https://www.cnblogs.com/Kare/p/4601436.html

 

我學了反射以后。也想寫一個框架。。哈哈哈 架構師像我招手 。。。。。

   

   增加的方法(什么類都可以)

前提:類名和數據庫表名一致。屬性名和數據庫列名一致。類要有無參構造函數。

       :主鍵必須為id 自增,(簡化)

        /// <summary>
        /// 單行添加
        /// </summary>
        /// <param name="obj">哪個對象</param>
        /// <returns>是否成功</returns>
        public static bool Insert(Object obj)
        {
            //獲取type對象
            Type type = obj.GetType();
            //獲取所有屬性
            PropertyInfo[] propertys = type.GetProperties();

            //定義2個數組接受屬性和值 Length - 1 添加不用id
            string[] col = new string[propertys.Length - 1];
            string[] value = new string[propertys.Length - 1];
            //索引
            int count = 0;
            foreach (PropertyInfo prop in propertys)
            {
                if (prop.Name!="id")
                {
                    col[count] = prop.Name;//拿到屬性名稱
                    value[count] = prop.GetValue(obj).ToString();//拿到屬性的值
                    count++;
                }
            }
            //拼接SQL語句
            StringBuilder sbsql = new StringBuilder();
            //insert into [表名] ([列名1],。。。) values('值1',。。。。)
            sbsql.Append("insert into [").Append(type.Name).Append("]([")
                .Append(string.Join("],[",col)).Append("])");
            sbsql.Append("values ('").Append(string.Join("','", value)).Append("')");
            //執行
            int num=SqlseverDBhelper.ExecuteNonQuery(sbsql.ToString());
            return num>0;
        }

  調用

  static void Main(string[] args)
        {
            User u1 = new User();
            u1.Uname = "王五";
            u1.Uadd = "zhongguo";
            u1.Money = 20.51m;
            u1.Uphone = "15827751569";
            for (int i = 0; i < 5; i++)
            {
                if (Eqrom.Insert(u1))
                {
                    Console.WriteLine("添加成功");
                }
            }
            Console.WriteLine("添加5條 王五 一樣的數據");

            Console.ReadKey();
           

        }

  

 

總結:反射 我們自己寫的時候很少 但是很重要,一定要理解。會用,對后面的成長肯定是大用處的

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM