| | |
| | | { |
| | | public class ModelDAL |
| | | { |
| | | /// <summary> |
| | | /// 获取参数列表 |
| | | /// </summary> |
| | | public static SQLiteParameter[] GetParams<T>(string sql, T t) |
| | | public static List<Model> SelectByPage(string name, int pageSize = 10, int pageIndex = 1) |
| | | { |
| | | List<SQLiteParameter> list = new List<SQLiteParameter>(); |
| | | Type tType = typeof(T); |
| | | BindingFlags flags = BindingFlags.Public | BindingFlags.IgnoreCase | BindingFlags.Instance; |
| | | bool flag = string.IsNullOrWhiteSpace(name); |
| | | string sql = string.Format("select * from model {0} order by id limit {1} offset {2}", flag ? "" : "where upper(name) like @name", pageSize, pageSize * (pageIndex - 1)); |
| | | |
| | | int start = sql.IndexOf("@"); |
| | | while (start != -1) |
| | | DataTable dt = flag ? SQLiteHelper.GetDataTable(sql) : SQLiteHelper.GetDataTable(sql, new SQLiteParameter("@name", "%" + name.Trim().ToUpper() + "%")); |
| | | if (null == dt || dt.Rows.Count == 0) |
| | | { |
| | | 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 null; |
| | | } |
| | | |
| | | return list.ToArray(); |
| | | List<Model> list = ModelHandler.FillModel<Model>(dt); |
| | | |
| | | return list; |
| | | } |
| | | |
| | | public static Model SelectById(long id) |
| | |
| | | return null == list || list.Count == 0 ? null : list[0]; |
| | | } |
| | | |
| | | public static int DeleteByIds(List<long> list) |
| | | public static int DeleteByIds(List<int> ids) |
| | | { |
| | | string ids = string.Join(",", list.ToArray()); |
| | | string sql = string.Format("delete from model where id in ({0})", ids); |
| | | string str = string.Join(",", ids.ToArray()); |
| | | string sql = string.Format("delete from model where id in ({0})", str); |
| | | |
| | | return SQLiteHelper.ExecuteNonQuery(sql); |
| | | } |
| | | |
| | | public static int insert(Model model) |
| | | public static int DelAll() |
| | | { |
| | | string sql = "insert into model (name, json) values (@name, @json)"; |
| | | SQLiteParameter[] sqlParams = GetParams<Model>(sql, model); |
| | | return SQLiteHelper.ExecuteNonQuery("delete from model"); |
| | | } |
| | | |
| | | return SQLiteHelper.ExecuteNonQuery(sql, sqlParams); |
| | | public static int Insert(Model model) |
| | | { |
| | | string sql = "insert into model (name, json) values (@name, @json); select last_insert_rowid();"; |
| | | SQLiteParameter[] sqlParams = Tools.GetSQLiteParams<Model>(sql, model); |
| | | |
| | | //return SQLiteHelper.ExecuteNonQuery(sql, sqlParams); |
| | | |
| | | object obj = SQLiteHelper.ExecuteScalar(sql, sqlParams); |
| | | |
| | | return null == obj ? 0 : Convert.ToInt32(obj); |
| | | } |
| | | |
| | | public static int UpdateById(Model model) |
| | | { |
| | | string sql = "update model set name = @name, json = @json where id = @id"; |
| | | SQLiteParameter[] sqlParams = GetParams<Model>(sql, model); |
| | | SQLiteParameter[] sqlParams = Tools.GetSQLiteParams<Model>(sql, model); |
| | | |
| | | return SQLiteHelper.ExecuteNonQuery(sql, sqlParams); |
| | | } |