根据Model有值的自动生成添加的Sql语句
static string Table_Name = ""; /// <summary>
/// model实体中的字段名相对数据库表添加的字段
/// 如:
/// model中一字段名为cm_tableName,
/// 其中tableName为数据库表名
/// 则此变量的值为cm_
/// </summary>
static string Common_Prefix = ""; /// <summary>
/// 泛型获取SQL INSERT字符串
/// </summary>
/// <typeparam name="T">对象类型</typeparam>
/// <param name="md">对象类型参数</param>
/// <returns>返回SQL INSERT语句;调用方法: </returns>
public static String toSqlInsertBuilder<T>(this T md)
{
//要插入的字段
string SQL_STR_INSERT_FIELDS = "";
//要插入的值
string SQL_STR_INSERT_VALUES = "";
string SQL_STR = "";
//获取当前实例的类型
Type type = md.GetType();
//获取实体名(即表名)
String tableName = type.Name.ToString();
//如果表名还没给值,则把表名赋给它
//Table_Name = str; //插入语句的头部
String SQL_STR_INSERT_HEADER = "insert into " + tableName + "(";
//根据类型创建一个空的实体model
object obj = Activator.CreateInstance(type);
//获取所有为Public的字段和实例成员(如果有的话)
PropertyInfo[] props = type.GetProperties(BindingFlags.Public | BindingFlags.Instance);
//遍历每一个字段
foreach (PropertyInfo p in props)
{
if (p.GetValue(md, null) != null)
{
if (p.Name.ToLower() != "id")
{
//返回传入的实体中此(P)字段的值,如果此值不为空,则进入if方法体内
if (p.GetValue(md, null).ToString().Trim().Length > )
{
SQL_STR_INSERT_FIELDS = SQL_STR_INSERT_FIELDS
//将字段名比数据库字段名多的部分替换掉
//.Replace(Common_Prefix.ToLower().ToString(), "")
+ p.Name.ToLower().ToString() + ",";
SQL_STR_INSERT_VALUES = SQL_STR_INSERT_VALUES + "', '"
+ p.GetValue(md, null).ToString().Trim();
}
}
}
}
//
if (SQL_STR_INSERT_FIELDS.ToString().Trim().Length > )
{
SQL_STR = SQL_STR_INSERT_HEADER
+ SQL_STR_INSERT_FIELDS.Substring(, SQL_STR_INSERT_FIELDS.Length - )
+ ")values(" + SQL_STR_INSERT_VALUES.Substring(, SQL_STR_INSERT_VALUES.Length - )
+ "');";
}
return SQL_STR;
} public static String SqlInsertBuilder(DataSet Ds)
{
DataTable dt = new DataTable();
if (Ds != null)
{
if (Ds.Tables.Count > )
{
dt = Ds.Tables[];
}
}
String SQL_STR_INSERT_HEADER = "insert into mytablename(";
string SQL_STR_INSERT_FIELDS = "";
string SQL_STR_INSERT_VALUES = "";
string SQL_STR = "";
if (dt.Rows.Count > )
{
SQL_STR = "";
foreach (DataRow dr in dt.Rows)
{
SQL_STR_INSERT_HEADER = "insert into mytablename(";
SQL_STR_INSERT_HEADER = SQL_STR_INSERT_HEADER.Replace("mytablename", Table_Name.ToString());
SQL_STR_INSERT_FIELDS = "";// SQL_STR_INSERT_FIELDS + dc.ColumnName.ToLower().ToString() + ",";
SQL_STR_INSERT_VALUES = "";//SQL_STR_INSERT_VALUES + "', '" + dr[dc.ColumnName].ToString().Trim();
foreach (DataColumn dc in dt.Columns)
{
if (dr[dc.ColumnName].ToString().Trim().Length > )
{
SQL_STR_INSERT_FIELDS = SQL_STR_INSERT_FIELDS
+ dc.ColumnName.ToLower().ToString() + ",";
SQL_STR_INSERT_VALUES = SQL_STR_INSERT_VALUES
+ "', '" + dr[dc.ColumnName].ToString().Trim();
}
}
if (SQL_STR_INSERT_FIELDS.ToString().Trim().Length > )
{
SQL_STR = SQL_STR + SQL_STR_INSERT_HEADER
+ SQL_STR_INSERT_FIELDS.Substring(, SQL_STR_INSERT_FIELDS.Length - )
+ ")values(" + SQL_STR_INSERT_VALUES.Substring(, SQL_STR_INSERT_VALUES.Length - )
+ "');";
}
}
}
return SQL_STR;
} public static String SqlInsertBuilder(DataTable dt)
{
String SQL_STR_INSERT_HEADER = "insert into mytablename(";
string SQL_STR_INSERT_FIELDS = "";
string SQL_STR_INSERT_VALUES = "";
string SQL_STR = "";
if (dt.Rows.Count > )
{
SQL_STR = "";
foreach (DataRow dr in dt.Rows)
{
SQL_STR_INSERT_HEADER = "insert into mytablename(";
SQL_STR_INSERT_HEADER = SQL_STR_INSERT_HEADER.Replace("mytablename", Table_Name.ToString());
SQL_STR_INSERT_FIELDS = "";
SQL_STR_INSERT_VALUES = "";
foreach (DataColumn dc in dt.Columns)
{
if (dr[dc.ColumnName].ToString().Trim().Length > )
{
SQL_STR_INSERT_FIELDS = SQL_STR_INSERT_FIELDS
+ dc.ColumnName.ToLower().ToString() + ",";
SQL_STR_INSERT_VALUES = SQL_STR_INSERT_VALUES
+ "', '" + dr[dc.ColumnName].ToString().Trim();
}
}
if (SQL_STR_INSERT_FIELDS.ToString().Trim().Length > )
{
SQL_STR = SQL_STR + SQL_STR_INSERT_HEADER
+ SQL_STR_INSERT_FIELDS.Substring(, SQL_STR_INSERT_FIELDS.Length - )
+ ")values(" + SQL_STR_INSERT_VALUES.Substring(, SQL_STR_INSERT_VALUES.Length - )
+ "');";
}
}
}
return SQL_STR;
}
根据Model有值的自动生成添加的Sql语句的更多相关文章
- C#——反射,自动生成添加的SQL语句
C#中的反射.是C#中特别重要也是特别神奇的特性,对后面学习框架,了解框架的原理.以及自己写框架,都是必不可少的.学习反射的过程中.总给我一种茅塞顿开的感觉,以前不懂的,现在懂了 反射的介绍:http ...
- IT咨询顾问:一次吐血的项目救火 java或判断优化小技巧 asp.net core Session的测试使用心得 【.NET架构】BIM软件架构02:Web管控平台后台架构 NetCore入门篇:(十一)NetCore项目读取配置文件appsettings.json 使用LINQ生成Where的SQL语句 js_jquery_创建cookie有效期问题_时区问题
IT咨询顾问:一次吐血的项目救火 年后的一个合作公司上线了一个子业务系统,对接公司内部的单点系统.我收到该公司的技术咨询:项目启动后没有规律的突然无法登录了,重新启动后,登录一断时间后又无法重新登 ...
- 使用LINQ生成Where的SQL语句
实例1-使用实例-单个语句: ; List<, , }; List<User_info> userInfoList = UserCenterBus.Select_WebSiteBas ...
- LinqToDB 源码分析——生成与执行SQL语句
生成SQL语句的功能可以算是LinqToDB框架的最后一步.从上一章中我们可以知道处理完表达式树之后,相关生成SQL信息会被保存在一个叫SelectQuery类的实例.有了这个实例我们就可以生成对应的 ...
- 智能SQL优化工具--SQL Optimizer for SQL Server(帮助提升数据库应用程序性能,最大程度地自动优化你的SQL语句 )
SQL Optimizer for SQL Server 帮助提升数据库应用程序性能,最大程度地自动优化你的SQL语句 SQL Optimizer for SQL Server 让 SQL Serve ...
- Python 一键拉取Git分支源码自动解析并执行SQL语句
基于Python实现自动拉取Git分支源码自动解析并执行SQL语句 by:授客 QQ:1033553122 1.代码用途 开发过程中,研发人员会提交SQL更新脚本到Git源码库,然后测试负责去拉取这些 ...
- ADO.NET 根据实体类自动生成添加修改语句仅限Oracle使用
话不多说直接上代码,新手上路,高手路过勿喷,请多多指教. /// <summary> /// 等于号 /// </summary> ) + Convert.ToChar() + ...
- Oracle 自动生成hive建表语句
从 oracle 数据库导数到到 hive 大数据平台,需要按照大数据平台的数据规范,重新生成建表的 SQL 语句,方便其间,写了一个自动生成SQL的存储过程. ① 创建一张表,用来存储源表的结构,以 ...
- php如何妩媚地生成执行的sql语句
会不会碰到这样一种情况呢?每次获取数据将数据和历史版本都有一定的差别,然而用ThinkPHP的addAll()函数,却会将已有的数据删掉再重新写入.这明显不是我们想要的.但自己写sql每次几十个字段也 ...
随机推荐
- Memcached安装,操作,用C#操作
本文来自:http://li19910722.blog.163.com/blog/static/136856822201406103313163/ 1:安装 下载Memcache:http://cod ...
- 出现security ioError 安全沙箱问题
client安全沙箱 通配策略 crossdomain <?xml version="1.0" encoding="UTF-8"?> <!DO ...
- 牵一发动全身【Nhibernate基本映射】
用牵一发动全身来形容Nhibernate的映射,一点都不夸张.小小的属性的修改,决定了整个Nhibernate的执行动态.以下让我们来详细了解一下,通过回想我们在上篇文章中用到的配置文件,做一个对xm ...
- c-version:null]] could not deserialize the servlet-context scoped attribute with name: "MENU_LIST"
<Jul 26, 2013 10:45:02 AM CST> <Error> <HTTP> <BEA-101362> <[ServletConte ...
- 计算机与ARM板通过路由器相连
首先,使用两根网线分别将计算机和ARM板与路由器的LAN口连接. 要想使计算机和ARM板通信,必须使二者在同一网段. 在计算机的终端输入:ifconfig 获取计算机的ip地址,查看eth0,我的ip ...
- android——生成或者下载的图片在相册中找不到
今天在写程序的时候,遇到了一个问题,就是生成的图片一直都不能在相册中显示出来,而且,就连通过发送Intent过去,都找不到.通过在网上搜索,发现了一个很好的方法. Intent intent = ne ...
- OS X EI Capitan 安装mysql-5.7.9
先去下载mysql-5.7.9-osx10.9-x86_64.dmg安装(一直下一步,输入密码即可)mysql-5.7.9-osx10.9-x86_64.pkg好了,启动MySQL服务. Untitl ...
- mac版gif格式录屏工具下载和使用
下载链接: http://pan.baidu.com/s/1geeRmtd 密码: rstv ps:如果失效可以联系发邮件至chenruichn@163.com联系我 [以下教程为转载]本帖最后由 S ...
- ios ColorLUT滤镜
通过这种方格图片实现滤镜 代码: "CIFilter+ColorLUT.h" "CIFilter+ColorLUT.m" #import "CIFil ...
- WindowsForm 流
流 包括输入流代码 输出流代码 流: 输入流: string filename = openFileDialog1.FileName; //通过读入流进行文件读取 StreamReader sr = ...