/// <summary>
        /// Metoda dodająca nowy Produkt do bazy danych. Metoda jest używana w procesie ETL.
        /// Dodatkowo zwracany jest ID dodanego urządzenia.
        /// </summary>
        /// <param name="db"></param>
        /// <param name="deviceName">Nazwa produktu pobrana w procesie ETL</param>
        /// <param name="manufacturer">Producent produktu pobrany w procesie ETL</param>
        /// <param name="others">Inne dane produktu pobrane w procesie ETL</param>
        /// <returns></returns>
        public async static Task <long> InsertDevice(ISQLiteConnection db, string deviceName, string manufacturer, string others)
        {
            try
            {
                await Task.Run(() =>
                {
                    using (var devicemt = db.Prepare("INSERT INTO Device (Name, Manufacturer, Others) VALUES (?, ?, ?)"))
                    {
                        devicemt.Bind(1, deviceName);
                        devicemt.Bind(2, manufacturer);
                        devicemt.Bind(3, others);
                        devicemt.Step();

                        Debug.WriteLine("INSERT completed OK for device " + deviceName);
                    }
                }
                               );
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
                return(0);
            }

            using (var idstmt = db.Prepare("SELECT last_insert_rowid()"))
            {
                idstmt.Step();
                {
                    Debug.WriteLine("INSERT ID for device " + deviceName + ": " + (long)idstmt[0]);
                    return((long)idstmt[0]);
                }
                throw new Exception("Couldn't get inserted ID");
            };
        }
示例#2
0
        private async static Task <long> InsertCustomer(ISQLiteConnection db, string customerName, string customerCity, string customerContact)
        {
            try
            {
                await Task.Run(() =>
                {
                    using (var custstmt = db.Prepare("INSERT INTO Customer (Name, City, Contact) VALUES (?, ?, ?)"))
                    {
                        custstmt.Bind(1, customerName);
                        custstmt.Bind(2, customerCity);
                        custstmt.Bind(3, customerContact);
                        custstmt.Step();

                        Debug.WriteLine("INSERT completed OK for customer " + customerName);
                    }
                }
                               );
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
                return(0);
            }

            using (var idstmt = db.Prepare("SELECT last_insert_rowid()"))
            {
                idstmt.Step();
                {
                    Debug.WriteLine("INSERT ID for customer " + customerName + ": " + (long)idstmt[0]);
                    return((long)idstmt[0]);
                }
                throw new Exception("Couldn't get inserted ID");
            };
        }
