zoukankan      html  css  js  c++  java
  • 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()));
            }

  • 相关阅读:
    SQL注入与防范
    JDCP连接池连接数据库报错:java.lang.AbstractMethodError: com.mysql.jdbc.Connection.isValid(I)Z
    数据库连接池(基于MySQL数据库)
    使用JDBC连接MySQL数据库的一个基本案例
    快速排序的java实现
    在C++的函数中如何指定一个数组,使得这个数组的大小由函数的输入值来决定
    WORD2010如何把全角字母和数字批量转换成半角
    地图安卓
    浅谈java异常[Exception]
    Adapter的getView
  • 原文地址:https://www.cnblogs.com/lori/p/2227796.html
Copyright © 2011-2022 走看看