public string GetInsertStr<T>(List<T> obj,string tableName) {string str = string.Format(@"INSERT INTO tablename(rowsname)VALUES(rowsvalue)GO");string rowsname = string.Empty;//列string rowsvalue = string.Empty;//值string name= obj.GetType().Name;int index = 0;//第一次不需要,号if (name.Contains("List")){if (obj.Count > 0) {//构造列foreach (PropertyInfo item in obj[0].GetType().GetProperties()){if (index == 0){rowsname += " " + item.Name;}else{rowsname += " ," + item.Name;}index++;}//构造值foreach (T item in obj){Type t = item.GetType();PropertyInfo[] pArray = t.GetProperties();index = 0;string tempstr = " ( ";Array.ForEach<PropertyInfo>(pArray, p =>{PropertyInfo propertyInfo = t.GetProperty(p.Name);if (propertyInfo.GetValue(item, null) != null){string value = propertyInfo.GetValue(item, null).ToString();if (index == 0){tempstr += " '" + value + "' ";}else{tempstr += " ,'" + value + "' ";}index++;}else {if (index == 0){tempstr += " '' ";}else{tempstr += " ,'' ";}index++;}});tempstr=tempstr.Insert(tempstr.Length, " ),");rowsvalue += tempstr;}}rowsvalue = rowsvalue.Substring(0, rowsvalue.Length - 1);str = str.Replace("rowsname", rowsname);str = str.Replace("rowsvalue", rowsvalue);str = str.Replace("tableName", tableName);}return str;}
   /// <summary>/// Insert SQL语句/// </summary>/// <param name="obj">要转换的对象,不可空</param>/// <param name="tableName">要添加的表明,不可空</param>/// <returns>/// 空/// sql语句/// </returns>public static string InsertSql<T>(T t, string tableName) where T : class{if (t == null || string.IsNullOrEmpty(tableName)){return string.Empty;}string columns = GetColmons(t);if (string.IsNullOrEmpty(columns)){return string.Empty;}string values = GetValues(t);if (string.IsNullOrEmpty(values)){return string.Empty;}StringBuilder sql = new StringBuilder();sql.Append("Insert into " + tableName);sql.Append("(" + columns + ")");sql.Append(" values(" + values + ")");return sql.ToString();}/// <summary>/// BulkInsert SQL语句(批量添加)/// </summary>/// <typeparam name="T">类型</typeparam>/// <param name="objs">要转换的对象集合,不可空</param>/// <param name="tableName">>要添加的表明,不可空</param>/// <returns>/// 空/// sql语句/// </returns>public static string BulkInsertSql<T>(List<T> objs, string tableName) where T : class{if (objs == null || objs.Count == 0 || string.IsNullOrEmpty(tableName)){return string.Empty;}string columns = GetColmons(objs[0]);if (string.IsNullOrEmpty(columns)){return string.Empty;}string values = string.Join(",", objs.Select(p => string.Format("({0})", GetValues(p))).ToArray());StringBuilder sql = new StringBuilder();sql.Append("Insert into " + tableName);sql.Append("(" + columns + ")");sql.Append(" values " + values + "");return sql.ToString();}/// <summary>/// 获得类型的列名/// </summary>/// <param name="obj"></param>/// <returns></returns>private static string GetColmons<T>(T obj){if (obj == null){return string.Empty;}return string.Join(",", obj.GetType().GetProperties().Select(p => p.Name).ToList());}/// <summary>/// 获得值/// </summary>/// <param name="obj"></param>/// <returns></returns>private static string GetValues<T>(T obj){if (obj == null){return string.Empty;}return string.Join(",", obj.GetType().GetProperties().Select(p => string.Format("'{0}'", p.GetValue(obj))).ToArray());}

C# 怎么把集合转换成数据库添加语句,把类转换成sql语句相关推荐

  1. 数据库基本概念 - 表、字段、sql语句

    这里使用一个简易的access数据库操作工具:access数据库的后缀名为.mdb: 输入如下图的语句,执行,将创建一张表:名为Tab1: 在数据库里执行的代码一般称为SQL语句:表,在纵向的方面,是 ...

  2. 如何分表分库 Mycat 与shadingjdbc 区别? Mycat 是基于服务器端的形式实现数据库代理 基于服务器端的形式 改写sql语句 shadingjdbc 基于客户端 改写sql语

    如何分表分库 Mycat 与shadingjdbc 区别? Mycat 是基于服务器端的形式实现数据库代理 基于服务器端的形式 改写sql语句 shadingjdbc 基于客户端 改写sql语句的形式 ...

  3. 删除数据库中所有存储过程和函数的sql语句

    -删除数据库中所有存储过程和函数的sql语句 USE [TmpDb] SELECT  IDENTITY( INT,1,1 ) flag ,         [name] NAMES,xtype INT ...

  4. oracle添加表的索引,oracle批量添加指定表前缀的索引SQL语句

    oracle批量添加指定表前缀的索引SQL语句 需要输入用户名,表空间,索引个数,表名前缀,过滤的表名后缀 ##需要输入用户名,表空间,索引个数,表名前缀,过滤的表名后缀 declare --用户名 ...

  5. mysql查询低效语句_MySQL数据库中查找执行从命慢的SQL语句

    MySQL数据库中查找执行从命慢的SQL语句 (2011-09-15 08:21:35) 标签: 杂谈 去历:赛迪网 做者:Alizze 启动Mysql时减参数--log-slow-queries去挤 ...

  6. mysql 查询时间转换_数据库查询时日期的转换

    首先简单说明一下,laravel框架中查询并打印sql语句的办法,不管任何时候由于sql语句报错时,都可以先打印一下,分析一下是什么原因造成的错误 ①引入laravel框架DB类useIllumina ...

  7. Oracle 数据库中较为复杂或典型的 SQL 语句的解读

    文章目录 批量生成 SQL 语句/拼接字符串 多表关联查询 + where 子句 示例(一) 示例(二) 普通的表间内连接查询语句 关键字 distinct 用法说明 Oracle 数据库的分组排序查 ...

  8. 数据库设计、查询规范及常用SQL语句

    1.数据库设计规范 1.1 表设计 (1)表名前应加上前缀,表的前缀用系统或模块的英文名称缩写: (2)数据库表名应该有意义,表名太长需要用前缀表示,并且易于理解,最好使用可以表达功能的英文单词或缩写 ...

  9. 数据库——python操作MySQL、修改表SQL语句、视图、触发器、存储过程、事务、流程控制、常见函数、索引

    文章目录 一.python操作MySQL 1.pymysql模块 1.基本使用 2.sql注入问题 3.二次确认 二.修改表SQL语句 1.修改表的名字 rename 2.添加字段 add 3.修改字 ...

最新文章

  1. 你要的2019最全目标检测都在这里啦!
  2. mySql 的常用命令
  3. c++ 获取64位进程模块地址_针对银行木马BokBot核心模块的深入分析
  4. 【Python3_基础系列_009】Python3-条件语句-If
  5. 转载:vs配置opencv教程
  6. Php通过gsoap调用c++ websevice
  7. Mysql基本语句(个人笔记)
  8. 使用OWA无法撰写邮件内容的解决法
  9. ikm java_ikm(IKM在线)
  10. 大数据python之简单的网络爬虫代码实现(单一与循环代码进行网络爬虫)
  11. windows XP cmd命令大全
  12. 关于sublime出现PyV8binary错误
  13. 2021届大学毕业生薪酬排名出炉 | 超50所高校月薪过万!
  14. Excel键盘快捷键大全
  15. 无法启动此程序因为计算机丢失d3dx9,无法启动此程序.因为计算机中丢失d3dx9_43.dll.尝试重新安装改程序以解决问题...
  16. html5 dom video,HTML5 / HTML5 video - 使用 DOM 进行控制 - 汇智网
  17. ubuntu ibus输入法 卡顿
  18. systemverilog中的时间单位和时间精度
  19. 趋势的郁闷--今天感觉到了防毒墙和防火墙的区别?
  20. 安化云台山风景区的绝美景点,你去过几个?

热门文章

  1. PD协议芯片,20W45WPD快充方案
  2. 再见2018 你好2019
  3. 助力湾区金融科技,巨杉数据库入选首届粤港澳大湾区金融科技飞鱼企业20强榜单
  4. PR AE PS安装资源包
  5. 关于Arcgis这62个常用技巧,你造吗
  6. 利用canvas画图片
  7. 你必须收藏的快速学习Autodesk最新编程接口的免费录像
  8. 【Arduino+ESP32专题】一起来读INA3221数据手册 1
  9. 浅谈HTTP 和 HTTPS的区别
  10. 2017华为软件精英挑战赛解分析