using OTSCLRINTERFACE; using OTSDataType; using OTSModelSharp.DTLBase; using System; using System.Collections.Generic; using System.Data; using System.Data.SQLite; using System.Drawing; using System.Linq; namespace OTSModelSharp { public class CMergeParticleDB : CSQLiteDB { public CMergeParticleDB(IDBStoreBase _conStr, IDBTableBase _table) : base(_conStr, _table) { } public bool SaveAParticle( COTSParticleClr a_pParticle, CPosXrayClr a_pXray, System.Drawing.Point fldPos) { var tableInfoPtr = GetTableInfo(); var datastorePtr = GetDatastore(); Rectangle prec = (Rectangle)a_pParticle.GetParticleRect(); System.Drawing.Point pos = (System.Drawing.Point)a_pParticle.GetSEMPos(); String sInsertFormat = tableInfoPtr.GetInsertCommandFormatString(true); var cmd = tableInfoPtr.GetInsertCommand(true); var paras = cmd.Value; paras[0].Value = a_pParticle.GetFieldId(); paras[1].Value = a_pParticle.GetAnalysisId(); paras[2].Value = a_pParticle.GetAveGray(); paras[3].Value = prec.Left; paras[4].Value = prec.Top; paras[5].Value = prec.Width; paras[6].Value = prec.Height; paras[7].Value = a_pParticle.GetActualArea(); paras[8].Value = pos.X; paras[9].Value = pos.Y; paras[10].Value = a_pParticle.GetType(); paras[11].Value = a_pXray.GetElementQuantifyData().Count; paras[12].Value = a_pParticle.GetFeature().GetSegmentsList().Count; paras[13].Value = fldPos.X; paras[14].Value = fldPos.Y; paras[15].Value = a_pParticle.GetParticleId(); paras[16].Value = a_pParticle.GetDMAX(); paras[17].Value = a_pParticle.GetDMIN(); paras[18].Value = a_pParticle.GetDMPERP(); paras[19].Value = a_pParticle.GetDPRIMETER(); paras[20].Value = a_pParticle.GetORIENTATION(); paras[21].Value = a_pParticle.GetDINSCR(); paras[22].Value = a_pParticle.GetDMEAN(); paras[23].Value = a_pParticle.GetDELONG(); paras[24].Value = a_pParticle.GetFeretDiameter(); paras[25].Value = a_pParticle.GetTypeName(); paras[26].Value = a_pParticle.GetTypeColor(); paras[27].Value = a_pParticle.GetConnectedParticlesName(); List> cmds = new List>(); cmds.Add(cmd); datastorePtr.ExecuteNonQueryBatch(ref cmds); return true; } public bool UpdataAParticle( COTSParticleClr a_pParticle) { var tableInfoPtr = GetTableInfo(); var datastorePtr = GetDatastore(); String sSQLCommand = "Update IncAData \'{0}\' WHERE {1} = {2} AND {3} ={4} AND {5} ={6} AND {7} = {8};"; sSQLCommand= String.Format(sSQLCommand, a_pParticle.GetAveGray(), a_pParticle.GetActualArea(), a_pParticle.GetType(), a_pParticle.GetFieldId(), a_pParticle.GetParticleId()); //var helper = new SQLiteHelper(datastorePtr); if (datastorePtr.RunCommand(sSQLCommand) != true) { return false; } return true; } public DataTable GetQueryOfAllRecord() { DataTable query; var datastorePtr = GetDatastore(); var tableInfoPtr = GetTableInfo(); String sSQLCommand = ""; String.Format("SELECT * FROM \'{0}\' WHERE {1} = {2} AND {3} ={4} AND {5} ={6} AND {7} = {8};", (String)tableInfoPtr.GetTableName()); //var helper = datastorePtr; query = datastorePtr.QueryByCmdForDataTable(sSQLCommand); ; return query; } public DataTable GetQueryById( long a_nXrayId, long a_nFieldId) { DataTable query; var datastorePtr = GetDatastore(); var tableInfoPtr = GetTableInfo(); var sXrayIdColumnName = tableInfoPtr.GetColumnName((int)CMergeParticleTable.ColumnID.N_XRAY_ID - (int)CMergeParticleTable.ColumnID.MIN); var sFieldIdColumnName = tableInfoPtr.GetColumnName((int)CMergeParticleTable.ColumnID.N_FIELD_ID - (int)CMergeParticleTable.ColumnID.MIN); String sSQLCommand = ""; String.Format("SELECT * FROM \'{0}\' WHERE {1} = {2} AND {3} ={4} AND {5} ={6} AND {7} = {8};", (String) tableInfoPtr.GetTableName(), sFieldIdColumnName, a_nFieldId, sXrayIdColumnName, a_nXrayId); //var helper = new SQLiteHelper(datastorePtr); query = datastorePtr.QueryByCmdForDataTable(sSQLCommand); return query; } public void DeleteDataByFieldNo(int fieldStartNo) { string sSQLCommand; var datastorePtr = GetDatastore(); sSQLCommand = "delete * from MergedParticleInfo where FieldId>" + fieldStartNo.ToString(); if (!datastorePtr.RunCommand(sSQLCommand)) { return; } } } }