using OTSCLRINTERFACE; using OTSDataType; using OTSModelSharp.DTLBase; using System; using System.Collections.Generic; using System.Data; using System.Data.SQLite; using System.Linq; using System.Text; using System.Threading.Tasks; namespace OTSModelSharp { public class CSegmentDB: CSQLiteDB { public CSegmentDB(IDBStoreBase _conStr, CSQLiteTable _table):base(_conStr,_table) { } public List> GetSavingFeatureCmd(COTSParticleClr a_pParticle) { var tableInfoPtr = GetTableInfo(); var datastorePtr = GetDatastore(); var sInsertFormat = tableInfoPtr.GetInsertCommand(true);//CSQLiteTable修改完再修改此处 //String sSQLCommand = ""; COTSFeatureClr pFeature = a_pParticle.GetFeature(); List listSegments = pFeature.GetSegmentsList(); int nSize = (int)listSegments.Count; int nSegmentIndex = 0; List> cmds = new List>(); var parasTemplate = (SQLiteParameter[])sInsertFormat.Value; foreach (var pSegment in listSegments) { var paras = new SQLiteParameter[8]; for (int j = 0; j < 8; j++) { paras[j] = new SQLiteParameter(parasTemplate[j].ParameterName); } paras[0].Value = a_pParticle.GetAnalysisId(); paras[1].Value = a_pParticle.GetFieldId(); paras[2].Value = nSegmentIndex; paras[3].Value = nSize; paras[4].Value = pSegment.GetStart(); paras[5].Value = pSegment.GetHeight(); paras[6].Value = pSegment.GetLength(); paras[7].Value= a_pParticle.GetTagId(); nSegmentIndex++; cmds.Add(new KeyValuePair(sInsertFormat.Key, paras)); } return cmds; } public bool GetAllSegmentsRecord(Dictionary> mapSegments) { var allRecords = this.GetQueryOfAllRecord(); for (int i = 0; i < allRecords.Rows.Count; i++) { int curFldId = Convert.ToInt32(allRecords.Rows[i][(int)CSegmentTable.ColumnID.N_FIELD_ID]); int curParticleId = Convert.ToInt32(allRecords.Rows[i][(int)CSegmentTable.ColumnID.N_PARTICLE_ID]); string fldvec = ""; fldvec+=curFldId.ToString(); fldvec += "_"; fldvec += curParticleId.ToString(); if (mapSegments.ContainsKey(fldvec)) { List segments = mapSegments[fldvec]; COTSSegmentClr segment = new COTSSegmentClr(); segment.SetStart(Convert.ToInt32(allRecords.Rows[i][(int)CSegmentTable.ColumnID.N_START])); segment.SetHeight(Convert.ToInt32(allRecords.Rows[i][(int)CSegmentTable.ColumnID.N_HEIGHT])); segment.SetLength(Convert.ToInt32(allRecords.Rows[i][(int)CSegmentTable.ColumnID.N_LENGTH])); segments.Add(segment); } else { List segments = new List(); COTSSegmentClr segment = new COTSSegmentClr(); segment.SetStart(Convert.ToInt32(allRecords.Rows[i][(int)CSegmentTable.ColumnID.N_START])); segment.SetHeight(Convert.ToInt32(allRecords.Rows[i][(int)CSegmentTable.ColumnID.N_HEIGHT])); segment.SetLength(Convert.ToInt32(allRecords.Rows[i][(int)CSegmentTable.ColumnID.N_LENGTH])); segments.Add(segment); mapSegments.Add(fldvec, segments); } } return true; } public DataTable GetQueryOfAllRecord() { DataTable query; var datastorestr = GetDatastore(); var tableInfoPtr = GetTableInfo(); String sSQLCommand=String.Format("SELECT * FROM \'{0}\';", tableInfoPtr.GetTableName()); query = datastorestr.QueryByCmdForDataTable(sSQLCommand); return query; } } }