c#数据库领域模型操作类

概括:

添加数据到表:int row = new DBModel(表名).Add(数据);

删除数据:int row = new DBModel(表名).Where(where sql语句).Param(参数).Delete();

更改数据:int row = new DBModel(表名).Where(where sql语句).Param(参数).Update();

查询数据:DataTable dt = new DBModel(表名).Where(where sql语句).Param(参数).Find();

  DataRow dr = new DBModel(表名).Where(where sql语句).Param(参数).FindOne();

  Object obj = new DBModel(表名).Where(where sql语句).Param(参数).FindFiled(字段名);

 DataTable dt = new DBModel(__TS__表名1).Join(__TS__表名2 join sql语句).Where(where sql语句).Param(参数).Find();

该类实现借鉴领域模型,只实现了其中对数据操作的部分,对表的映射因为简单的项目中使用少,而且项目时间要求比较紧,就没有实现。支持链式操作,更加贴近自然语言使用习惯,使sql操作使用更加简单,以上示例中的参数不一定全部需要,根据需要选择需要的参数,可以实现大部分的sql操作,只需要一句代码,不需要写复杂的sql语句,包括简单的连表、分页等等。

一、数据库连接查询类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Configuration;
using System.Data.SqlClient;
using System.Data;

namespace EditorOnline.Util
{
    public class DBService
    {
        private static String tableSuffix = ConfigurationManager.AppSettings["tableSuffix"];
        private static String connectionString = ConfigurationManager.AppSettings["ConnectionString"];

        public const String tableSuffixTag = "__TS__";

        public static String GetTableSuffix()
        {
            //tableSuffix = "e1_";
            //connectionString = @"server=np:\\.\pipe\LOCALDB#E2DA15A0\tsql\query;database=DB1;Integrated Security=True";
            return tableSuffix;
        }

        public static String getTableName(String tableName)
        {
            return tableSuffix + tableName;
        }

        public static void setConnectionString(String _connectionString)
        {
            connectionString = _connectionString;
        }

        /// <summary>
        /// 将sql中表名前缀换为真实前缀
        /// </summary>
        /// <param name="sql"></param>
        /// <returns></returns>
        public static String ReplaceTS(String sql)
        {
            sql = sql.Replace(tableSuffixTag, tableSuffix);
            return sql;
        }

        /// <summary>
        /// 执行SQL语句,返回影响的记录数
        /// </summary>
        /// <param name="SQLString">SQL语句</param>
        /// <returns>影响的记录数</returns>
        public static int ExecuteUpdate(string SQLString)
        {
            SQLString = ReplaceTS(SQLString);
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                using (SqlCommand cmd = new SqlCommand(SQLString, connection))
                {
                    try
                    {
                        connection.Open();
                        int rows = cmd.ExecuteNonQuery();
                        return rows;
                    }
                    catch (System.Data.SqlClient.SqlException E)
                    {
                        connection.Close();
                        throw new Exception(E.Message);
                    }
                }
            }
        }

