Exemple #1
0
        /*** 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);
            }
        }
Exemple #2
0
        /// <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);
        }
Exemple #3
0
        /*** 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));
        }