Запись данных в файл базы данных, по одной записи за раз - PullRequest
1 голос
/ 07 апреля 2010

Я хочу написать программу на C #, которая будет читать строку из таблицы данных (с именем loadDT) и обновлять файл базы данных (с именем Forecasts.mdb).

Моя таблица данных выглядит следующим образом (значение каждого дня - это число, представляющее прогноз использования киловатт):

Hour  Day1  Day2  Day3  Day4  Day5  Day6  Day7
   1   519   520   524   498   501   476   451 

Файл моей базы данных выглядит так:

Day   Hour  KWForecast
  1      1         519
  2      1         520
  3      1         524

... и т. Д.

По сути, я хочу иметь возможность прочитать одну строку из таблицы данных, а затем экстраполировать ее в файл базы данных, по одной записи за раз. Каждая строка из таблицы данных приводит к семи записям, записанным в файл базы данных. Есть идеи, как это сделать? Я могу подключиться к своей базе данных, строка подключения работает, и я могу обновить и удалить из базы данных. Я просто не могу обдумать, как делать эту запись за раз.

Ответы [ 2 ]

3 голосов
/ 07 апреля 2010

Вы пробовали циклически проходить через записи во входной базе данных и для каждой записи, выполняющей семь вставок в выходную базу данных?

В зависимости от того, какие API вы используете, у него будет такой тип шаблона.:

var inputRecordSet = // connect somehow
var outputRecordSet = // ditto

while (!inputRecordSet.EOF)
{
    outputRecordSet.Hour = inputRecordSet.Hour;

    outputRecordSet.Day1 = inputRecordSet.Day;
    outputRecordSet.KWForecast = inputRecordSet.Day1;
    outputRecordSet.Insert();

    outputRecordSet.Day2 = inputRecordSet.Day;
    outputRecordSet.KWForecast = inputRecordSet.Day2;
    outputRecordSet.Insert();

    // and so on... for seven days

   inputRecordSet.MoveNext();
}
1 голос
/ 07 апреля 2010

Один из способов - поместить значения в массив и цикл над ним:

while (reader.Read()) {

  int hour = reader.ReadInt32(0);
  int[] days = {
    reader.ReadInt32(1),
    reader.ReadInt32(2),
    reader.ReadInt32(3),
    reader.ReadInt32(4),
    reader.ReadInt32(5),
    reader.ReadInt32(6),
    reader.ReadInt32(7)
  };

  for (int day = 0; day < days.Length; day++) {
    // insert day+1, hour and days[day] in the database
  }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...