public IEnumerable <CardModel> SelectCardModels(params string[] conditions) { return(from DataRow row in SelectCards(conditions).Rows select CardModel.FromDataRow(this, row)); }
private void InsertCard(CardModel card) { StringBuilder fields = new StringBuilder(); StringBuilder values = new StringBuilder(); fields.Append("[id],[game_id],[set_real_id],[name],[image],[alternate],[dependent]"); values.Append("@id,@game_id,(SELECT real_id FROM sets WHERE id = @set_id LIMIT 1),@name,@image,@alternate,@dependent"); foreach (KeyValuePair <string, object> pair in card.Properties) { string name = string.Format("{0}{1}", Id.ToString().Replace("-", ""), pair.Key); fields.Append(string.Format(",[{0}]", name)); values.Append(string.Format(",@{0}", name.Replace(" ", ""))); PropertyType type = PropertyType.String; object value = ""; if (pair.Value is string) { type = PropertyType.String; value = (string)pair.Value; } else if (pair.Value is int) { type = PropertyType.Integer; value = (int)pair.Value; } else { type = PropertyType.String; value = (string)pair.Value; } if (!DatabaseHandler.ColumnExists("cards", name, GamesRepository.DatabaseConnection)) { DatabaseHandler.AddColumn("cards", name, type, GamesRepository.DatabaseConnection); } } StringBuilder query = new StringBuilder(); query.Append("INSERT INTO [cards]("); query.Append(fields.ToString()); query.Append(") VALUES("); query.Append(values.ToString()); query.Append(");"); using (SQLiteCommand com = GamesRepository.DatabaseConnection.CreateCommand()) { com.CommandText = query.ToString(); com.Parameters.AddWithValue("@id", card.Id.ToString()); com.Parameters.AddWithValue("@game_id", Id.ToString()); com.Parameters.AddWithValue("@set_id", card.Set.Id.ToString()); com.Parameters.AddWithValue("@name", card.Name); com.Parameters.AddWithValue("@image", card.ImageUri); com.Parameters.AddWithValue("@alternate", card.Alternate.ToString()); com.Parameters.AddWithValue("@dependent", card.Dependent.ToString()); foreach (KeyValuePair <string, object> pair in card.Properties) { string name = string.Format("{0}{1}", Id.ToString().Replace("-", ""), pair.Key); string key = string.Format("@{0}", name.Replace(" ", "")); com.Parameters.AddWithValue(key, pair.Value); } #if (DEBUG) Debug.WriteLine(com.CommandText); foreach (SQLiteParameter p in com.Parameters) { Debug.Write("ParameterName: " + p.ParameterName + "\r\n Value: " + p.Value + "\r\n"); } #endif com.ExecuteNonQuery(); } }