- Timestamp:
- 07/31/08 17:42:20 (16 years ago)
- Location:
- trunk/sources
- Files:
-
- 2 added
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.CEDMA.Core/HeuristicLab.CEDMA.Core.csproj
r403 r416 62 62 <SubType>UserControl</SubType> 63 63 </Compile> 64 <Compile Include="DatabaseOperatorLibrary.cs" /> 64 65 <Compile Include="Result.cs" /> 65 66 <Compile Include="IResult.cs" /> -
trunk/sources/HeuristicLab.CEDMA.DB.Interfaces/HeuristicLab.CEDMA.DB.Interfaces.csproj
r390 r416 55 55 <ItemGroup> 56 56 <Compile Include="AgentEntry.cs" /> 57 <Compile Include="OperatorEntry.cs" /> 57 58 <Compile Include="ProcessStatus.cs" /> 58 59 <Compile Include="ResultEntry.cs" /> -
trunk/sources/HeuristicLab.CEDMA.DB.Interfaces/IDatabase.cs
r398 r416 48 48 long InsertSubResult(long resultId, string summary, string description, byte[] rawData); 49 49 50 [OperationContract] 51 long InsertOperator(string name, string rawData); 52 50 53 // should be replaced by more powerful querying interface (LINQ provider?) 51 54 [OperationContract] … … 61 64 ICollection<ResultEntry> GetSubResults(long parentResultId); 62 65 66 [OperationContract] 67 ICollection<OperatorEntry> GetOperators(); 68 63 69 } 64 70 } -
trunk/sources/HeuristicLab.CEDMA.DB/Database.cs
r408 r416 61 61 using(DbCommand cmd = cnn.CreateCommand()) { 62 62 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)"; 63 68 cmd.Transaction = t; 64 69 cmd.ExecuteNonQuery(); … … 194 199 } 195 200 } 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 } 196 230 #endregion 197 231 … … 433 467 return results; 434 468 } 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 } 435 494 #endregion 436 495 }
Note: See TracChangeset
for help on using the changeset viewer.