コード例 #1
0
        /// <summary>
        /// Executes previously build SQL statement passed to it. Returns a MenuItem if applicable,
        /// otherwise returns null.
        /// </summary>
        /// <param name="statement"></param>
        /// <returns></returns>
        private List <Row> execute(string fileName, string statement, EnumContainer.TableNames tableName)
        {
            SQLiteCommand    command;
            SQLiteDataReader reader = null;

            // TODO: Create command and commit and execute statement
            using (SQLiteConnection connection = new SQLiteConnection("Data Source=" + fileName + ";Version=3;"))
            {
                connection.Open();

                command = new SQLiteCommand(statement, connection);

                if (!statement.ToUpper().Contains(Enum.GetName(typeof(EnumContainer.Statements), EnumContainer.Statements.SELECT).ToString()))
                {
                    command.ExecuteNonQuery();
                }
                else
                {
                    reader = command.ExecuteReader();
                }

                connection.Close();

                if (reader != null)
                {
                    return(parseReader(reader, tableName));
                }
            }

            return(null);
        }
コード例 #2
0
        /// <summary>
        /// Reads the data from the parser. Returns a row of the appropriate type.
        /// </summary>
        /// <param name="reader"></param>
        /// <returns></returns>
        private List <Row> parseReader(SQLiteDataReader reader, EnumContainer.TableNames tableName)
        {
            List <Row> rows = new List <Row>();

            while (reader.Read())
            {
                if (tableName == EnumContainer.TableNames.MenuItem)
                {
                    rows.Add(new MenuItemRow(
                                 reader[EnumContainer.MenuItemColumns.Name.ToString()].ToString(),
                                 (EnumContainer.Type) int.Parse(reader[EnumContainer.MenuItemColumns.Type.ToString()].ToString()),
                                 int.Parse(reader[EnumContainer.MenuItemColumns.NumSteps.ToString()].ToString()),
                                 reader[EnumContainer.MenuItemColumns.Tags.ToString()].ToString(),
                                 (EnumContainer.ActivityLevel) int.Parse(reader[EnumContainer.MenuItemColumns.Active.ToString()].ToString())));
                }
                else if (tableName == EnumContainer.TableNames.Steps)
                {
                    rows.Add(new StepsRow(
                                 reader[EnumContainer.StepsColumns.Name.ToString()].ToString(),
                                 int.Parse(reader[EnumContainer.StepsColumns.StepNum.ToString()].ToString()),
                                 reader[EnumContainer.StepsColumns.Description.ToString()].ToString(),
                                 (EnumContainer.ActivityLevel) int.Parse(reader[EnumContainer.StepsColumns.Active.ToString()].ToString())));
                }
                else if (tableName == EnumContainer.TableNames.Ingredients)
                {
                    rows.Add(new IngredientsRow(
                                 reader[EnumContainer.IngredientColumns.Name.ToString()].ToString(),
                                 reader[EnumContainer.IngredientColumns.Ingredient.ToString()].ToString(),
                                 int.Parse(reader[EnumContainer.IngredientColumns.UnitCount.ToString()].ToString()),
                                 reader[EnumContainer.IngredientColumns.Unit.ToString()].ToString(),
                                 (EnumContainer.ActivityLevel) int.Parse(reader[EnumContainer.IngredientColumns.Active.ToString()].ToString())));
                }
                else if (tableName == EnumContainer.TableNames.Images)
                {
                    rows.Add(new ImageRow(
                                 reader[EnumContainer.ImagesColumns.Name.ToString()].ToString(),
                                 (byte[])reader[EnumContainer.ImagesColumns.Image.ToString()],
                                 null,
                                 (EnumContainer.ActivityLevel) int.Parse(reader[EnumContainer.ImagesColumns.Active.ToString()].ToString())));
                }
                else
                {
                    throw new System.Exception(Message.PARSE_READER_ERROR);
                }
            }

            return(rows);
        }