循环把数组的元素放入表里的问题
public void RptReceive()
     {
         DataAccess.Class1 dac = new DataAccess.Class1();
         DataSet ds = dac.getRecRpt();
         DataRow dr = ds.Tables[0].NewRow();
         RPTItem[] RptReceive = apiclient.receiveRPT();
         if (RptReceive == null || RptReceive.Length == 0)
         {
         }
         else
         {
             for (int i = 0; i < RptReceive.Length; i++)
             {
                 dr["SmID"] = Convert.ToInt64(RptReceive[i].getSmID().ToString());
                 dr["RecRptNumber"] = RptReceive[i].getMobile().ToString();
                 dr["RecRptContent"] = RptReceive[i].getDesc().ToString();
                 dr["RecRptTime"] = Convert.ToDateTime(RptReceive[i].getRptTime().ToString());
                 ds.Tables[0].Rows.Add(dr);                 
             }
         }          
     }
定义了RptReceive数组。当数组里只有一个元素的时候运行正常,超过一个就会在ds.Tables[0].Rows.Add(dr);处报错“该行已经属于此表”。
应该是循环有问题,以dr["SmID"] = Convert.ToInt64(RptReceive[i].getSmID().ToString()这行为例,当RptReceive[i].getSmID()获取
2个数组就无法把他们放入字段"SmID"中。请大虾们写个方法,能让我无论取出多少个元素都能先取一个放一个到表(行)里,然后换一行再取一个放到新行里
小弟初学.NET,望不吝赐教,谢谢。
PS:用的是VS2005,C# ,  MSSQL2005
------解决方案-------------------- DataRow dr = ds.Tables[0].NewRow();  
这里你只New了一行。在下面却在循环添加N行。。
------解决方案--------------------
DataRow dr = New DataRow ();
这句话加到下面去
for (int i = 0; i < RptReceive.Length; i++)  
           {  
               DataRow dr = New DataRow ();
               dr["SmID"] = Convert.ToInt64(RptReceive[i].getSmID().ToString());  
               dr["RecRptNumber"] = RptReceive[i].getMobile().ToString();  
               dr["RecRptContent"] = RptReceive[i].getDesc().ToString();  
               dr["RecRptTime"] = Convert.ToDateTime(RptReceive[i].getRptTime().ToString());  
               ds.Tables[0].Rows.Add(dr);              
           }  
应该可以的吧
------解决方案-------------------- 把new 新行 放到循环里面去