        /// <summary>
        /// 执行SQL语句,返回影响的记录数
        /// </summary>
        /// <param name="SQLString">SQL语句</param>
        /// <returns>影响的记录数</returns>
        public static int ExecuteUpdate(string SQLString, params SqlParameter[] cmdParms)
        {
            SQLString = ReplaceTS(SQLString);
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                using (SqlCommand cmd = new SqlCommand())
                {
                    try
                    {
                        PrepareCommand(cmd, connection, null, SQLString, cmdParms);
                        int rows = cmd.ExecuteNonQuery();
                        cmd.Parameters.Clear();
                        return rows;
                    }
                    catch (System.Data.SqlClient.SqlException E)
                    {
                        throw new Exception(E.Message);
                    }
                }
            }
        }

        /// <summary>
        /// 执行查询语句,返回DataSet
        /// </summary>
        /// <param name="SQLString">查询语句</param>
        /// <returns>DataSet</returns>
        public static DataTable ExecuteQuery(string SQLString, params SqlParameter[] cmdParms)
        {
            SQLString = ReplaceTS(SQLString);
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                SqlCommand cmd = new SqlCommand();
                PrepareCommand(cmd, connection, null, SQLString, cmdParms);
                using (SqlDataAdapter da = new SqlDataAdapter(cmd))
                {
                    DataSet ds = new DataSet();
                    try
                    {
                        da.Fill(ds);
                        cmd.Parameters.Clear();
                        return ds.Tables[0];
                    }
                    catch (System.Data.SqlClient.SqlException ex)
                    {
                        throw new Exception(ex.Message);
                    }
                }
            }
        }

        /// <summary>
        /// 执行一条语句,返回第一条记录的第一列查询结果(object)。
        /// </summary>
        /// <param name="SQLString">计算查询结果语句</param>
        /// <returns>查询结果(object)</returns>
        public static object ExecuteQuerySingle(string SQLString, params SqlParameter[] cmdParms)
        {
            SQLString = ReplaceTS(SQLString);
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                using (SqlCommand cmd = new SqlCommand())
                {
                    try
                    {
                        PrepareCommand(cmd, connection, null, SQLString, cmdParms);
                        object obj = cmd.ExecuteScalar();
                        cmd.Parameters.Clear();
                        if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
                        {
                            return null;
                        }
                        else
                        {
                            return obj;
                        }
                    }
                    catch (System.Data.SqlClient.SqlException e)
                    {
                        throw new Exception(e.Message);
                    }
                }
            }
        }

        private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, string cmdText, SqlParameter[] cmdParms)
        {
            if (conn.State != ConnectionState.Open)
                conn.Open();
            cmd.Connection = conn;
            cmd.CommandText = cmdText;
            if (trans != null)
                cmd.Transaction = trans;
            cmd.CommandType = CommandType.Text;//cmdType;
            if (cmdParms != null)
            {
                foreach (SqlParameter parm in cmdParms)
                    cmd.Parameters.Add(parm);
            }
        }

        /// <summary>
        /// sql语句过滤
        /// </summary>
        /// <param name="sSql"></param>
        /// <returns></returns>
        public static String FilterSql(string sSql)
        {
            sSql = sSql.ToLower().Trim();
            sSql = sSql.Replace("exec", "");
            sSql = sSql.Replace("delete", "");
            sSql = sSql.Replace("master", "");
            sSql = sSql.Replace("truncate", "");
            sSql = sSql.Replace("declare", "");
            sSql = sSql.Replace("create", "");
            sSql = sSql.Replace("xp_", "no");
            sSql = sSql.Replace("'", "");
            return sSql;
        }
    }
}
二、数据库查询模型类,因为只是简单的项目,所以没有完全按照领域模型进行封装,如果需要可以自行进行实现,只是更新时自动获取主键

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.Collections;
using System.Collections.Specialized;

namespace EditorOnline.Util
{
    public class DBModel
    {
        /// <summary>
        /// 数据库表前缀
        /// </summary>
        public String tableSuffix { get; set; }

        /// <summary>
        /// 没有前缀的表
        /// </summary>
        private String[] notSuffixTables;

        /// <summary>
        /// 数据库表数组
        /// </summary>
        private String[] tables;

        /// <summary>
        /// 查询where条件
        /// </summary>
        private String whereSql = "";

        /// <summary>
        /// 分页页数
        /// </summary>
        private int page = 0;

        /// <summary>
        /// 分页长度
        /// </summary>
        private int pageLength = 0;

        /// <summary>
        /// 字段
        /// </summary>
        private String[] fields;

        /// <summary>
        /// 排序sql
        /// </summary>
        private String orderSql = "";

        /// <summary>
        /// join sql
        /// </summary>
        private String join = "";

        /// <summary>
        /// 预处理参数
        /// </summary>
        private Dictionary<String, Object> param;

