当前位置:编程学习 > C#/ASP.NET >>

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#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,