using System;
using System.Collections.Generic;
using System.Text; namespace MSCL
{
#region 使用示例
/*
List<Ftv> ftvlist = new List<Ftv>();
ftvlist.Add(new Ftv("ErrorDetail", "这是个错误"));
ftvlist.Add(new Ftv("ErrorFlag", "1"));
ftvlist.Add(new Ftv("ErrorRemark","这是个错误,我还没有处理"));
ftvlist.Add(new Ftv("ErrorTime", DateTime.Now.ToString()));
ftvlist.Add(new Ftv("OprationTime", DateTime.Now.ToString()));
//新增
string sql = MSCL.BuilderSql.InsertSql("AFM_SysLog", ftvlist);
MSCL.SqlHelper.ExecSql(sql);
//修改
string sql = MSCL.BuilderSql.UpdateSql("AFM_SysLog", ftvlist, "where ErrorID=166");
MSCL.SqlHelper.ExecSql(sql);
//删除
string sql = MSCL.BuilderSql.DeleteSql("AFM_SysLog", "where ErrorID=166");
MSCL.SqlHelper.ExecSql(sql);
*/
#endregion #region 数据表字段类
/// <summary>
/// 数据表字段类
/// </summary>
public class Ftv
{
/// <summary>
/// 字段容器
/// </summary>
/// <param name="fieldName">字段名</param>
/// <param name="fieldValue">字段值</param>
/// <param name="isNum">是否数字字段</param>
public Ftv(string fieldName, string fieldValue, bool isNum)
{
this.fieldName = fieldName;
this.fieldValue = fieldValue;
this.isNum = isNum;
} /// <summary>
/// 字段容器
/// </summary>
/// <param name="fieldName">字段名</param>
/// <param name="fieldValue">字段值</param>
public Ftv(string fieldName, string fieldValue)
{
this.fieldName = fieldName;
this.fieldValue = fieldValue;
} private string fieldName;
/// <summary>
/// 字段名
/// </summary>
public string FieldName
{
get { return fieldName; }
set { fieldName = value; }
} private bool isNum = false;
/// <summary>
/// 是否数字
/// </summary>
public bool IsNum
{
get { return isNum; }
set { isNum = value; }
} private string fieldValue;
/// <summary>
/// 字段值
/// </summary>
public string FieldValue
{
get { return fieldValue; }
set { fieldValue = value; }
}
}
#endregion #region SQL语句的构造类
/// <summary>
/// SQL语句的构造类
/// </summary>
public class BuilderSql
{ /// <summary>
/// 构造新增Insert语句
/// </summary>
/// <param name="tableName">表名</param>
/// <param name="ftvlist">字段list</param>
/// <returns></returns>
public static string InsertSql(string tableName, List<Ftv> ftvlist)
{
StringBuilder sb = new StringBuilder();
sb.Append(" insert into ");
sb.Append(tableName);
sb.Append("(");
for (int i = 0; i < ftvlist.Count; i++)
{
Ftv ftv = (Ftv)ftvlist[i];
if (i != ftvlist.Count - 1)
{
sb.Append(ftv.FieldName + ",");
}
else
{
sb.Append(ftv.FieldName);
}
}
sb.Append(") values(");
for (int i = 0; i < ftvlist.Count; i++)
{
Ftv ftv = (Ftv)ftvlist[i];
if (ftv.IsNum)
{
if (i != ftvlist.Count - 1)
{
sb.Append(ftv.FieldValue + ",");
}
else
{
sb.Append(ftv.FieldValue);
}
}
else
{
if (i != ftvlist.Count - 1)
{
sb.Append("'" + ftv.FieldValue + "',");
}
else
{
sb.Append("'" + ftv.FieldValue + "'");
}
}
}
sb.Append(")");
return sb.ToString();
} /// <summary>
/// 构造更新Update语句
/// </summary>
/// <param name="tableName">表名</param>
/// <param name="ftvlist">字段list</param>
/// <param name="whereCondition">条件带where</param>
/// <returns></returns>
public static string UpdateSql(string tableName, List<Ftv> ftvlist, string whereCondition)
{
StringBuilder sb = new StringBuilder();
sb.Append(" update ");
sb.Append(tableName);
sb.Append(" set");
for (int i = 0; i < ftvlist.Count; i++)
{
Ftv ftv = (Ftv)ftvlist[i];
if (i != ftvlist.Count - 1)
{
if (ftv.IsNum)
{
sb.Append(" " + ftv.FieldName + "=" + ftv.FieldValue + ",");
}
else
{
sb.Append(" " + ftv.FieldName + "='" + ftv.FieldValue + "',");
}
}
else
{
if (ftv.IsNum)
{
sb.Append(" " + ftv.FieldName + "=" + ftv.FieldValue + "");
}
else
{
sb.Append(" " + ftv.FieldName + "='" + ftv.FieldValue + "'");
}
}
}
sb.Append(" " + whereCondition);
return sb.ToString();
} /// <summary>
/// 构造删除Delete语句
/// </summary>
/// <param name="tableName">表名</param>
/// <param name="whereCondition">条件带where</param>
/// <returns></returns>
public static string DeleteSql(string tableName, string whereCondition)
{
StringBuilder sb = new StringBuilder();
sb.Append(" delete from ");
sb.Append(tableName);
sb.Append(" " + whereCondition);
return sb.ToString();
} /// <summary>
/// 构造Select语句
/// </summary>
/// <param name="tableName">表名或视图名</param>
/// <param name="whereCondition">条件带where</param>
/// <returns></returns>
public static string SelectSql(string tableName, string whereCondition)
{
StringBuilder sb = new StringBuilder();
sb.Append(" select * from ");
sb.Append(tableName);
sb.Append(" " + whereCondition);
return sb.ToString();
} /// <summary>
/// 构造Select语句
/// </summary>
/// <param name="tableName">表名或视图名</param>
/// <param name="fieldString">字段名 例 name,sex,age,(pay1+pay2) as totalpay</param>
/// <param name="whereCondition">条件带where</param>
/// <returns></returns>
public static string SelectSql(string tableName, string fieldString, string whereCondition)
{
StringBuilder sb = new StringBuilder();
sb.Append(" select " + fieldString + " from ");
sb.Append(tableName);
sb.Append(" " + whereCondition);
return sb.ToString();
}
}
#endregion
}

