2012-06-12 97 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