/// <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); }
/// <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); }