Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
07/31/08 17:42:20 (16 years ago)
Author:
gkronber
Message:

worked on #211 (Full operator-graphs are stored multiple times in the database even though most of it is static anyway)

By introducing a table of operators in the CEDMA database.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.CEDMA.DB/Database.cs

    r408 r416  
    6161            using(DbCommand cmd = cnn.CreateCommand()) {
    6262              cmd.CommandText = "CREATE TABLE Result (ID integer primary key autoincrement, AgentId integer, ParentResultId integer, Summary text, Description text, CreationTime DateTime, RawData Blob)";
     63              cmd.Transaction = t;
     64              cmd.ExecuteNonQuery();
     65            }
     66            using(DbCommand cmd = cnn.CreateCommand()) {
     67              cmd.CommandText = "CREATE TABLE Operator (ID integer primary key autoincrement, Name text, RawData text)";
    6368              cmd.Transaction = t;
    6469              cmd.ExecuteNonQuery();
     
    194199      }
    195200    }
     201
     202    public long InsertOperator(string name, string rawData) {
     203      rwLock.EnterWriteLock();
     204      try {
     205        using(DbConnection cnn = new SQLiteConnection(connectionString)) {
     206          cnn.Open();
     207          long id;
     208          using(DbTransaction t = cnn.BeginTransaction()) {
     209            using(DbCommand c = cnn.CreateCommand()) {
     210              c.Transaction = t;
     211              c.CommandText = "Insert into Operator (Name, RawData) values (@Name, @RawData); select last_insert_rowid()";
     212              DbParameter nameParam = c.CreateParameter();
     213              nameParam.ParameterName = "@Name";
     214              nameParam.Value = name;
     215              c.Parameters.Add(nameParam);
     216              DbParameter dataParam = c.CreateParameter();
     217              dataParam.ParameterName = "@RawData";
     218              dataParam.Value = rawData;
     219              c.Parameters.Add(dataParam);
     220              id = (long)c.ExecuteScalar();
     221            }
     222            t.Commit();
     223            return id;
     224          }
     225        }
     226      } finally {
     227        rwLock.ExitWriteLock();
     228      }
     229    }
    196230    #endregion
    197231
     
    433467      return results;
    434468    }
     469
     470    public ICollection<OperatorEntry> GetOperators() {
     471      rwLock.EnterReadLock();
     472      List<OperatorEntry> operators = new List<OperatorEntry>();
     473      try {
     474        using(DbConnection cnn = new SQLiteConnection(connectionString)) {
     475          cnn.Open();
     476          using(DbCommand c = cnn.CreateCommand()) {
     477            c.CommandText = "Select id, name, rawdata from Operator";
     478            using(DbDataReader r = c.ExecuteReader()) {
     479              while(r.Read()) {
     480                OperatorEntry op = new OperatorEntry();
     481                op.Id = r.GetInt32(0);
     482                op.Name = r.IsDBNull(1) ? "-" : r.GetString(1);
     483                op.RawData = r.GetString(2);
     484                operators.Add(op);
     485              }
     486            }
     487          }
     488        }
     489      } finally {
     490        rwLock.ExitReadLock();
     491      }
     492      return operators;
     493    }
    435494    #endregion
    436495  }
Note: See TracChangeset for help on using the changeset viewer.