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. IPv4子网掩码回顾

    子网掩码的介绍: IP协议标准规定:每一个使用子网的节点都选择一个32位的位模式,若位模式中的某位置为1,则对应IP地址中的某位就为网络地址(包括网络部分和子网号)中的一位:若位模式中的某位置0,则对 ...

  2. 结对作业-基于GUI的四则运算

    一.需求分析 1.题目要求: 我们在个人作业1中,用各种语言实现了一个命令行的四则运算小程序.进一步,本次要求把这个程序做成GUI(可以是Windows PC 上的,也可以是Mac.Linux,web ...

  3. 201521123059 《Java程序设计》第七周学习总结

    1. 本周学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 参考资料: XMind 2. 书面作业 Q1: ArrayList代码分析 1.1 解释ArrayList的contains ...

  4. 201521123097《Java程序设计》第三周学习总结

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

  5. 201521123112《Java程序设计》第1周学习总结

    1.本周学习总结 本周通过面授课和上机课,以及在课后通过对<Java学习笔记>前一二章的阅读,初步了解了Java在计算机领域中的重要性,以及Java为什么能够这么广泛的运用在编程中.通过上 ...

  6. 201521123038 《Java程序设计》 第十周学习总结

    201521123038 <Java程序设计> 第十周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 2. 书面作业 本次PTA作业题 ...

  7. 201521123078 《java程序设计》第十周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 创建线程:定义Thread的子类可以实现Runable接口 线程的控制:线程暂停Thread.sleep() ...

  8. 201521123085《Java程序设计》第10周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 2. 书面作业 本次PTA作业题集异常.多线程 finally 题目4-2 1.1 截图你的提交结果(出现学 ...

  9. 201521123015 《Java程序设计》第12周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student对象(属性:int id, String name,int age,doubl ...

  10. Spring Security研究(2)-高级web特性

    1, 添加 HTTP/HTTPS 信道安全 <http> <intercept-url pattern="/secure/**" access="ROL ...