示例#3
0
        public void Delete(int id)
        {
            const string DELETE_SQL = @"DELETE FROM ACategory WHERE ID=?";

            using (var statement = con.Prepare(DELETE_SQL))
            {
                statement.Bind(1, id);
                statement.Step();
            }
        }
        /// <summary>
        /// Metoda ma na celu zwrócenie ID dowolnego produktu - zależnie od potrzeb.
        /// Używana w czasie dodawania komentarzy. Dzięki niej produkty nie dublują się.
        /// </summary>
        /// <param name = "db" ></param>
        ///<param name = "deviceName" > Nazwa produktu</param>
        /// <param name="manufacturer">Producent produktu</param>
        /// <param name="others">Inne dane produktu</param>
        /// <returns></returns>
        public async static Task <long> GetDeviceId(ISQLiteConnection db, string deviceName, string manufacturer, string others)
        {
            long devIdReturn = 0;

            try
            {
                await Task.Run(() =>
                {
                    using (var deviceId = db.Prepare("SELECT Id FROM Device WHERE Name = ? AND Manufacturer = ? AND Others = ?"))
                    {
                        deviceId.Bind(1, deviceName);
                        deviceId.Bind(2, manufacturer);
                        deviceId.Bind(3, others);

                        deviceId.Step();
                        Debug.WriteLine(" GET ID For " + deviceName);
                        try
                        {
                            return(devIdReturn = (long)deviceId[0]);
                        }
                        catch
                        {
                            return(devIdReturn = 0);
                        }
                    }
                });

                Debug.WriteLine("ID is: " + devIdReturn);
                return(devIdReturn);
            }
            catch
            {
                return(devIdReturn);
            }
        }
 /// <summary>
 /// Executes a single statement on a connection.
 /// </summary>
 /// <param name="connection"></param>
 /// <param name="sql"></param>
 /// <returns></returns>
 public static SQLiteResult Execute(this ISQLiteConnection connection, string sql)
 {
     using (var statement = connection.Prepare(sql))
     {
         return(statement.Step());
     }
 }
        public ObservableCollection <TItemType> GetAllItems()
        {
            var items = new ObservableCollection <TItemType>();

            using (var statement = sqlConnection.Prepare(GetSelectAllSql()))
            {
                FillSelectAllStatement(statement);
                while (statement.Step() == SQLiteResult.ROW)
                {
                    var item = CreateItem(statement);
                    items.Add(item);
                }
            }

            return(items);
        }
        /// <summary>
        /// Metoda dodająca nowy komentarz dla danego produktu. Używana w procesie ETL.
        /// </summary>
        /// <param name="db"></param>
        /// <param name="deviceID">Id urządzenia z bazy danych</param>
        /// <param name="zalety">Zalety wymienione w komentarzu, pobrane w procesie ETL</param>
        /// <param name="wady">Wady wymienione w komentarzu, pobrane w procesie ETL</param>
        /// <param name="autor">Autor komentarza, pobrany w procesie ETL</param>
        /// <param name="tekstOpinii">Tekst Opinii pobrany w procesie ETL</param>
        /// <param name="gwiazdki">Ocena wystawiona przez autora opinii. (Zaokrąglana do pełnych liczb w dół)</param>
        /// <param name="data">Data dodania opinii na stonę</param>
        /// <param name="polecam">Czy produkt jest polecany przez kupującego. Pole dotyczy jedynie strony Ceneo</param>
        /// <param name="przydatnosc">Ocena przydatności komentarza.</param>
        /// <param name="pochodzenie">Pochodzenie komentarza. Dzięki temu łatwo można odróżnić komentarze pobrane z Ceneo, od komentarzy pobranych ze Skąpca.</param>
        /// <returns></returns>
        public static Task InsertComment(ISQLiteConnection db, long deviceID, string zalety, string wady, string autor, string tekstOpinii, string gwiazdki, string data, string polecam, string przydatnosc, string pochodzenie)
        {
            return(Task.Run(() =>
            {
                using (var commentmt = db.Prepare("INSERT INTO Comment (DeviceId, Zalety, Wady, Autor, TekstOpinii, Gwiazdki, Data, Polecam, Przydatnosc, Pochodzenie) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"))
                {
                    // Reset the prepared statement so we can reuse it.
                    commentmt.ClearBindings();
                    commentmt.Reset();

                    commentmt.Bind(1, deviceID);
                    commentmt.Bind(2, zalety);
                    commentmt.Bind(3, wady);
                    commentmt.Bind(4, autor);
                    commentmt.Bind(5, tekstOpinii);
                    commentmt.Bind(6, gwiazdki);
                    commentmt.Bind(7, data);
                    commentmt.Bind(8, polecam);
                    commentmt.Bind(9, przydatnosc);
                    commentmt.Bind(10, pochodzenie);

                    commentmt.Step();
                    Debug.WriteLine("INSERT Project completed OK for comment " + deviceID);
                }
            }
                            ));
        }
 public SQLiteTransaction(ISQLiteConnection connection)
 {
     _connection = connection;
     using (var statement = connection.Prepare("BEGIN TRANSACTION"))
     {
         statement.Step().ThrowOnFailure("Failed to initiate a transaction");
     }
 }
 public SQLiteTransaction(ISQLiteConnection connection)
 {
     _connection = connection;
     using (var statement = connection.Prepare("BEGIN TRANSACTION"))
     {
         statement.Step().ThrowOnFailure("Failed to initiate a transaction");
     }
 }
 /// <summary>
 /// Executes multiple statements on a connnection.
 /// Return values are ignored.
 /// </summary>
 /// <param name="connection"></param>
 /// <param name="sqlStatements"></param>
 public static void Execute(this ISQLiteConnection connection, params string[] sqlStatements)
 {
     foreach (var sql in sqlStatements)
     {
         using (var statement = connection.Prepare(sql))
         {
             statement.Step();
         }
     }
 }
