用DataAdapter填充一个DataSet的table时,如果一个Table的DataColumn的架构已经指定时,则 DataAdapter的SelectComamnd中的select 字句中的列名必须和DataColumn中的ColumnName一样(但是可以忽略大小写),才能称成功,而SelectCommand中的字段顺序不需要和table的Datacolumns中的列顺序一致。也就是说DataAdapter填充一个DataSet中已经存在的table时,是按照字段的名字来映射填充的。
例如:
 string sql = "select id ,name from product";
 SqlDataAdapter adapter = new SqlDataAdapter(sql,conn);
 DataSet dataset = new DataSet();
 DataTable table = new DataTable("A");
 DataColumn  col1 = new DataColumn("name",typeof(string));
 DataColumn col2 = new DataColumn("ID",typeof(int));
 table.Columns.add(col1);
 table.Columns.add(col2);
 dataset.Tables.add(table);
 adapter.Fill(dataset,"A");
 这段可以执行成功, 但是把DataColumn的ColumnName修改一下就不能成功了。 
string sql = "select id ,name from product";
 SqlDataAdapter adapter = new SqlDataAdapter(sql,conn);
 DataSet dataset = new DataSet();
 DataTable table = new DataTable("A");
 DataColumn  col1 = new DataColumn("col1",typeof(string));
 DataColumn col2 = new DataColumn("col2",typeof(int));
 table.Columns.add(col1);
 table.Columns.add(col2);
 dataset.Tables.add(table);
 adapter.Fill(dataset,"A");

解决方案 »

  1.   

    你可以不指定DataTable中的列的定义,否则要保证定义的列名称要和Adapter中的要求一致.
    这样才能正确的使数据被填充.
      

  2.   

    你可以不指定DataTable中的列的定义,否则要保证定义的列名称要和Adapter中的要求一致.
    这样才能正确的使数据被填充.
      

  3.   

    保证定义的列名称要和Adapter中的要求一致.
    这样才能正确的使数据被填充.
      

  4.   

    是啊,要保证定义的列名称和Adapter中的一致.
      

  5.   

    不好意思,我的问题就是
    是否要保证定义的列名称要和Adapter中的要求一致.