using System.Collections.ObjectModel; using System.Data; using System.IO; using HMI.Core.Entity; using HMI.Core.Util; using HMI.ParameterManage.Entity; namespace HMI.ParameterManage.Model { public class SqlModel : NotifyBase { public SqlModel(string baseFolder) { string dbpath = Path.Combine(baseFolder, "ParameterManage.db"); if (!File.Exists(dbpath)) { SqliteHelper.CreateDatabase(dbpath); } SqliteHelper = new SqliteHelper(dbpath); SqliteHelper.ExecuteSql(@"CREATE TABLE IF NOT EXISTS product ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, isMaster INTEGER, parentId INTEGER, UNIQUE(name) ); CREATE TABLE IF NOT EXISTS parameter ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, value TEXT, unit TEXT, description TEXT, pGroup TEXT, productName TEXT, UNIQUE(productName,name) );"); } public SqliteHelper SqliteHelper { get; private set; } private ObservableCollection products; public ObservableCollection Products { get { return products; } set { Set(ref products, value); } } private ObservableCollection parameters; public ObservableCollection Parameters { get { return parameters; } set { Set(ref parameters, value); } } private ProductData selectedProduct; public ProductData SelectedProduct { get { return selectedProduct; } set { Set(ref selectedProduct, value); LoadParameters(); } } public void LoadProducts() { DataTable dt = SqliteHelper.GetDataTable("SELECT * FROM product ORDER BY id;"); ObservableCollection products = new ObservableCollection(); if (dt != null) { foreach (DataRow dr in dt.Rows) { var p = new ProductData { Id = dr["id"].ToString(), Name = dr["name"].ToString(), IsMaster = dr["isMaster"].ToString() == "1", ParentId = dr["parentId"].ToString(), }; products.Add(p); } } Products = products; } public void LoadParameters() { ObservableCollection parameters = new ObservableCollection(); if (SelectedProduct != null) { DataTable dt = SqliteHelper.GetDataTable($"SELECT * FROM parameter WHERE productName='{SelectedProduct.Name}' ORDER BY id;"); if (dt != null) { foreach (DataRow dr in dt.Rows) { var p = new ParameterData { Id = dr["id"].ToString(), Name = dr["name"].ToString(), Value = dr["value"].ToString(), Unit = dr["unit"].ToString(), Description = dr["description"].ToString(), PGroup = dr["pGroup"].ToString(), ProductName = dr["productName"].ToString(), }; parameters.Add(p); } } } Parameters = parameters; } } }