datatablemapping的问题
SqlConnection objcn = new SqlConnection(constr);string strcmd = "select sno ,sname,s易做图 from students";
string strcmd1 = "select sno,sname,s易做图,sage from students";
SqlDataAdapter objda = new SqlDataAdapter(strcmd, objcn);//第一个sqldataadapter
SqlDataAdapter objda1 = new SqlDataAdapter(strcmd1, objcn); //第二个sqldataAdapter
objda.MissingMappingAction = MissingMappingAction.Error;
DataSet myds = new DataSet();
/******************************************/
/* 列映射 */
DataColumnMapping[] mydcm = new DataColumnMapping[] {new DataColumnMapping("sno","学号"),
new DataColumnMapping ("sname","姓名"),new DataColumnMapping ("s易做图","性别")};
DataTableMapping mydm = new DataTableMapping("Table", "学生表",mydcm);//表映射
objda.TableMappings.Add(mydm);//为第一个sqldataAdapter添加表映射
objda.Fill(myds);
objda1.Fill(myds); //问题在这里:
如果我不做objda1.fill(myds);objda.fill(myds)的结构和我预期的一样,但是如过代码为这样的话:
objda.fill(myds);
objda1.fill(myds);
结果objda1填充的表中和objda填充的表一样,不仅没有sage这样的一列,而且列明是我设置的列映射,但映射我没有添加给objda1啊;但是如果把上面的代码对调一下顺序即:
objda1.fill(myds);
objda.fill(myds);
结果objda1填充的表中和objda1填充的表的结构一样,不仅有sage这样的一列,而且列名不是我设置的列映射,这是为什么啊?
for (int j = 0; j < myds.Tables.Count; j++)
{
Console.WriteLine(myds.Tables[j].TableName);
for (int i = 0; i < myds.Tables[0].Columns.Count; i++)
{
Console.WriteLine(myds.Tables[0].Columns[i].ColumnName);
}
}
补充:.NET技术 , C#