        public String lastSql { get; set; }

        public DBModel()
        {
            this.tableSuffix = DBService.GetTableSuffix();
        }

        public DBModel(params String[] tables)
        {
            this.tableSuffix = DBService.GetTableSuffix();
            this.notSuffixTables = tables;
            this.tables = AddTableSuffix(tables);
        }

        /// <summary>
        /// 清除查询条件
        /// </summary>
        private void Remove()
        {
            this.whereSql = "";
            this.page = 0;
            this.pageLength = 0;
            this.fields = new String[]{};
            this.orderSql = "";
            this.join = "";
            this.param = null;
        }

        /// <summary>
        /// 多表时指定别名,格式为表名.别名,如user.u
        /// </summary>
        /// <param name="tables"></param>
        /// <returns></returns>
        public DBModel Table(params String[] tables)
        {
            this.notSuffixTables = tables;
            this.tables = AddTableSuffix(tables);
            return this;
        }

        public String[] AddTableSuffix(String[] tables)
        {
            int i = 0;
            foreach(String table in tables)
            {
                tables[i] = tableSuffix + table;
                i++;
            }
            return tables;
        }

        /// <summary>
        /// sql where条件
        /// </summary>
        /// <param name="whereSql"></param>
        /// <returns></returns>
        public DBModel Where(String whereSql)
        {
            this.whereSql = whereSql;
            return this;
        }

        public DBModel Page(int page, int pageLength)
        {
            this.page = page;
            this.pageLength = pageLength;
            return this;
        }

        public DBModel Field(params String[] fields)
        {
            this.fields = fields;
            return this;
        }

        public DBModel OrderBy(String orderSql)
        {
            this.orderSql = orderSql;
            return this;
        }

        /// <summary>
        /// 自带where条件,继续join则继续调用Join
        /// </summary>
        /// <param name="join"></param>
        /// <returns></returns>
        public DBModel Join(String join)
        {
            this.join = join;
            return this;
        }

        /// <summary>
        /// 设置预处理参数
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        public DBModel Param(Dictionary<String, Object> param)
        {
            this.param = param;
            return this;
        }

        /// <summary>
        /// 返回字典类型键值组成的SqlParameter数组,并加上param中的dic
        /// </summary>
        /// <param name="dic"></param>
        /// <returns></returns>
        private SqlParameter[] GetSqlParameter(Dictionary<String, Object> dic)
        {
            int paramCount = 0;
            if (param != null)
            {
                paramCount = param.Count();
            }
            SqlParameter[] sqlParameterArray = new SqlParameter[dic.Count + paramCount];
            int i = 0;
            foreach(var item in dic)
            {
                SqlParameter sqlParameter = new SqlParameter(item.Key, item.Value);
                sqlParameterArray[i] = sqlParameter;
                i++;
            }
            if(paramCount > 0)
            {
                foreach(var item in param)
                {
                    SqlParameter sqlParameter = new SqlParameter(item.Key, item.Value);
                    sqlParameterArray[i] = sqlParameter;
                    i++;
                }
            }
            return sqlParameterArray;
        }

        /// <summary>
        /// dic中键与表中键一致,值对应相应的值
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="dic"></param>
        /// <returns></returns>
        public int ExecuteUpdate(String sql, Dictionary<String, Object> dic)
        {
            int row = DBService.ExecuteUpdate(sql, GetSqlParameter(dic));
            return row;
        }

        public DataTable ExecuteQuery(String sql, Dictionary<String, Object> dic)
        {
            DataTable dt = DBService.ExecuteQuery(sql, GetSqlParameter(dic));
            return dt;
        }

        /// <summary>
        /// 查询,没有dic,传递一个空dic进去
        /// </summary>
        /// <param name="sql"></param>
        /// <returns></returns>
        public DataTable ExecuteQuery(String sql)
        {
            DataTable dt = DBService.ExecuteQuery(sql, GetSqlParameter(new Dictionary<String, Object>()));
            return dt;
        }

