需求是这样的,已经有了DataTable架构,其中每个字段的类型都规定好了,比如有4个字段:id(varchar),name(varchar),age(int),LeaveTime(DataTime).这四个字段都不能为null。 
现在要给这个DataTable中添加一行,只给主键id赋值,别的都为空,也就是string.Empty或""都可以。 
问题是在添加的过程中,string.Empty不能转换成int类型或DataTime类型。 
代码如下: 
C# code
DataRow dr = ds.Tables[0].NewRow();            foreach (DataColumn col in ds.Tables[0].Columns)
            {
                if (col == ds.Tables[0].PrimaryKey[0])
                {
                    dr[col.ColumnName] = "Insert_" + System.Guid.NewGuid();
                }
                else
                {
                    dr[col.ColumnName] = Convert.ChangeType(string.Empty, col.DataType);
                }
            }
            ds.Tables[0].Rows.Add(dr);
谢谢了
只要达到以下目的就可以了:
ds.GetXml();
Xml的形式如下:
<UserInfo>
</UserInfo>

解决方案 »

  1.   


    DataRow dr = ds.Tables[0].NewRow(); 
    foreach (DataColumn col in ds.Tables[0].Columns) 

      if (col == ds.Tables[0].PrimaryKey[0]) 
        { 
          dr[col.ColumnName] = "Insert_" + System.Guid.NewGuid(); 
        } 
      else 
      { 
        if(col.ColumnName=="age"){dr[col.ColumnName] = 0;}
        if(col.ColumnName=="LeaveTime"){dr[col.ColumnName] = new DataTime;}

      // dr[col.ColumnName] = Convert.ChangeType(string.Empty, col.DataType); 
      } 

    ds.Tables[0].Rows.Add(dr); 
      

  2.   


    DataRow dr = ds.Tables[0].NewRow(); 
    foreach (DataColumn col in ds.Tables[0].Columns) 

      if (col == ds.Tables[0].PrimaryKey[0]) 
        { 
          dr[col.ColumnName] = "Insert_" + System.Guid.NewGuid(); 
        } 
      else 
      { 
        
        if(col.ColumnName=="age"){dr[col.ColumnName] = 0;}
        if(col.ColumnName=="LeaveTime"){dr[col.ColumnName] = new DataTime();}

      // dr[col.ColumnName] = Convert.ChangeType(string.Empty, col.DataType); 
      } 

    ds.Tables[0].Rows.Add(dr);