• MVC LINQ中用封装的TSQL通用更新方法


    今天用LINQ的update出现问题了,LINQ的BUG不少,呵呵,所以自己把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()));
            }

  • 相关阅读:
    2017-2018-1 20155204 《信息安全系统设计基础》第七周学习总结
    2017-2018-1 20155203 20155204 实验二 固件程序设计
    2017-2018-1 20155204 《信息安全系统设计基础》第六周学习总结
    20155204《信息安全系统设计》第六周课下作业:缓冲区溢出漏洞实验
    《信息安全技术》实验2——Windows口令破解
    2017-2018-1 20155204 《信息安全系统设计基础》第五周学习总结
    实现mypwd
    2017-2018-1 20155331 《信息安全系统设计基础》第九周学习总结
    2017-2018-1 20155331 《信息安全系统设计基础》第八周课堂测试
    2017-2018-1 20155331 《信息安全系统设计基础》第八周学习总结
  • 原文地址:https://www.cnblogs.com/lori/p/2227796.html
Copyright © 2020-2023  润新知