        public Object ExecuteQuerySingle(String sql, Dictionary<String, Object> dic)
        {
            Object obj = DBService.ExecuteQuerySingle(sql, GetSqlParameter(dic));
            return obj;
        }

        public Object ExecuteQuerySingle(String sql)
        {
            Object obj = DBService.ExecuteQuerySingle(sql, GetSqlParameter(new Dictionary<String, Object>()));
            return obj;
        }

        /// <summary>
        /// 添加数据
        /// </summary>
        /// <param name="dic"></param>
        /// <returns></returns>
        public int Add(Dictionary<String, Object> dic)
        {
            String sql = SqlCreate.CreateAddSql(tables[0], dic);
            lastSql = sql;
            int row = ExecuteUpdate(sql, dic);
            return row;
        }

        /// <summary>
        /// 直接把post数组添加进数据库
        /// input name跟数据库数组一致
        /// </summary>
        /// <param name="postData"></param>
        /// <returns></returns>
        public int Add(NameValueCollection postData)
        {
            Dictionary<String, Object> dic = new Dictionary<String, Object>();
            foreach(String key in postData)
            {
                dic.Add(key, postData[key]);
            }
            int row = Add(dic);
            return row;
        }

        public static Dictionary<String, Object> GetDictionary(NameValueCollection postData)
        {
            Dictionary<String, Object> dic = new Dictionary<String, Object>();
            foreach (String key in postData)
            {
                dic.Add(key, postData[key]);
            }
            return dic;
        }

        /// <summary>
        /// 使用post值以及dic键值对添加数据到数据库
        /// </summary>
        /// <param name="postData"></param>
        /// <param name="dic"></param>
        /// <returns></returns>
        public int Add(NameValueCollection postData, Dictionary<String, Object> dic)
        {
            foreach (String key in postData)
            {
                dic.Add(key, postData[key]);
            }
            int row = Add(dic);
            return row;
        }

        public int Delete(Dictionary<String, Object> dic)
        {
            String where = SqlCreate.CreateWhereSql(whereSql, dic);
            String sql = String.Format("delete from {0} {1}", tables[0], where);
            int row = ExecuteUpdate(sql, dic);
            lastSql = sql;
            return row;
        }

        public int Delete()
        {
            String where = SqlCreate.CreateWhereSql(whereSql);
            String sql = "delete from " + tables[0] + " " + where;
            lastSql = sql;
            int row = DBService.ExecuteUpdate(sql);
            return row;
        }

        /// <summary>
        /// 获取表主键,没有返回空
        /// </summary>
        /// <param name="tableName"></param>
        /// <returns></returns>
        public String GetPKName(String tableName)
        {
            String sql = SqlCreate.CreatePKNameSql(tableName);
            lastSql = sql;
            DataTable dt = DBService.ExecuteQuery(sql);
            foreach(DataRow dr in dt.Rows)
            {
                return (String)dr["name"];
            }
            return "";
        }

        /// <summary>
        /// 更改表数据,主键可做为更改条件
        /// </summary>
        /// <param name="dic"></param>
        /// <returns></returns>
        public int Update(Dictionary<String, Object> dic)
        {
            String pkName = GetPKName(tables[0]);
            String pkWhere = SqlCreate.CreatePKWhere(pkName, dic);
            if(whereSql == "")
            {
                whereSql = pkWhere;
            }
            else
            {
                whereSql = pkWhere + " and " + whereSql;
            }
            dic.Remove(pkName);
            String updateSql = SqlCreate.CreateUpdateSql(dic);
            String where = SqlCreate.CreateWhereSql(whereSql);
            String sql = String.Format("update {0} set {1} {2}", tables[0], updateSql, where);
            lastSql = sql;
            int row = ExecuteUpdate(sql, dic);
            return row;
        }

