2012-06-12 65 views
0

我一直在研究一个程序,该程序允许我将数据从我的sql服务器数据库上载到SOAP服务中。我可以成功将数据上传到服务中。问题是正在插入相同的行。以下是我的代码的一部分:'创建一个动态变量

  List<service1.SDataRow> ArrayOfSData = new List<ne_service_demo2.service1.SDataRow>(); 
       //data to be uploaded. 
        service1.SDataRow row1 = new service1.SDataRow(); 
        foreach (DataRow dRow in dTable.Rows) 
        { 

         row1.SensorTimeStamp = dRow["SensorTimeStamp"].ToString(); 
         row1.SensorID = dRow["SensorID"].ToString(); 
         row1.PercentFull = dRow["PercentFull"].ToString(); 
         row1.Temp = dRow["Temp"].ToString(); 
         row1.TempReading = dRow["TempReading"].ToString(); 
         row1.Sig = dRow["Sig"].ToString(); 
         row1.SignalReading = dRow["SignalReading"].ToString(); 
         row1.Noi = dRow["Noi"].ToString(); 
         row1.NoiseReading = dRow["NoiseReading"].ToString(); 
         row1.Cou = dRow["Cou"].ToString(); 
         row1.CountReading = dRow["CountReading"].ToString(); 
         row1.NewPercentFull = dRow["NewPercentFull"].ToString(); 
         row1.Current_Gallons_In_Tank = dRow["Current_Gallons_In_Tank"].ToString(); 
         ArrayOfSData.Add(row1);              
        } 

        service1.SensorData sd = new service1.SensorData(); 
        sd.API_ACCESS_KEY = "7e070c1981ccc368483a207801be17aa17b2334c"; 
        sd.AccountCode = "0000000"; 
        sd.SData = ArrayOfSData.ToArray(); 

        // Asynchronous call 
        ws.PostSensorDataCompleted += WebSeviceResult; 
        ws.PostSensorDataAsync(sd);` 

当我遍历我的数据库表时,所有数据都会转到相应的字段或列。同样,问题是我得到相同的行x次。我知道问题是“row1”,因为它不断更新新的值,同时仍然保持列表的数量。但是,我不能让row1成为列表类型,因为它必须是SDataRow类型,因为这是将我的服务链接到我的数据库的列的类。我也尝试使用List.Clear()方法清除我的循环内的列表,但没有奏效。当我在每次迭代后尝试清除列表时,我会收到一条错误消息,提示“项目已添加”。所以理论上clear()方法应该可以工作,它的row1会导致问题。有谁知道周围的工作或制作方法

回答

4

您正在循环外部创建SDataRow的实例。在循环内部,您正在设置同一个实例的属性(每次迭代覆盖它们),然后将同一个实例添加到列表中。

更改代码的一部分这样的:

foreach (DataRow dRow in dTable.Rows) 
    { 
     service1.SDataRow row1 = new service1.SDataRow(); 

所以,你需要foreach循环

+0

非常感谢您的内部创建新实例。我完全忽略了那个简单的细节,那是我解决问题的方法。我再次感谢它。 – Rick