示例#11
0
        private static Task InsertProject(ISQLiteConnection db, long customerID, string name, string description, DateTime duedate)
        {
            return(Task.Run(() =>
            {
                using (var projstmt = db.Prepare("INSERT INTO Project (CustomerId, Name, Description, DueDate) VALUES (?, ?, ?, ?)"))
                {
                    // Reset the prepared statement so we can reuse it.
                    projstmt.ClearBindings();
                    projstmt.Reset();

                    projstmt.Bind(1, customerID);
                    projstmt.Bind(2, name);
                    projstmt.Bind(3, description);
                    projstmt.Bind(4, duedate.ToString("yyyy-MM-dd HH:mm:ss"));

                    projstmt.Step();
                    Debug.WriteLine("INSERT Project completed OK for customer " + customerID);
                }
            }
                            ));
        }
示例#12
0
        /// <summary>
        /// Metoda pobierająca ID dowolnego komentarza. Jest używana w czasie dodawania nowych komentarzy.
        /// Dzięki niej komentarze nie są dublowane. W celu przyśpieszenia zapytania, nie są sprawdzane wszystkie pola.
        /// </summary>
        /// <param name="db"></param>
        /// <param name="deviceId">Id urządzenia</param>
        /// <param name="zalety">Zalety wymienione w komentarzu</param>
        /// <param name="wady">Wady wymienione w komentarzu</param>
        /// <param name="autor">Autor komentarza</param>
        /// <param name="tekstOpinii">Tekst Opinii</param>
        /// <returns></returns>
        public async static Task <long> GetCommentId(ISQLiteConnection db, int deviceId,
                                                     string zalety, string wady,
                                                     string autor, string tekstOpinii)
        {
            long commIdReturn = 0;

            try
            {
                await Task.Run(() =>
                {
                    using (var commId = db.Prepare("SELECT Id FROM Comment WHERE DeviceId = ? AND Zalety = ? AND Wady = ? AND Autor = ? AND TekstOpinii = ?"))
                    {
                        commId.Bind(1, deviceId);
                        commId.Bind(2, zalety);
                        commId.Bind(3, wady);
                        commId.Bind(4, autor);
                        commId.Bind(5, tekstOpinii);

                        commId.Step();
                        Debug.WriteLine(" GET ID For " + autor);
                        try
                        {
                            return(commIdReturn = (long)commId[0]);
                        }
                        catch
                        {
                            return(commIdReturn = 0);
                        }
                    }
                });

                Debug.WriteLine("Comment ID is: " + commIdReturn);
                return(commIdReturn);
            }
            catch
            {
                return(commIdReturn);
            }
        }
示例#13
0
        /// <summary>
        /// Metoda dodająca nowy Produkt do bazy danych. Metoda jest używana w procesie ETL.
        /// Dodatkowo zwracany jest ID dodanego urządzenia.
        /// </summary>
        /// <param name="db"></param>
        /// <param name="deviceName">Nazwa produktu pobrana w procesie ETL</param>
        /// <param name="manufacturer">Producent produktu pobrany w procesie ETL</param>
        /// <param name="others">Inne dane produktu pobrane w procesie ETL</param>
        /// <returns></returns>
            public async static Task<long> InsertDevice(ISQLiteConnection db, string deviceName, string manufacturer, string others)
            {
                try
                {
                    await Task.Run(() =>
                    {

                        using (var devicemt = db.Prepare("INSERT INTO Device (Name, Manufacturer, Others) VALUES (?, ?, ?)"))
                        {
                            devicemt.Bind(1, deviceName);
                            devicemt.Bind(2, manufacturer);
                            devicemt.Bind(3, others);
                            devicemt.Step();

                            Debug.WriteLine("INSERT completed OK for device " + deviceName);
                        }
                    }
                    );
                }
                catch (Exception ex)
                {
                    Debug.WriteLine(ex.Message);
                    return 0;
                }

                using (var idstmt = db.Prepare("SELECT last_insert_rowid()"))
                {
                    idstmt.Step();
                    {
                        Debug.WriteLine("INSERT ID for device " + deviceName + ": " + (long)idstmt[0]);
                        return (long)idstmt[0];
                    }
                    throw new Exception("Couldn't get inserted ID");
                };
            }