        public static Dictionary<String, Object> GetDictionary(String key, Object value)
        {
            Dictionary<String, Object> dic = new Dictionary<string, object>();
            dic.Add(key, value);
            return dic;
        }

        /// <summary>
        /// 查找
        /// </summary>
        /// <returns></returns>
        public DataTable Find()
        {
            String fieldSql = SqlCreate.CreateFieldSql(fields);
            String tableSql = SqlCreate.CreateTableSql(tables);
            String selectSql = "";
            String where = SqlCreate.CreateWhereSql(whereSql);
            if (page != 0 && pageLength != 0)
            {
                selectSql = String.Format("select top {0} {1} from (select row_number() over(order by {2}) as ROW_ID, {3} from {4} {5} {6}) t where ROW_ID > {7}",
                    pageLength, fieldSql, orderSql, fieldSql, tableSql, join, where, (page - 1) * pageLength);
            }
            else
            {
                orderSql = SqlCreate.CreateOrderSql(orderSql);
                selectSql = String.Format("select {0} from {1} {2} {3} {4}", fieldSql, tableSql, join, where, orderSql);
            }
            lastSql = selectSql;
            DataTable dt = ExecuteQuery(selectSql);
            return dt;
        }

        public DataTable Find(Dictionary<String, Object> dic)
        {
            String fieldSql = SqlCreate.CreateFieldSql(fields);
            String tableSql = SqlCreate.CreateTableSql(tables);
            String where = SqlCreate.CreateWhereSql(whereSql, dic);
            String selectSql = "";
            if (page != 0 && pageLength != 0)
            {
                selectSql = String.Format("select top {0} {1} from (select row_number() over(order by {2}) as ROW_ID, {3} from {4} {5} {6}) t where ROW_ID > {7}",
                    pageLength,fieldSql, orderSql, fieldSql, tableSql, join, where, (page - 1) * pageLength);
            }
            else
            {
                orderSql = SqlCreate.CreateOrderSql(orderSql);
                selectSql = String.Format("select {0} from {1} {2} {3} {4}", fieldSql, tableSql, join, where, orderSql);
            }
            lastSql = selectSql;
            DataTable dt = ExecuteQuery(selectSql, dic);
            return dt;
        }

        public static Dictionary<String, Object> GetDictionary(String[] keyArray, Object[] valueArray)
        {
            Dictionary<String, Object> dic = new Dictionary<string, object>();
            for (int i = 0; i < keyArray.Length; i++ )
            {
                dic.Add(keyArray[i], valueArray[i]);
            }
            return dic;
        }

        public DataRow FindOne(Dictionary<String, Object> dic)
        {
            String fieldSql = SqlCreate.CreateFieldSql(fields);
            String tableSql = SqlCreate.CreateTableSql(tables);
            String where = SqlCreate.CreateWhereSql(whereSql, dic);
            String selectSql = String.Format("select {0} from {1} {2} {3}", fieldSql, tableSql, join, where);
            lastSql = selectSql;
            DataTable dt = ExecuteQuery(selectSql, dic);
            if(dt != null && dt.Rows.Count > 0)
            {
                return dt.Rows[0];
            }
            else
            {
                return null;
            }
        }

        public DataRow FindOne()
        {
            String fieldSql = SqlCreate.CreateFieldSql(fields);
            String tableSql = SqlCreate.CreateTableSql(tables);
            String where = SqlCreate.CreateWhereSql(whereSql);
            String selectSql = String.Format("select {0} from {1} {2} {3}", fieldSql, tableSql, join, where);
            lastSql = selectSql;
            DataTable dt = ExecuteQuery(selectSql);
            if (dt != null && dt.Rows.Count > 0)
            {
                return dt.Rows[0];
            }
            else
            {
                return null;
            }
        }

        public Object FindOneField(String field, Dictionary<String, Object> dic)
        {
            String tableSql = SqlCreate.CreateTableSql(tables);
            String where = SqlCreate.CreateWhereSql(whereSql, dic);
            String selectSql = String.Format("select {0} from {1} {2} {3}", field, tableSql, join, where);
            lastSql = selectSql;
            Object obj = ExecuteQuerySingle(selectSql, dic);
            return obj;
        }

