using JiangSu.Models;
|
using System;
|
using System.Collections.Generic;
|
using System.Data;
|
using System.Data.SQLite;
|
using System.Linq;
|
using System.Reflection;
|
using System.Web;
|
|
namespace JiangSu.cs
|
{
|
public class ModelDAL
|
{
|
/// <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";
|
|
SQLiteParameter param = new SQLiteParameter("@id");
|
param.Value = id;
|
|
DataTable dt = SQLiteHelper.GetDataTable(sql, param);
|
if (null == dt || dt.Rows.Count == 0)
|
{
|
return null;
|
}
|
|
List<Model> list = ModelHandler.FillModel<Model>(dt);
|
|
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);
|
}
|
}
|
}
|