管道基础大数据平台系统开发-【CS】-ExportMap
13693261870
2023-12-22 4cc763706597d6ea82392f653333e33c31485b49
JiangSu/cs/ModelDAL.cs
@@ -4,13 +4,46 @@
using System.Data;
using System.Data.SQLite;
using System.Linq;
using System.Reflection;
using System.Web;
namespace JiangSu.cs
{
    public class ModelDAL
    {
        public static Model SelectById(int id)
        /// <summary>
        /// 获取参数列表
        /// </summary>
        public static SQLiteParameter[] GetParams<T>(string sql, T t)
        {
            List<SQLiteParameter> list = new List<SQLiteParameter>();
            Type tType = typeof(T);
            BindingFlags flags = BindingFlags.Public | BindingFlags.IgnoreCase | BindingFlags.Instance;
            int start = sql.IndexOf("@");
            while (start != -1)
            {
                int end = sql.IndexOf(",", start);
                if (end == -1) end = sql.IndexOf(")", start);
                if (end == -1) end = sql.IndexOf(" ", start);
                if (end == -1) end = sql.Length;
                string name = sql.Substring(start + 1, end - start - 1);
                PropertyInfo pi = tType.GetProperty(name, flags);
                if (pi != null)
                {
                    object value = pi.GetValue(t, null);
                    SQLiteParameter dp = new SQLiteParameter("@" + name, value);
                    list.Add(dp);
                }
                start = sql.IndexOf("@", end);
            }
            return list.ToArray();
        }
        public static Model SelectById(long id)
        {
            string sql = "select * from model where id = @id";
@@ -27,5 +60,29 @@
            return null == list || list.Count == 0 ? null : list[0];
        }
        public static int DeleteByIds(List<long> list)
        {
            string ids = string.Join(",", list.ToArray());
            string sql = string.Format("delete from model where id in ({0})", ids);
            return SQLiteHelper.ExecuteNonQuery(sql);
        }
        public static int insert(Model model)
        {
            string sql = "insert into model (name, json) values (@name, @json)";
            SQLiteParameter[] sqlParams = GetParams<Model>(sql, model);
            return SQLiteHelper.ExecuteNonQuery(sql, sqlParams);
        }
        public static int UpdateById(Model model)
        {
            string sql = "update model set name = @name, json = @json where id = @id";
            SQLiteParameter[] sqlParams = GetParams<Model>(sql, model);
            return SQLiteHelper.ExecuteNonQuery(sql, sqlParams);
        }
    }
}