Sql语句构造类,多字段新增或修改时,拼装sql语句比较方便的更多相关文章

  1. Ibatis动态拼装sql,常用标签总结及举栗子。

    今天得到项目经理一项任务,就是拼装sql,第一次见到,不是太懂,赶紧回来睡一觉再说,由于这次的项目orm使用的是ibatis框架,所以需要使用动态拼装sql,或者是ognl语言,这门语言不是专属于ib ...

  2. 单档——PK单号新增、修改时不允许编辑,PK单号自动生成

    由系统自动生成单号(日期+流水),用户新增.修改时不允许编辑单号: 范例(cxmt631): 1)在#单头栏位开启设定#中,即 cxmt631_set_entry(p_cmd)下: #add-poin ...

  3. editplus 替换换行 excel 表格 拼装sql语句技巧

    这样的数据 放到sql中的in 语句中的时候格式需要换行  加上‘,’这样的内容. 操作内容: 用editplus 进行操作.Ctrl+H    查找的地方输入 \n  ,替换的地方填写 ','   ...

  4. SQL Server 2012 新特性:新增和修改函数

    转换函数      1.PARSE      Parse是把字符串类型转化为想要的类型,看看和convert和cast的区别         SELECT PARSE ('2.111111' AS f ...

  5. 一段拼装sql的小代码

    /** * 单表查询 * * className:实体类的名字 * vals:查询的属性 * pNames:条件的名字 * pVals:条件的值 */ @Override public List< ...

  6. js对象数组新增、修改时的验证是否重复的逻辑

    JS代码: // 定义数据集合 const persons = [ { id: 1, name: '张三' }, { id: 2, name: '李四' } ] console.log('') con ...

  7. sql 操作常用操作语句 新增、修改字段等

    常用sql --sql 事务 BEGIN TRAN 事物名 )BEGIN ROLLBACK TRAN 事物名;RETURN;END COMMIT TRAN 事物名 --数据库清缓存 DBCC DROP ...

  8. 转sql server新增、修改字段语句(整理)

    添加字段的SQL语句的写法: 通用式: alter table [表名] add [字段名] 字段属性 default 缺省值 default 是可选参数增加字段: alter table [表名] ...

  9. 统计某一字段等于不同值的个数的sql语句(分享)

    本文介绍下,用一条sql语句统计某一字段等于不同值的个数,方法很独特,有需要的朋友参考下. 表t,数据:  id      type001     1001     0002     1001     ...

随机推荐

  1. MIT6.828课程JOS在macOS下的环境配置

    本文将介绍如何在macOS下配置MIT6.828 JOS实验的环境. 写JOS之前,在网上搜寻JOS的开发环境,很多博客和文章都提到"不是32位linux就不好配置,会浪费大量时间在配置环境 ...

  2. 【★】SPF(Dijkstra)算法完美教程

  3. 团队作业7——Alpha冲刺之事后诸葛亮

    Deadline: 2017-5-15 22:00PM,以博客发表日期为准 评分基准: 按时交 - 有分,检查的项目内容为事后诸葛亮分析报告 晚交 - 0分 迟交一周以上 - 倒扣本次作业分数 抄袭 ...

  4. java课程设计--We Talk(201521123061)

    java课程设计--We Talk(201521123061) 团队博客链接:http://www.cnblogs.com/slickghost/ 数据库 一.通过Dao模式建立与数据库的连接 1.数 ...

  5. 201521123025《JAVA程序设计》第6周学习总结

    1. 本章学习总结 2. 书面作业 Q1.clone方法 1.1Object对象中的clone方法是被protected修饰,在自定义的类中覆盖clone方法时需要注意什么? 要克隆对象要覆盖clon ...

  6. 201521123056 《Java程序设计》第3周学习总结

    1. 本周学习总结 -本周学习了面向对象,学会了如何用Eclipse自动生成setter/getter/toString以及构造有参函数等 2. 书面作业 1.代码阅读 public class Te ...

  7. 201521123085 《Java程序设计》 第3周学习总结

    1. 本周学习总结 2. 书面作业 1.代码阅读 public class Test1 { private int i = 1;//这行不能修改 private static int j = 2; p ...

  8. (转载)Oracle12g安装图解与安装过程常见问题注意事项

    首附转载地址:http://jingyan.baidu.com/article/f96699bbab21c0894e3c1bf8.html 首先,点击"setup",建议以管理员身 ...

  9. Activiti第二篇【管理流程定义、执行任务和流程实例、流程变量】

    上篇Activiti只是一个快速入门案例,这篇就讲定义.部署.查看任务等等的一些细节[涉及到的数据库表.对象等等]- 管理流程定义 管理流程定义主要涉及到以下的4张表: -- 流程部署相关的表 SEL ...

  10. Hibernate第十二篇【二级缓存介绍、缓存策略、查询缓存、集合缓存】

    Hibernate二级缓存介绍 前面我们已经讲解过了一级缓存,一级缓存也就是Session缓存,只在Session的范围内有效-作用时间就在Session的作用域中,范围比较小 Hibernate为我 ...