zoukankan      html  css  js  c++  java
  • 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();
               
    
            }
    

      

    总结:反射 我们自己写的时候很少 但是很重要,一定要理解。会用,对后面的成长肯定是大用处的

      

  • 相关阅读:
    CentOS 中安装和更新 git 客户端工具
    Python 快速入门笔记(2):数据类型
    Python 快速入门笔记(1):简介
    JavaScript快速入门笔记(15):Web storage 之 localStorage 和 sessionStorage
    JavaScript快速入门笔记(14):session
    JavaScript快速入门笔记(13):cookie
    JavaScript快速入门笔记(12):Ajax之XMLHttpRequest、jQuery、fetch()
    JavaScript快速入门笔记(11):事件处理
    python的线程和进程
    python中字符串编码转换
  • 原文地址:https://www.cnblogs.com/ruogu/p/10982970.html
Copyright © 2011-2022 走看看