public void AddRow([NotNull] T obj) { RowEntries.Add(obj.GetRowForDatabase()); }
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(); }