Пример #1
0
 public IEnumerable <CardModel> SelectCardModels(params string[] conditions)
 {
     return(from DataRow row in SelectCards(conditions).Rows
            select CardModel.FromDataRow(this, row));
 }
Пример #2
0
        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();
            }
        }