using Dapper; using MySqlConnector; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace wpf_connection3 { public class DBDataProvider : IDataProvider { static string connectionString = "Server=kolei.ru; User ID=aleuhin; Password=101005; Database=aleuhin"; private Dictionary filters = new Dictionary(); public IEnumerable getProduct(int pageNum) { using (MySqlConnection db = new MySqlConnection(connectionString)) { var builder = new SqlBuilder(); if (orderCondition.Length > 0) builder.OrderBy(orderCondition); if (filters.Count > 0) { foreach (var item in filters) builder.Where(item.Key, item.Value); } // добавляем сортировку if (orderCondition.Length > 0) builder.OrderBy(orderCondition); // формируем шаблон запроса var template = builder.AddTemplate( "SELECT * FROM sacred_relic /**where**/ /**orderby**/ LIMIT @pageLen OFFSET @offset", new { pageLen = Globals.PAGE_LEN, offset = (pageNum - 1) * Globals.PAGE_LEN } ); // выполняем запрос return db.Query( template.RawSql, template.Parameters).ToList(); } } public int getProductCount() { using (MySqlConnection db = new MySqlConnection(connectionString)) { var builder = new SqlBuilder(); if (filters.Count > 0) { foreach (var item in filters) { builder.Where(item.Key, item.Value); } } var template = builder.AddTemplate( "SELECT count(*) FROM sacred_relic /**where**/"); return db.QuerySingle( template.RawSql, template.Parameters); } } private string orderCondition = ""; public void setOrder(string condition) { orderCondition = condition; } public List getProductTypes() { using (MySqlConnection db = new MySqlConnection(connectionString)) { return db.Query( "SELECT ID, Title FROM aleuhin.ProductType;").ToList(); } } public void addFilter(string name, object value) { filters.Add(name, value); } public void clearFilter() { filters.Clear(); } } }