/// <summary> /// Populates the configuration database with default values. /// </summary> public void ResetConfig() { using (var conn = new SQLiteConnection(connString)) { conn.Open(); using (var trans = conn.BeginTransaction()) { // IGNORES var sql = "CREATE TABLE Ignores (Pattern TEXT UNIQUE)"; var cmd = new SQLiteCommand(sql, conn); cmd.ExecuteNonQuery(); sql = "INSERT INTO Ignores VALUES(@Pattern)"; cmd = new SQLiteCommand(sql, conn); var param = new SQLiteParameter("Pattern"); cmd.Parameters.Add(param); foreach (var s in DefaultIgnoreDirs) { param.Value = s; cmd.ExecuteNonQuery(); } // ROOTS sql = "CREATE TABLE Roots (Root TEXT UNIQUE)"; cmd = new SQLiteCommand(sql, conn); cmd.ExecuteNonQuery(); sql = "INSERT INTO Roots VALUES(@Root)"; cmd = new SQLiteCommand(sql, conn); param = new SQLiteParameter("Root"); cmd.Parameters.Add(param); foreach (var s in DefaultRoots) { param.Value = s; cmd.ExecuteNonQuery(); } // OTHER otherOpts = new OtherOpts(); sql = "CREATE TABLE Other (Port INTEGER, UpdateDelay INTEGER)"; cmd = new SQLiteCommand(sql, conn); cmd.ExecuteNonQuery(); sql = "INSERT INTO Other (Port, UpdateDelay) VALUES(@Port, @UpdateDelay)"; cmd = new SQLiteCommand(sql, conn); cmd.Parameters.Add(new SQLiteParameter("Port", otherOpts.Port)); cmd.Parameters.Add(new SQLiteParameter("UpdateDelay", otherOpts.UpdateDelay)); cmd.ExecuteNonQuery(); trans.Commit(); } } }
private void SetOtherOptions(OtherOpts newOpts) { if (newOpts.Port == otherOpts.Port && newOpts.UpdateDelay == otherOpts.UpdateDelay) { return; } otherOpts = newOpts; using (var conn = new SQLiteConnection(connString)) { conn.Open(); using (var trans = conn.BeginTransaction()) { const string sql = "UPDATE Other SET Port=@Port, UpdateDelay=@UpdateDelay"; var cmd = new SQLiteCommand(sql, conn); cmd.Parameters.Add(new SQLiteParameter("Port", otherOpts.Port)); cmd.Parameters.Add(new SQLiteParameter("UpdateDelay", otherOpts.UpdateDelay)); cmd.ExecuteNonQuery(); trans.Commit(); } } }
private void CheckUpdateOtherOptions() { // Since nothing else SHOULD be in the database, we can be sure that optherOpts // is always up-to-date. if (otherOpts != null) { return; } using (var conn = new SQLiteConnection(connString)) { conn.Open(); using (var trans = conn.BeginTransaction()) { var sql = "SELECT Port, UpdateDelay FROM Other"; var cmd = new SQLiteCommand(sql, conn); var reader = cmd.ExecuteReader(); reader.Read(); otherOpts = new OtherOpts { Port = Convert.ToInt32(reader["Port"]), UpdateDelay = Convert.ToInt32(reader["UpdateDelay"]) }; trans.Commit(); } } }
} // required because of the copy constructor // Copy constructor, because IClonable stinks public OtherOpts(OtherOpts copyFrom) { Port = copyFrom.Port; UpdateDelay = copyFrom.UpdateDelay; }