用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");
例如:
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");
这样才能正确的使数据被填充.
这样才能正确的使数据被填充.
这样才能正确的使数据被填充.
是否要保证定义的列名称要和Adapter中的要求一致.