示例#14
0
        private static Task InsertProject(ISQLiteConnection db, long customerID, string name, string description, DateTime duedate)
        {
            return Task.Run(() =>
            {

                using (var projstmt = db.Prepare("INSERT INTO Project (CustomerId, Name, Description, DueDate) VALUES (?, ?, ?, ?)"))
                {

                    // Reset the prepared statement so we can reuse it.
                    projstmt.ClearBindings();
                    projstmt.Reset();

                    projstmt.Bind(1, customerID);
                    projstmt.Bind(2, name);
                    projstmt.Bind(3, description);
                    projstmt.Bind(4, duedate.ToString("yyyy-MM-dd HH:mm:ss"));

                    projstmt.Step();
                    Debug.WriteLine("INSERT Project completed OK for customer " + customerID);
                }
            }
            );
        }
示例#15
0
        private async static Task<long> InsertCustomer(ISQLiteConnection db, string customerName, string customerCity, string customerContact)
        {
            try
            {
                await Task.Run(() =>
                {
                    using (var custstmt = db.Prepare("INSERT INTO Customer (Name, City, Contact) VALUES (?, ?, ?)"))
                    {
                        custstmt.Bind(1, customerName);
                        custstmt.Bind(2, customerCity);
                        custstmt.Bind(3, customerContact);
                        custstmt.Step();

                        Debug.WriteLine("INSERT completed OK for customer " + customerName);
                    }
                }
                );
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
                return 0;
            }

            using (var idstmt = db.Prepare("SELECT last_insert_rowid()"))
            {
                idstmt.Step();
                {
                    Debug.WriteLine("INSERT ID for customer " + customerName + ": " + (long)idstmt[0]);
                    return (long)idstmt[0];
                }
                throw new Exception("Couldn't get inserted ID");
            };
        }
示例#16
0
        /// <summary>
        /// Metoda dodająca nowy komentarz dla danego produktu. Używana w procesie ETL.
        /// </summary>
        /// <param name="db"></param>
        /// <param name="deviceID">Id urządzenia z bazy danych</param>
        /// <param name="zalety">Zalety wymienione w komentarzu, pobrane w procesie ETL</param>
        /// <param name="wady">Wady wymienione w komentarzu, pobrane w procesie ETL</param>
        /// <param name="autor">Autor komentarza, pobrany w procesie ETL</param>
        /// <param name="tekstOpinii">Tekst Opinii pobrany w procesie ETL</param>
        /// <param name="gwiazdki">Ocena wystawiona przez autora opinii. (Zaokrąglana do pełnych liczb w dół)</param>
        /// <param name="data">Data dodania opinii na stonę</param>
        /// <param name="polecam">Czy produkt jest polecany przez kupującego. Pole dotyczy jedynie strony Ceneo</param>
        /// <param name="przydatnosc">Ocena przydatności komentarza.</param>
        /// <param name="pochodzenie">Pochodzenie komentarza. Dzięki temu łatwo można odróżnić komentarze pobrane z Ceneo, od komentarzy pobranych ze Skąpca.</param>
        /// <returns></returns>
        public static Task InsertComment(ISQLiteConnection db, long deviceID, string zalety, string wady, string autor, string tekstOpinii, string gwiazdki, string data, string polecam, string przydatnosc, string pochodzenie)
            {
                return Task.Run(() =>
                {

                    using (var commentmt = db.Prepare("INSERT INTO Comment (DeviceId, Zalety, Wady, Autor, TekstOpinii, Gwiazdki, Data, Polecam, Przydatnosc, Pochodzenie) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"))
                    {

                        // Reset the prepared statement so we can reuse it.
                        commentmt.ClearBindings();
                        commentmt.Reset();

                        commentmt.Bind(1, deviceID);
                        commentmt.Bind(2, zalety);
                        commentmt.Bind(3, wady);
                        commentmt.Bind(4, autor);
                        commentmt.Bind(5, tekstOpinii);
                        commentmt.Bind(6, gwiazdki);
                        commentmt.Bind(7, data);
                        commentmt.Bind(8, polecam);
                        commentmt.Bind(9, przydatnosc);
                        commentmt.Bind(10, pochodzenie);

                        commentmt.Step();
                        Debug.WriteLine("INSERT Project completed OK for comment " + deviceID);
                    }
                }
                );
        }
