【问题标题】:Writing datatable to database file, one record at a time将数据表写入数据库文件,一次一条记录
【发布时间】:2011-02-05 03:17:15
【问题描述】:

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

...等等。

基本上,我希望能够从数据表中读取一行,然后将其推断到我的数据库文件中,一次一条记录。数据表中的每一行将导致将 7 条记录写入数据库文件。关于如何解决这个问题的任何想法?我可以连接到我的数据库,连接字符串有效,并且可以从数据库中更新和删除。我只是想不通如何一次完成一张唱片。

【问题讨论】:

    标签: c# database datatable


    【解决方案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
      }
    
    }
    

    【讨论】:

    • 这看起来不错,Guffa。我会试一试,看看会发生什么。非常感谢!
    【解决方案2】:

    您是否尝试过遍历输入数据库中的记录,并为每条记录执行七次插入到输出数据库中?

    很大程度上取决于您使用的 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();
    }
    

    【讨论】:

    • 实际上,不,我没有尝试过……但这可能不是一个坏主意!我可以使用 foreach 循环遍历数据表并将 7 条记录插入数据库,然后移动到数据表中的下一行。唔。谢谢!我现在就试试!
    猜你喜欢
    • 1970-01-01
    • 2020-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-02
    • 1970-01-01
    • 1970-01-01
    • 2018-09-27
    相关资源
    最近更新 更多