public (Result, string) Insert(IEnumerable <TemperatureFrame> data, object state = null) { using (var adapter = new TemperatureTableAdapter { Connection = new SqlConnection(SettingsContext.GlobalSettings.NifudaConnectionString) }) { if (!SafeCheck.IsValidConnection(adapter.Connection)) { return(Result.Unsuccess, $"Database connection error"); } var methodInfo = typeof(TemperatureTableAdapter).GetMethod("Insert"); foreach (var obj in data) { var tupleParameters = obj.PropertiesToTuple(); var values = methodInfo.GetParameters().Select(info => tupleParameters.FirstOrDefault(p => p.Name.ToLower() == info.Name.ToLower()).Value ?? ""); if (values == null) { continue; } methodInfo.Invoke(adapter, values.ToArray()); } return(Result.Success, $"Ok"); } }
private void CreateMeasurementTasks() { this.tokenSource = new CancellationTokenSource(); CancellationToken token = this.tokenSource.Token; this.temperatureMeasurementTask = new Task( delegate(object o) { bool b = o is CancellationToken; using (TemperatureTableAdapter adapter = new TemperatureTableAdapter()) { int counter = 0; Random temperatureValue = new Random(); while (true) { if (token.IsCancellationRequested) throw new OperationCanceledException(); int affectedRows = adapter.Insert( (float?)(temperatureValue.NextDouble() * 100.0), (short?)(temperatureValue.Next(0, 1023)), DateTime.Now); if (affectedRows <= 0) throw new Exception("The sensor data could not be inserted into the database!"); this.Invoke( (Action<int>) delegate(int cntr) { this.dataRecordsNumValueTolStripStatusLabel.Text = cntr.ToString(CultureInfo.InvariantCulture); }, ++counter); } } }, token); }
// Результат обязательно проверить на NULL! Выбирает дипазон 10 минут от заданной даты и ищет максимально близкое значение. // Если в диапазоне не оказалось значений, возвращает NULL public TemperatureFrame SelectLastByDate(DateTime time) { using (var adapter = new TemperatureTableAdapter { Connection = new SqlConnection(SettingsContext.GlobalSettings.NifudaConnectionString) }) { if (!SafeCheck.IsValidConnection(adapter.Connection)) { throw new ConnectionException(SettingsContext.GlobalSettings.NifudaConnectionString); } var dataTable = adapter.GetDataBetweenDate(time - new TimeSpan(0, 5, 0), time + new TimeSpan(0, 5, 0)); return(dataTable.AdaptWithSameProperties <TemperatureFrame, TemperatureDataTableRow>() .OrderBy(t => Math.Abs((t.Time - time).Ticks)) .FirstOrDefault()); } }
public IEnumerable <TemperatureFrame> Select(object state = null) { using (var adapter = new TemperatureTableAdapter { Connection = new SqlConnection(SettingsContext.GlobalSettings.NifudaConnectionString) }) { if (!SafeCheck.IsValidConnection(adapter.Connection)) { throw new ConnectionException(SettingsContext.GlobalSettings.NifudaConnectionString); } var dataTable = adapter.GetData(); foreach (var obj in dataTable.AdaptWithSameProperties <TemperatureFrame, TemperatureDataTableRow>()) { yield return(obj); } } }