把TSQL拿出来,做了一个封装,适用的所有表,更新有两种,普通更新和记数更新

看代码:这两个方法是写在DAL里的数据操作基类里的,只有它的子类可以用它,所以用protected做为限制

/// <summary>
        /// 通用更新方法
        /// </summary>
        /// <param name="tableName">表名</param>
        /// <param name="param">参数列表,奇数为字段,偶数为他前一奇数对应的值,索引0为要更新的主键,1为主键值</param>
        protected virtual void Update(string tableName, params object[] param)
        {
            StringBuilder sbSql = new StringBuilder();
            List<object> listParasm = new List<object>();
            listParasm.Add(param[0]);
            listParasm.Add(param[1]);
            int index = listParasm.Count;
            sbSql.AppendFormat("UPDATE [{0}] SET ", tableName);

if (index == 0)
            {
                return;
            }
            else
            {
                for (int i = 2; i < param.Count(); i += 2)
                {
                    if (param[index + 1].GetType() == typeof(string))
                        sbSql.AppendFormat("{{{0}}} = '{{{1}}}',", index, index + 1);
                    else
                        sbSql.AppendFormat("{{{0}}} = {{{1}}},", index, index + 1);
                    listParasm.Add(param[index]);
                    listParasm.Add(param[index + 1]);
                    index++;
                    index++;
                }

sbSql.Remove(sbSql.Length - 1, 1);//移除最后一个逗号
            }

sbSql.Append(" WHERE [{0}] = {1}");
            db.ExecuteCommand(sbSql.ToString(), listParasm.ToArray());
        }

/// <summary>
        ///  计数更新
        /// </summary>
        /// <param name="tableName">表名</param>
        /// <param name="param">参数列表,索引0为主键名,1表主键值,2为要计数的字段,3为增量</param>
        protected virtual void UpdateForCount(string tableName, params object[] param)
        {
            string sql = "update [{0}] set [{3}]=[{3}]+{4} where [{1}]={2}";
            List<object> listParasm = new List<object>
            {
                tableName,
                param[0],
                param[1],
                param[2],
                param[3],
            };
            db.ExecuteCommand(string.Format(sql, listParasm.ToArray()));
        }

MVC LINQ中用封装的TSQL通用更新方法的更多相关文章

  1. Java_jdbc 基础笔记之四 数据库连接 (通用更新方法)

    /** * 写一个通用的更新方法 包括 INSERT. DELETE.UPDATE * 使用工具类 * @param sql */ public void update(String sql){ Co ...

  2. EL表达式无法获取Spring MVC的Model封装好的数据解决方法

    1.在spring-mvc的配置文件中已经配置jsp的视图解析器 2.在Controller中使用Model的addAttribute方法添加属性name,msg 3.在jsp页面中使用${msg}取 ...

  3. asp.net mvc 自定义pager封装与优化

    asp.net mvc 自定义pager封装与优化 Intro 之前做了一个通用的分页组件,但是有些不足,从翻页事件和分页样式都融合在后台代码中,到翻页事件可以自定义,再到翻页和样式都和代码分离, 自 ...

  4. 更新xcode后插件失效问题——不针对特定版本的通用解决方法

    一.Xcode更新后插件失效的原理 1.每次更新Xcode后插件都会失效,其实插件都还在这个目录好好的躺着呢: ~/Library/Application Support/Developer/Shar ...

  5. ASP.NET MVC验证框架中关于属性标记的通用扩展方法

    http://www.cnblogs.com/wlb/archive/2009/12/01/1614209.html 之前写过一篇文章<ASP.NET MVC中的验证>,唯一的遗憾就是在使 ...

  6. 运用BeanUtils构建通用的查询 更新方法(个人拙作,不喜勿喷)

    ------------------------------------更新方法----------------------------------- public void update(Strin ...

  7. Entity Framework增删改之通用精简方法

    用EF用了好长一段时间了,从EF4.0的版本开始接触,感觉这个ORM不能说性能是最好的,但是我个人感觉功能实现以及和mvc的结合还是一个不错的企业级网站的解决方案,在此写个简易的通用扩展方法来方便大家 ...

  8. ASP.NET MVC 3 之表单和 HTML 辅助方法(摘抄)

    ——选自<ASP.NET MVC3 高级编程(第5章) 孙远帅 译> 第5章 表单和HTML辅助方法 本章内容简介: * 理解表单 * 如何利用HTML辅助方法 * 编辑和输入的辅助方法 ...

  9. MVC中view和controller相互传值的方法

    MVC项目中,在view层如果使用前台框架,框架中会有封装好的相互传值方法.但是,那些postdata[][]方法不一定能够满足功能需求,反而一些常用的传值方法可能会刚好解决它们的不足.总结如下: 一 ...

随机推荐

  1. iframe 处理

    import java.io.File; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org ...

  2. We're Hiring A Software Tester

    测试人员的基本修养: 代码编写,不可或缺 乔布斯说:Design is not just what it looks like and feel like,design is how it works ...

  3. 【转】Installing OpenCV on Debian Linux

    In this post I will describe the process of installing OpenCV(both versions 2.4.2 and 2.4.3) on Debi ...

  4. eclipse svn安装

    SVN插件下载地址及更新地址,你根据需要选择你需要的版本.现在最新是1.8.x Links for 1.8.x Release: Eclipse update site URL: http://sub ...

  5. HDU 1117 免费馅饼 二维动态规划

    思路:a[i][j]表示j秒在i位置的数目,dp[i][j]表示j秒在i位置最大可以收到的数目. 转移方程:d[i][j]=max(dp[i-1][j],dp[i-1][j-1],dp[i-1][j+ ...

  6. normalization归一化

    简单的举个例子:一张表有两个变量,一个是体重kg,一个是身高cm.假设一般情况下体重这个变量均值为60(kg),身高均值为170(cm).1,这两个变量对应的单位不一样,同样是100,对于身高来说很矮 ...

  7. A Tour of Go Struct Fields

    Struct fields are accessed using a dot. package main import "fmt" type Vertex struct { X i ...

  8. Mozilla NPAPI开发示例之一(VS2012 + Win7(64位))

    入门级的NPAPI开发. NPAPI & NPRuntime 简介 Netscape Plugin Application Programming Interface (NPAPI) NPAP ...

  9. 8-14-Exercise(博弈:HDU 1846 & HDU 1527 )

    B.HDU 1846    Brave Game 算是最简单的入门博弈题吧...... 呃......我用的......算是不是方法的方法吧——找规律~ 可以发现:X-M为奇数时,先手会输:而为偶数的 ...

  10. http 2.0

    http2.0  待学习整理 http://www.zhihu.com/question/34074946