示例#17
0
        /// <summary>
        /// Metoda ma na celu zwrócenie ID dowolnego produktu - zależnie od potrzeb.
        /// Używana w czasie dodawania komentarzy. Dzięki niej produkty nie dublują się.
        /// </summary>
        /// <param name = "db" ></param>
        ///<param name = "deviceName" > Nazwa produktu</param>
        /// <param name="manufacturer">Producent produktu</param>
        /// <param name="others">Inne dane produktu</param>
        /// <returns></returns>
        public async static Task<long> GetDeviceId(ISQLiteConnection db, string deviceName, string manufacturer, string others)
        {
            long devIdReturn = 0;
            try
            {
                await Task.Run(() =>
                {
                    using (var deviceId = db.Prepare("SELECT Id FROM Device WHERE Name = ? AND Manufacturer = ? AND Others = ?"))
                    {
                        deviceId.Bind(1, deviceName);
                        deviceId.Bind(2, manufacturer);
                        deviceId.Bind(3, others);

                        deviceId.Step();
                        Debug.WriteLine(" GET ID For " + deviceName);
                        try
                        {
                            return devIdReturn = (long)deviceId[0];      
                        }
                        catch
                        {
                           return devIdReturn = 0;
                        }
                    }
                    
                });
                Debug.WriteLine("ID is: " + devIdReturn);
                return devIdReturn;
            }
            catch
            {
                return devIdReturn;
            }
        }
 public long GetNextId(string tableName)
 {
     using (ISQLiteStatement prog = _sqlConnection.Prepare((SeqSelect)))
     {
         prog.Bind(1, tableName);
         SQLiteResult result = prog.Step();
         long         data   = 0;
         if (prog.DataCount > 0)
         {
             data = prog.GetInteger(0);
         }
         return(data + 1);
     }
 }
示例#19
0
 public ISQLiteStatement Prepare(string sql)
 {
     return(_connection.Prepare(sql));
 }
示例#20
0
        /// <summary>
        /// Metoda pobierająca ID dowolnego komentarza. Jest używana w czasie dodawania nowych komentarzy.
        /// Dzięki niej komentarze nie są dublowane. W celu przyśpieszenia zapytania, nie są sprawdzane wszystkie pola.
        /// </summary>
        /// <param name="db"></param>
        /// <param name="deviceId">Id urządzenia</param>
        /// <param name="zalety">Zalety wymienione w komentarzu</param>
        /// <param name="wady">Wady wymienione w komentarzu</param>
        /// <param name="autor">Autor komentarza</param>
        /// <param name="tekstOpinii">Tekst Opinii</param>
        /// <returns></returns>
        public async static Task<long> GetCommentId(ISQLiteConnection db, int deviceId,
            string zalety, string wady,
            string autor, string tekstOpinii)
        {
            long commIdReturn = 0;
            try
            {
                await Task.Run(() =>
                { 
                    using (var commId = db.Prepare("SELECT Id FROM Comment WHERE DeviceId = ? AND Zalety = ? AND Wady = ? AND Autor = ? AND TekstOpinii = ?"))
                    {
                        commId.Bind(1, deviceId);
                        commId.Bind(2, zalety);
                        commId.Bind(3, wady);
                        commId.Bind(4, autor);
                        commId.Bind(5, tekstOpinii);

                        commId.Step();
                        Debug.WriteLine(" GET ID For " + autor);
                        try
                        {
                            return commIdReturn = (long)commId[0];
                        }
                        catch
                        {
                            return commIdReturn = 0;
                        }
                    }

                });
                Debug.WriteLine("Comment ID is: " + commIdReturn);
                return commIdReturn;
            }
            catch
            {
                return commIdReturn;
            }
        }