Ejemplo n.º 1
0
 public void AddRow([NotNull] T obj)
 {
     RowEntries.Add(obj.GetRowForDatabase());
 }
Ejemplo n.º 2
0
        public void SaveDictionaryToDatabase([NotNull] ILogger logger)
        {
            if (RowEntries.Count == 0)
            {
                return;
            }

            if (_namesInDatabase == null)
            {
                RefreshNamesInDatabase(logger);
            }

            //figure out sql
            var firstrow   = RowEntries[0];
            var sql        = "Insert into " + TableName + "(";
            var fields     = "";
            var parameters = "";

            foreach (var pair in firstrow)
            {
                fields     += pair.Name + ",";
                parameters += "@" + pair.Name + ",";
            }

            fields     = fields.Substring(0, fields.Length - 1);
            parameters = parameters.Substring(0, parameters.Length - 1);
            sql       += fields + ") VALUES (" + parameters + ")";
            //execute the sql
            using (var conn = new SQLiteConnection(SqliteDB.GetConnectionstring())) {
                conn.Open();
                using (var transaction = conn.BeginTransaction()) {
                    using (var command = conn.CreateCommand()) {
                        command.CommandText = sql;
                        foreach (var row in RowEntries)
                        {
                            if (row.Count != firstrow.Count)
                            {
                                throw new Exception("Incorrect number of columns");
                            }

                            command.Parameters.Clear();
                            foreach (var pair in row)
                            {
                                var parameter = "@" + pair.Name;
                                if (pair.Name == "Name")
                                {
                                    if (_namesInDatabase == null)
                                    {
                                        throw new FlaException("names as null");
                                    }

                                    _namesInDatabase.Add((string)pair.Value);
                                }

                                command.Parameters.AddWithValue(parameter, pair.Value);
                            }

                            command.ExecuteNonQuery();
                        }
                    }

                    transaction.Commit();
                }
            }

            RowEntries.Clear();
        }