将数据表写入数据库文件,一次写入一条记录

时间:2010-04-07 06:39:57

标签: c# database datatable

我想编写一个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 个答案:

答案 0 :(得分:3)

您是否尝试循环输入数据库中的记录以及对输出数据库执行七次插入的每条记录?

很大程度上取决于您使用的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 :(得分:1)

一种方法是将值放在一个数组中,然后将循环放在它上面:

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
  }

}