        public Object FindOneField(String field)
        {
            String tableSql = SqlCreate.CreateTableSql(tables);
            String where = SqlCreate.CreateWhereSql(whereSql);
            String selectSql = String.Format("select {0} from {1} {2} {3}", field, tableSql, join, where);
            lastSql = selectSql;
            Object obj = ExecuteQuerySingle(selectSql);
            return obj;
        }

        /// <summary>
        /// 执行sql函数
        /// </summary>
        /// <param name="fuctionName"></param>
        /// <param name="dic"></param>
        /// <returns></returns>
        public Object Fuction(String fuctionName, Dictionary<String, Object> dic)
        {
            String fieldSql = SqlCreate.CreateFieldSql(fields);
            String tableSql = SqlCreate.CreateTableSql(tables);
            String where = SqlCreate.CreateWhereSql(whereSql, dic);
            String selectSql = String.Format("select {0}({1}) from {2} {3} {4}", fuctionName, fieldSql, tableSql, join, where);
            lastSql = selectSql;
            Object obj = ExecuteQuerySingle(selectSql, dic);
            return obj;
        }

        public Object Fuction(String fuctionName)
        {
            String fieldSql = SqlCreate.CreateFieldSql(fields);
            String tableSql = SqlCreate.CreateTableSql(tables);
            String where = SqlCreate.CreateWhereSql(whereSql);
            String selectSql = String.Format("select {0}({1}) from {2} {3} {4}", fuctionName, fieldSql, tableSql, join, where);
            lastSql = selectSql;
            Object obj = ExecuteQuerySingle(selectSql);
            return obj;
        }

        public int Count(Dictionary<String, Object> dic)
        {
            return (int)Fuction("count", dic);
        }

        public int Count()
        {
            return (int)Fuction("count");
        }

        public int Max(Dictionary<String, Object> dic)
        {
            return (int)Fuction("max", dic);
        }

        public int Max()
        {
            return (int)Fuction("max");
        }

        public int Min()
        {
            return (int)Fuction("min");
        }
    }
}

三、sql拼接类,SqlServer数据库,如果需要支持多个数据库,可以使用接口来实现

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Collections;

