文档章节

Sql语句构造类,多字段新增或修改时,拼装sql语句比较方便

深圳大道
 深圳大道
发布于 2016/12/29 15:38
字数 636
阅读 12
收藏 0
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
}

本文转载自:http://blog.csdn.net/smartsmile2012/article/details/16887643

深圳大道
粉丝 3
博文 877
码字总数 0
作品 0
深圳
架构师
私信 提问
EF Code First 更新数据库, 数据库迁移

1、EF Code First创建数据库 新建控制台应用程序Portal,通过程序包管理器控制台添加EntityFramework。 在程序包管理器控制台中执行以下语句,安装EntityFramework。 PM> Install-Package En...

随智阔
2014/06/16
243
0
Mybatis-Plus使用全解

前言 >之前写了《SpringBoot 第九章:Mybatis-plus的集成和使用》一文,只是简单的使用条件构造器列举了一些通用的CURD操作。本人也想写一篇通用的关于mybatis-plus的使用示例,一方面也让自...

oKong
2018/08/06
1K
1
写一个“特殊”的查询构造器 - (六、关联)

关联查询是关系型数据库典型的查询语句,根据两个或多个表中的列之间的关系,从这些表中查询数据。在 SQL 标准中使用 JOIN 和 ON 关键字来实现关联查询。 Join 子句 join 子句的构造并不难,...

MrQ被抢注了
2018/05/22
0
0
Mixin Messenger 源码解读 1 — — WCDB Swift

Mixin Messenger 早期采用 FMDB 后来切换至 WCDB 沿用至今,一直比较可靠稳定,这里分享一下使用心得和功能扩展。 关于 Mixin Messenger Mixin Messenger 是一个开源的端对端加密聊天软件,并...

农民伯伯
05/07
0
0
全新的PDO数据库操作类(仅适用Mysql)

 1年前,也差不多刚开博那会,分享过一个pdo的数据库操作类(可参见:http://www.cnblogs.com/hooray/archive/2011/06/30/2094743.html),与其说是类,其实就只是几个封装好的函数,整体略...

橘子红了呐
2017/11/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

一起来学Java8(三)——方法引用

在一起来学Java8(一)——函数式编程中有一个简单的函数式编程的例子: import java.util.function.Consumer;class Person { public static void sayHello(String name) { S...

猿敲月下码
22分钟前
11
0
读书笔记:深入理解ES6(十一)

第十一章 Promise与异步编程   Promise可以实现其他语言中类似Future和Deferred一样的功能,是另一种异步编程的选择,它既可以像事件和回调函数一样指定稍后执行的代码,也可以明确指示代码...

张森ZS
45分钟前
19
0
面试官,Java8 JVM内存结构变了,永久代到元空间

在文章《JVM之内存结构详解》中我们描述了Java7以前的JVM内存结构,但在Java8和以后版本中JVM的内存结构慢慢发生了变化。作为面试官如果你还不知道,那么面试过程中是不是有些露怯?作为面试...

程序新视界
53分钟前
28
0
Elasticsearch 实战(一) - 简介

官腔 Elasticsearch,分布式,高性能,高可用,可伸缩的搜索和分析系统 基本等于没说,咱们慢慢看 1 概述 百度:我们比如说想找寻任何的信息的时候,就会上百度去搜索一下,比如说找一部自己喜...

JavaEdge
58分钟前
23
0
【jQuery基础学习】11 jQuery性能简单优化

本文转载于:专业的前端网站➦【jQuery基础学习】11 jQuery性能简单优化 关于性能优化 合适的选择器 $("#id")会直接调用底层方法,所以这是最快的。如果这样不能直接找到,也可以用find方法继...

前端老手
今天
18
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部