using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; namespace SQLite { public class DBTable : IDBTable where T : new() { public string TableName { get; private set; } private long freeID = 0; /// /// 每次获取,自动++ /// public long FreeID { get { return freeID++; } set { freeID = value; } } private string ddl; public string DDL { get { return ddl; } } public SQLiteHelper sqliteHelper; public DBTable() { TableName = SQLiteHelper.GetTableName(typeof(T)); ddl = SQLiteHelper.GetCreateTableCommandText(typeof(T)); } public void Init(SQLiteHelper sQLiteHelper) { sqliteHelper = sQLiteHelper; } public void Create() { sqliteHelper.ExecuteNonQuery(ddl);// SQLiteHelper.GetCreateTableCommandText(typeof(T)));//, ArrayFieldTypeInfos.ToArray())); } public void Add(T t) { sqliteHelper.ExecuteNonQuery(SQLiteHelper.GetInsertCommandText(t)); } public void Update(T t, string condition) { sqliteHelper.ExecuteNonQuery(SQLiteHelper.GetUpdateCommandText(t, condition)); } public bool AddRange(IEnumerable array) { List querys = new List(); foreach (T t in array) { querys.Add(SQLiteHelper.GetInsertCommandText(t)); } return sqliteHelper.QueryTran(querys); } public List Find(string condition) { string sql = $"SELECT * FROM {TableName}"; if (!string.IsNullOrEmpty(condition)) sql += " " + condition; DataTable dataTable = sqliteHelper.ExecuteReader(sql); return SQLiteHelper.ToObjs(dataTable); } /// /// 获取最后N行数据 /// /// /// public List Last(int count) { return Find($"LIMIT (SELECT COUNT()-{count} FROM {TableName}),{count}"); } /// /// 获取前面N行数据 /// /// /// public List First(int count) { return Find($"LIMIT {count}"); } public void Remove() { } } }