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

  

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

  

C#——反射,自动生成添加的SQL语句的更多相关文章

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

    static string Table_Name = ""; /// <summary> /// model实体中的字段名相对数据库表添加的字段 /// 如: /// ...

  2. IT咨询顾问:一次吐血的项目救火 java或判断优化小技巧 asp.net core Session的测试使用心得 【.NET架构】BIM软件架构02:Web管控平台后台架构 NetCore入门篇:(十一)NetCore项目读取配置文件appsettings.json 使用LINQ生成Where的SQL语句 js_jquery_创建cookie有效期问题_时区问题

    IT咨询顾问:一次吐血的项目救火   年后的一个合作公司上线了一个子业务系统,对接公司内部的单点系统.我收到该公司的技术咨询:项目启动后没有规律的突然无法登录了,重新启动后,登录一断时间后又无法重新登 ...

  3. LinqToDB 源码分析——生成与执行SQL语句

    生成SQL语句的功能可以算是LinqToDB框架的最后一步.从上一章中我们可以知道处理完表达式树之后,相关生成SQL信息会被保存在一个叫SelectQuery类的实例.有了这个实例我们就可以生成对应的 ...

  4. 智能SQL优化工具--SQL Optimizer for SQL Server(帮助提升数据库应用程序性能,最大程度地自动优化你的SQL语句 )

    SQL Optimizer for SQL Server 帮助提升数据库应用程序性能,最大程度地自动优化你的SQL语句 SQL Optimizer for SQL Server 让 SQL Serve ...

  5. 使用LINQ生成Where的SQL语句

    实例1-使用实例-单个语句: ; List<, , }; List<User_info> userInfoList = UserCenterBus.Select_WebSiteBas ...

  6. Python 一键拉取Git分支源码自动解析并执行SQL语句

    基于Python实现自动拉取Git分支源码自动解析并执行SQL语句 by:授客 QQ:1033553122 1.代码用途 开发过程中,研发人员会提交SQL更新脚本到Git源码库,然后测试负责去拉取这些 ...

  7. 利用反射自动生成SQL语句(仿Linq)

    转:http://www.cnblogs.com/the7stroke/archive/2012/04/22/2465597.html using System; using System.Colle ...

  8. ADO.NET 根据实体类自动生成添加修改语句仅限Oracle使用

    话不多说直接上代码,新手上路,高手路过勿喷,请多多指教. /// <summary> /// 等于号 /// </summary> ) + Convert.ToChar() + ...

  9. XsdGen:通过自定义Attribute与反射自动生成XSD

    前言 系统之间的数据交互往往需要事先定义一些契约,在WCF中我们需要先编写XSD文件,然后通过自动代码生成工具自动生成C#对象.对于刚刚接触契约的人来说,掌握XMLSpy之类的软件之后确实比手写XML ...

随机推荐

  1. 接口测试基础----postman、jmeter

    一,什么是接口 接口一般接口分两种: 系统对外接口:与外部系统对接的接口,用来获取或者传递数据给外部系统 系统内部接口:系统模块.方法之间用来获取或者传递数据的接口 二.接口分类 webservice ...

  2. vi/vim常用操作

    什么是vim? Vim是从 vi 发展出来的一个文本编辑器.代码补全.编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用,和Emacs并列成为类Unix系统用户最喜欢的文本编辑器. vim的 ...

  3. 【剑指Offer】面试题26. 树的子结构

    题目 输入两棵二叉树A和B,判断B是不是A的子结构.(约定空树不是任意一个树的子结构) B是A的子结构, 即 A中有出现和B相同的结构和节点值. 例如: 给定的树 A:      3     / \ ...

  4. 索尼研发的新主机竟兼容现款PSVR!

    索尼PlayStation研发负责人Dominic Mallinson在接受媒体记者采访时表示,现款PSVR头戴式虚拟现实装置可用于下一代PS主机. 新主机兼容现款PSVR 而且,即便新主机上市也不要 ...

  5. 官网英文版学习——RabbitMQ学习笔记(七)Topic

    在上一篇中使用直接交换器改进了我们的系统,使得它能够有选择的进行接收消息,但它仍然有局限性——它不能基于多个条件进行路由.本节我们就进行能够基于多个条件进行路由的topics exchange学习. ...

  6. JS - 获取页面滚动的高度

    document.documentElement.scrollTop||document.body.scrollTop

  7. hibernate保存失败

    报错:org.hibernate.jdbc.BdatchedTooManyRowsAffectedException: Batch update returned unexpected row cou ...

  8. 047-PHP数字前面补零,固定位数补0

    <?php #PHP 数字前面补零 固定位数补0 $num=128; $num=str_pad($num,8,"0",STR_PAD_LEFT); echo $num; // ...

  9. Unity UGUI优化整理

    看了不少UI优化方面的东西,还是记下来方便记忆,优化性能往往是在各种选择之间做出平衡(空间换时间,或者GPU换CPU,舍弃精度等). 主要优化点在减少Drawcall,减少Overdraw. Mask ...

  10. 【剑指Offer】面试题11. 旋转数组的最小数字

    题目 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素.例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个 ...