• 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();
               
    
            }
    

      

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

      

  • 相关阅读:
    react 常用问题总结
    vue 给element-UI库添加按需加载时启动项目时 babel-preset-es2015 报错
    前端使用 jquery.base64.js 进行加密、解密十分方便
    CommonJS规范与AMD/CMD规范总结
    彻底搞懂Websocket原理
    调用图灵API V2 遇到的坑
    前端html页面,手机查看
    关于原生js的节点兼容性
    数据类型检测方法
    一位大佬关于js去重问题的研究
  • 原文地址:https://www.cnblogs.com/ruogu/p/10982970.html
Copyright © 2020-2023  润新知