namespace EditorOnline.Util
{
    public class SqlCreate
    {
        /// <summary>
        /// 
        /// </summary>
        /// <param name="table"></param>
        /// <param name="dic"></param>
        /// <returns>insert into table (field1, field2,) values (@field1, @field2)</returns>
        public static String CreateAddSql(String table, Dictionary<String, Object> dic)
        {
            String keySql = "";
            String dataSql = "";
            int i = 0;
            foreach (var item in dic)
            {
                i++;
                if (i < dic.Count)
                {
                    keySql = keySql + item.Key + ", ";
                    dataSql = dataSql + "@" + item.Key + ", ";
                }
                else
                {
                    keySql = keySql + item.Key;
                    dataSql = dataSql + "@" + item.Key;
                }
            }
            String sql = "insert into " + table + " ( " + keySql + " ) " + "values" + " ( " + dataSql + " )";
            return sql;
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="fields"></param>
        /// <returns>table1, table2, table3</returns>
        public static String CreateFieldSql(String[] fields)
        {
            String fieldSql = "";
            if(fields == null || fields.Length == 0)
            {
                fieldSql = "*";
                return fieldSql;
            }
            int i = 0;
            foreach (String field in fields)
            {
                i++;
                if (i < fields.Length)
                {
                    fieldSql = fieldSql + field + ", ";
                }
                else
                {
                    fieldSql = fieldSql + field;
                }
            }
            return fieldSql;
        }

        public static String CreateTableSql(String[] tables)
        {
            String tableSql = "";
            int j = 0;
            foreach (String table in tables)
            {
                j++;
                if (j < tables.Length)
                {
                    tableSql = tableSql + table + ", ";
                }
                else
                {
                    tableSql = tableSql + table;
                }
            }
            return tableSql;
        }

        public static String CreateWhereSql(Dictionary<String, Object> dic)
        {
            String dicSql = "";
            int k = 0;
            foreach (var item in dic)
            {
                k++;
                if (k < dic.Count)
                {
                    dicSql = dicSql + item.Key + " = @" + item.Key + " and ";
                }
                else
                {
                    dicSql = dicSql + item.Key + " = @" + item.Key;
                }
            }
            return dicSql;
        }

        public static String CreateWhereSql(String where, Dictionary<String, Object> dic)
        {
            String dicSql = CreateWhereSql(dic);
            if(where == null || where == "")
            {
                return "where " + dicSql;
            }
            else
            {
                return "where " +  where + " and " + dicSql;
            }
        }

        public static String CreateWhereSql(String where)
        {
            if(where == null || where == "")
            {
                return "";
            }
            else
            {
                return "where " + where;
            }
        }

        public static String CreateOrderSql(String orderSql)
        {
            if(orderSql == null || orderSql == "")
            {
                return "";
            }
            else
            {
                return "order by " + orderSql;
            }
        }

        public static String CreatePKNameSql(String table)
        {
            return @"select c.name from sysindexes i join sysobjects o ON i.id = o.id join sysobjects pk ON i.name = pk.name AND pk.parent_obj = i.id AND pk.xtype = 'PK' join sysindexkeys ik on i.id = ik.id and i.indid = ik.indid join syscolumns c ON ik.id = c.id AND ik.colid = c.colid where o.name = '" + table + "' order by ik.keyno";
        }

        public static String CreatePKWhere(String pkName, Dictionary<String, Object> dic)
        {
            String pkValue = "";
            String pkWhere = "";
            if (pkName != "" && dic.ContainsKey(pkName))
            {
                //将主键做为更改条件
                //pkValue = (String)dic[pkName];
                //pkWhere = pkName + " = '" + pkValue + "'";
                pkWhere = pkName + " = '" + dic[pkName] + "'";
                return pkWhere;
            }
            return "";
        }

        public static String CreateUpdateSql(Dictionary<String, Object> dic)
        {
            String dicSql = "";
            int i = 0;
            foreach (var item in dic)
            {
                i++;
                if (i < dic.Count)
                {
                    dicSql = dicSql + item.Key + " = " + "@" + item.Key + ", ";
                }
                else
                {
                    dicSql = dicSql + item.Key + " = " + "@" + item.Key;
                }
            }
            return dicSql;
        }
    }
}

四、调用示例

1、管理员登陆

public static DataRow GetAdmin(String userNameOrEmail, String password)
        {
            Dictionary<String, object> dic = new Dictionary<string, object>();
            dic.Add("userEmail", userNameOrEmail);
            dic.Add("userName", userNameOrEmail);
            dic.Add("userPassword", password);
            DBModel dm = new DBModel("user");
            DataRow dr = dm.Where("userTypeId = '2' and userPassword = @userPassword and (userEmail = @userEmail or userName = @userName)").Param(dic).FindOne();
            return dr;
        }
2、获取资讯

public static DataTable GetNewsTable(int newsTypeId,String language,int page, int pagelength)
        {
            Dictionary<String, Object> dic = new Dictionary<string, object>();
            dic.Add("newsTypeId", newsTypeId);
            dic.Add("language", language);
            DBModel dm = new DBModel("news");
            DataTable dt = dm.OrderBy("newsId desc").Field("newsId", "newsTitle", "newsSummary", "pictureUrl").Where("status = '1' and addTime < getdate()").Page(page, pagelength).Find(dic);
            return dt;
        }

3、直接添加数据到表,post数组与表列一致

int row = new DBModel("navigationBar").Add(Request.Form);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值