public void Clear() { string cmdText = "delete from IndexOri"; if (_indexOperator.ExcuteSql(cmdText)) { _markedPoints.Clear(); } }
public bool Add(TotalFile data) { bool isok = false; StringBuilder sbSql = new StringBuilder(); sbSql.Append("insert into TotalResult ("); sbSql.Append("LineName,TrainCode,"); sbSql.Append("GeoFileName,ResultTableName,TotalLength"); sbSql.Append(") values('"); sbSql.Append(data.LineName).Append("','").Append(data.TrainCode).Append("',"); sbSql.Append("'").Append(data.GeoFileName).Append("','"); sbSql.Append(data.ResultTableName).Append("'"); sbSql.Append(",'").Append(data.TotalLength).Append("'"); sbSql.Append(")"); bool i = _dbOperator.ExcuteSql(sbSql.ToString()); //int i = DataAccess.AccessHelper.Run_SQL(sbSql.ToString(), connStr); if (i) { isok = true; } return(isok); }
/// <summary> /// 保存里程修正表 /// </summary> public void SaveMilestoneFixTable() { string cmdText = "delete from IndexSta"; _indexOperator.ExcuteSql(cmdText); if (_fixData != null && _fixData.Count > 0) { for (int i = 0; i < _fixData.Count; i++) { cmdText = "insert into IndexSta values(" + (i + 1) + "," + 1 + ",'" + _fixData[i].MarkedStartPoint.FilePointer.ToString() + "','" + _fixData[i].MarkedStartPoint.UserSetMileage.ToString() + "','" + _fixData[i].MarkedEndPoint.FilePointer.ToString() + "','" + _fixData[i].MarkedEndPoint.UserSetMileage.ToString() + "','" + _fixData[i].SamplePointCount.ToString() + "','" + (_fixData[i].RealDistance).ToString() + "','" + "正常" + "')"; _indexOperator.ExcuteSql(cmdText); } } }
/// <summary> /// 添加无效数据 /// </summary> /// <param name="filePath">文件路径</param> /// <param name="citHeadEndPostion">文件头部结束位置</param> /// <param name="fileStartPostion">数据开始位置</param> /// <param name="fileEndPostion">数据结束位置</param> /// <param name="channelNumber">通道个数</param> /// <returns></returns> private bool AddInvaildData(IOperator newIndexOperaotr, long citHeadEndPostion, long fileStartPostion, long fileEndPostion, int channelNumber) { //DBOperator.CommonDbConnectString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Jet OLEDB:Engine Type=5"; string sqlCmd = "delete from InvalidData"; newIndexOperaotr.ExcuteSql(sqlCmd); long fileDataHead = citHeadEndPostion; if (InvalidDataList != null && InvalidDataList.Count > 0) { for (int i = 0; i < InvalidDataList.Count; i++) { long startPoint = long.Parse(InvalidDataList[i].sStartPoint); long endPoint = long.Parse(InvalidDataList[i].sEndPoint); double startMeter = double.Parse(InvalidDataList[i].sStartMile); double endMeter = double.Parse(InvalidDataList[i].sEndMile); int invalidType = InvalidDataList[i].iType; string memoText = InvalidDataList[i].sMemoText; int isShow = InvalidDataList[i].iIsShow; string channelType = InvalidDataList[i].ChannelType; int idValue = 0; long startPositionValue = 0; long endPositionValue = 0; double startMeterValue = 0; double endMeterValue = 0; int invalidTypeValue = invalidType; string memoTextValue = memoText; int isShowValue = isShow; string channelTypeValue = channelType; string sqlFormat = "insert into InvalidData values({0},'{1}','{2}','{3}','{4}',{5},'{6}',{7},'{8}')"; string sqlText = string.Format(sqlFormat, idValue.ToString(), startPositionValue.ToString(), endPositionValue.ToString(), startMeterValue.ToString(), endMeterValue.ToString(), invalidTypeValue.ToString(), memoTextValue, isShowValue.ToString(), channelTypeValue); idValue = i; //第一种情形:无效区段完全在分割的波形内 if (startPoint >= fileStartPostion && endPoint <= fileEndPostion) { startPositionValue = fileDataHead + startPoint - fileStartPostion; startMeterValue = startMeter; endPositionValue = endPoint - startPoint + startPositionValue; endMeterValue = endMeter; sqlText = String.Format(sqlFormat, idValue.ToString(), startPositionValue.ToString(), endPositionValue.ToString(), startMeterValue.ToString(), endMeterValue.ToString(), invalidTypeValue.ToString(), memoTextValue, isShowValue.ToString(), channelTypeValue); newIndexOperaotr.ExcuteSql(sqlText); } //第二种情形:无效区段的跨越分割波形的起始部分 if (startPoint < fileStartPostion && fileStartPostion < endPoint) { startPositionValue = fileDataHead;; startMeterValue = startMeter + (0.25 * (fileStartPostion - startPoint) / (channelNumber * 2)) / 1000; endPositionValue = endPoint - fileStartPostion + startPositionValue; endMeterValue = endMeter; sqlText = String.Format(sqlFormat, idValue.ToString(), startPositionValue.ToString(), endPositionValue.ToString(), startMeterValue.ToString(), endMeterValue.ToString(), invalidTypeValue.ToString(), memoTextValue, isShowValue.ToString(), channelTypeValue); newIndexOperaotr.ExcuteSql(sqlText); } //第三种情形:无效区段的跨越分割波形的结束部分 if (startPoint < fileEndPostion && fileEndPostion < endPoint) { startPositionValue = fileDataHead + startPoint - fileEndPostion; startMeterValue = startMeter; endPositionValue = endPoint - startPoint + startPositionValue; endMeterValue = startMeter + (0.25 * (fileEndPostion - startPoint) / (channelNumber * 2)) / 1000; sqlText = String.Format(sqlFormat, idValue.ToString(), startPositionValue.ToString(), endPositionValue.ToString(), startMeterValue.ToString(), endMeterValue.ToString(), invalidTypeValue.ToString(), memoTextValue, isShowValue.ToString(), channelTypeValue); newIndexOperaotr.ExcuteSql(sqlText); } } return(true); } return(false); }
/// <summary> /// 添加新索引数据 /// </summary> /// <param name="citHeadEndPostion">文件头部结束为止</param> /// <param name="fileStartPostion">数据开始位置</param> /// <param name="fileEndPostion">数据结束位置</param> /// <param name="channelNumber">通道个数</param> /// <returns></returns> private bool AddNewIndexData(string destCitPath, IOperator NewIndexOperator, long citHeadEndPostion, long fileStartPostion, long fileEndPostion, int channelNumber) { string sqlCmd = "delete from IndexSta"; NewIndexOperator.ExcuteSql(sqlCmd); long fileHead = citHeadEndPostion; if (MileageFix.FixData != null && MileageFix.FixData.Count > 0) { for (int i = 0; i < MileageFix.FixData.Count; i++) { double startMeter = MileageFix.FixData[i].MarkedStartPoint.UserSetMileage; double endMeter = MileageFix.FixData[i].MarkedEndPoint.UserSetMileage; long startPoint = MileageFix.FixData[i].MarkedStartPoint.FilePointer; long endPoint = MileageFix.FixData[i].MarkedEndPoint.FilePointer; double containsMeter = MileageFix.FixData[i].RealDistance; long containsPoint = MileageFix.FixData[i].SamplePointCount; double meterPerPoint = containsMeter / (containsPoint - 1); int id = 0; int indexIdValue = 0; long startPositionValue = 0; double startMeterValue = 0; long endPositionValue = 0; double endMeterValue = 0; long containsPointValue = 0; double containsMeterValue = 0; string indexTypeValue = ""; string sqlFormat = "insert into IndexSta values({0},{1},'{2}','{3}','{4}','{5}','{6}','{7}','{8}')"; string sqlText = string.Format(sqlFormat, id, indexIdValue.ToString(), startPositionValue.ToString(), startMeterValue.ToString(), endPositionValue.ToString(), endMeterValue.ToString(), containsPointValue.ToString(), containsMeterValue.ToString(), indexTypeValue); id = i; indexIdValue = 1; //第一段索引 if (startPoint <= fileStartPostion && fileStartPostion < endPoint) { startPositionValue = citHeadEndPostion; startMeterValue = Math.Round(startMeter + ((endMeter - startMeter) / containsPoint) * ((fileStartPostion - startPoint) / (channelNumber * 2)), 3); //如果分割的波形都在同一段索引内 if (startPoint < fileEndPostion && fileEndPostion <= endPoint) { endPositionValue = fileEndPostion - fileStartPostion + startPositionValue; endMeter = Math.Round(startMeter + ((endMeter - startMeter) / containsPoint) * ((fileEndPostion - startPoint) / (channelNumber * 2)), 3); containsPoint = (endPositionValue - startPositionValue) / (channelNumber * 2); containsMeterValue = Math.Abs(startMeterValue - endMeterValue); indexTypeValue = "正常"; sqlText = string.Format(sqlFormat, id, indexIdValue.ToString(), startPositionValue.ToString(), startMeterValue.ToString(), endPositionValue.ToString(), endMeterValue.ToString(), containsPointValue.ToString(), containsMeterValue.ToString(), indexTypeValue); //DBOperator.ExcuteSqlInCommonDB(sqlText); NewIndexOperator.ExcuteSql(sqlText); fileHead = endPositionValue; break; } endPositionValue = endPoint - fileStartPostion + startPositionValue; endMeterValue = endMeter; containsPointValue = (endPositionValue - startPositionValue) / (channelNumber * 2); containsMeterValue = Math.Abs(startMeterValue - endMeterValue); indexTypeValue = "正常"; sqlText = string.Format(sqlFormat, id, indexIdValue.ToString(), startPositionValue.ToString(), startMeterValue.ToString(), endPositionValue.ToString(), endMeterValue.ToString(), containsPointValue.ToString(), containsMeterValue.ToString(), indexTypeValue); NewIndexOperator.ExcuteSql(sqlText); fileHead = endPositionValue; } //中间段索引 if ((fileStartPostion < startPoint && fileStartPostion < endPoint) && (fileEndPostion > startPoint && fileEndPostion > endPoint)) { startPositionValue = fileHead;; startMeterValue = startMeter; endPositionValue = endPoint - startPoint + startPositionValue; endMeterValue = endMeter; containsPointValue = (endPositionValue - startPositionValue) / (channelNumber * 2); containsMeterValue = Math.Abs(startMeterValue - endMeterValue); indexTypeValue = "正常"; sqlText = string.Format(sqlFormat, id, indexIdValue.ToString(), startPositionValue.ToString(), startMeterValue.ToString(), endPositionValue.ToString(), endMeterValue.ToString(), containsPointValue.ToString(), containsMeterValue.ToString(), indexTypeValue); NewIndexOperator.ExcuteSql(sqlText); fileHead = endPositionValue; } //最后一段索引 if (startPoint < fileEndPostion && fileEndPostion <= endPoint) { startPositionValue = fileHead; startMeterValue = startMeter; endPositionValue = fileEndPostion - startPoint + startPositionValue; endMeterValue = Math.Round(startMeter + ((endMeter - startMeter) / containsPoint) * ((fileEndPostion - startPoint) / (channelNumber * 2)), 3); containsPointValue = (endPositionValue - startPositionValue) / (channelNumber * 2); containsMeterValue = Math.Abs(startMeterValue - endMeterValue); indexTypeValue = "正常"; sqlText = string.Format(sqlFormat, id, indexIdValue.ToString(), startPositionValue.ToString(), startMeterValue.ToString(), endPositionValue.ToString(), endMeterValue.ToString(), containsPointValue.ToString(), containsMeterValue.ToString(), indexTypeValue); NewIndexOperator.ExcuteSql(sqlText); fileHead = endPositionValue; } } return(true); } return(false); }