/*** Metody k nacteni dat ***/ /// <summary> /// Nacteni produktu z databaze do pameti /// </summary> /// <param name="reader">precteny sqlite zaznamy k spracovani</param> private static void LoadProducts(SQLiteDataReader reader) { while (reader.Read()) { // obrazek a popis neni povinny, nacte se jen kdyz je ulozen System.Drawing.Image productImage = null; if (reader[Product.PhotoColumn] != DBNull.Value) { productImage = (Bitmap) new ImageConverter().ConvertFrom(reader[Product.PhotoColumn]); } string productDescription = string.Empty; if (reader[Product.DescriptionColumn] != DBNull.Value) { productDescription = reader[Product.DescriptionColumn].ToString(); } // nacteni produktu do objektu Product loadedProduct = new Product ( Convert.ToString(reader[Product.NameColumn]), Convert.ToString(reader[Product.CathegoryColumn]), Convert.ToInt32(reader[Product.PriceColumn]), productImage, Convert.ToString(reader[Product.DescriptionColumn]), Convert.ToInt32(reader[Product.IDColumn]) ); // pridani produktu do cached produktu CachedProducts.Add(loadedProduct); } }
/// <summary> /// Ulozeni noveho produktu do databaze /// </summary> /// <param name="product">produkt k ulozeni</param> public static void CreateProduct(Product product) { int lastInsertedID = -1; using (SQLiteConnection connection = new SQLiteConnection(ConnectionString)) { Cathegory cathegory = CachedCathegories.Find(c => c.Description == product.Cathegory); byte[] productPhoto = ImageToBLOB(product.Photo); connection.Open(); string commandText = $"INSERT INTO {Product.TableName} " + $"({Product.NameColumn}, {Product.CathegoryColumn}, " + $"{Product.PriceColumn}, {Product.PhotoColumn}, {Product.DescriptionColumn}) " + $"VALUES (@{Product.NameColumn}, " + $"@{Product.CathegoryColumn}, " + $"@{Product.PriceColumn}, " + $"@{Product.PhotoColumn}, " + $"@{Product.DescriptionColumn})"; using (SQLiteCommand command = new SQLiteCommand(commandText, connection)) { command.Parameters.AddWithValue($"@{Product.NameColumn}", product.Name); command.Parameters.AddWithValue($"@{Product.CathegoryColumn}", cathegory.ID); command.Parameters.AddWithValue($"@{Product.PriceColumn}", product.Price); command.Parameters.AddWithValue($"@{Product.PhotoColumn}", productPhoto); command.Parameters.AddWithValue($"@{Product.DescriptionColumn}", product.Description); command.Parameters.AddWithValue(Product.PhotoColumn, productPhoto); command.ExecuteNonQuery(); } lastInsertedID = Convert.ToInt32(connection.LastInsertRowId); connection.Close(); } // passed produktu priradi ID product.ChangeID(lastInsertedID); // vytvoreny produkt se priradi ku CachedProducts CachedProducts.Add(product); }
/*** Manipulace s cached daty ***/ /// <summary> /// Vraceni instance produktu z produktu v pameti podle zadaneho ID /// </summary> /// <param name="id">hledane ID produktu</param> /// <returns>instance nalezeneho produktu</returns> public static Product GetCachedProductByID(int id) { return(CachedProducts.Find(product => product.ID == id)); }