C# 怎么把集合转换成数据库添加语句,把类转换成sql语句
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语句相关推荐
- 数据库基本概念 - 表、字段、sql语句
这里使用一个简易的access数据库操作工具:access数据库的后缀名为.mdb: 输入如下图的语句,执行,将创建一张表:名为Tab1: 在数据库里执行的代码一般称为SQL语句:表,在纵向的方面,是 ...
- 如何分表分库 Mycat 与shadingjdbc 区别? Mycat 是基于服务器端的形式实现数据库代理 基于服务器端的形式 改写sql语句 shadingjdbc 基于客户端 改写sql语
如何分表分库 Mycat 与shadingjdbc 区别? Mycat 是基于服务器端的形式实现数据库代理 基于服务器端的形式 改写sql语句 shadingjdbc 基于客户端 改写sql语句的形式 ...
- 删除数据库中所有存储过程和函数的sql语句
-删除数据库中所有存储过程和函数的sql语句 USE [TmpDb] SELECT IDENTITY( INT,1,1 ) flag , [name] NAMES,xtype INT ...
- oracle添加表的索引,oracle批量添加指定表前缀的索引SQL语句
oracle批量添加指定表前缀的索引SQL语句 需要输入用户名,表空间,索引个数,表名前缀,过滤的表名后缀 ##需要输入用户名,表空间,索引个数,表名前缀,过滤的表名后缀 declare --用户名 ...
- mysql查询低效语句_MySQL数据库中查找执行从命慢的SQL语句
MySQL数据库中查找执行从命慢的SQL语句 (2011-09-15 08:21:35) 标签: 杂谈 去历:赛迪网 做者:Alizze 启动Mysql时减参数--log-slow-queries去挤 ...
- mysql 查询时间转换_数据库查询时日期的转换
首先简单说明一下,laravel框架中查询并打印sql语句的办法,不管任何时候由于sql语句报错时,都可以先打印一下,分析一下是什么原因造成的错误 ①引入laravel框架DB类useIllumina ...
- Oracle 数据库中较为复杂或典型的 SQL 语句的解读
文章目录 批量生成 SQL 语句/拼接字符串 多表关联查询 + where 子句 示例(一) 示例(二) 普通的表间内连接查询语句 关键字 distinct 用法说明 Oracle 数据库的分组排序查 ...
- 数据库设计、查询规范及常用SQL语句
1.数据库设计规范 1.1 表设计 (1)表名前应加上前缀,表的前缀用系统或模块的英文名称缩写: (2)数据库表名应该有意义,表名太长需要用前缀表示,并且易于理解,最好使用可以表达功能的英文单词或缩写 ...
- 数据库——python操作MySQL、修改表SQL语句、视图、触发器、存储过程、事务、流程控制、常见函数、索引
文章目录 一.python操作MySQL 1.pymysql模块 1.基本使用 2.sql注入问题 3.二次确认 二.修改表SQL语句 1.修改表的名字 rename 2.添加字段 add 3.修改字 ...
最新文章
- 你要的2019最全目标检测都在这里啦!
- mySql 的常用命令
- c++ 获取64位进程模块地址_针对银行木马BokBot核心模块的深入分析
- 【Python3_基础系列_009】Python3-条件语句-If
- 转载:vs配置opencv教程
- Php通过gsoap调用c++ websevice
- Mysql基本语句(个人笔记)
- 使用OWA无法撰写邮件内容的解决法
- ikm java_ikm(IKM在线)
- 大数据python之简单的网络爬虫代码实现(单一与循环代码进行网络爬虫)
- windows XP cmd命令大全
- 关于sublime出现PyV8binary错误
- 2021届大学毕业生薪酬排名出炉 | 超50所高校月薪过万!
- Excel键盘快捷键大全
- 无法启动此程序因为计算机丢失d3dx9,无法启动此程序.因为计算机中丢失d3dx9_43.dll.尝试重新安装改程序以解决问题...
- html5 dom video,HTML5 / HTML5 video - 使用 DOM 进行控制 - 汇智网
- ubuntu ibus输入法 卡顿
- systemverilog中的时间单位和时间精度
- 趋势的郁闷--今天感觉到了防毒墙和防火墙的区别?
- 安化云台山风景区的绝美景点,你去过几个?