日期:2014-05-18  浏览次数:20752 次

DataSet小问题请教一下.
DataSet dataset = new DataSet();
 dataset.Tables.Add("aaa");
 dataset.Tables.Add("AAA");
 adapter.Fill(dataset, "aaa"); // Fills "aaa", which already exists in the DataSet.
 

这是摘自MSDN里的.我想问下adapter.Fill(dataset, "aaa"); 既然有了dataset.Tables.Add("aaa");为什么还要adapter.Fill(dataset, "aaa"); 它们的区别是什么.

------解决方案--------------------
dataset 里有两个表'AAA','aaa'

Fill(dataset, "aaa"); 指定向'aaa'表填充数据
------解决方案--------------------
fill是将数据填充到dataset
------解决方案--------------------
如果ds中已经有该表,fill就是补充数据,给你个demo
C# code

DataSet ds = new DataSet();

        DataTable dt = new DataTable("aaa");
        ds.Tables.Add("aaa"); //自己先创建一个 aaa 表加入ds

        ds.Tables["aaa"].Columns.Add(new DataColumn("OrderID", typeof(int)));
        ds.Tables["aaa"].Columns.Add(new DataColumn("CustomerID", typeof(string)));
        DataRow dr = ds.Tables["aaa"].NewRow();
        dr["OrderID"] = 0;
        dr["CustomerID"] = "xyz";
        ds.Tables["aaa"].Rows.Add(dr);

        string conStr = "server=.;database=northwind;integrated security= sspi";
        SqlConnection con = new SqlConnection(conStr);
        SqlDataAdapter adapter = new SqlDataAdapter("select top 5 OrderId,CustomerID from Orders", con);

        adapter.Fill(ds, "aaa"); //再通过数据库查询填充 aaa 表

        this.gvTest.DataSource = ds.Tables["aaa"];
        this.gvTest.DataBind(); //可以观察到gridview中包括自建aaa表中的数据,以及后来查询所得数据

------解决方案--------------------
dataset.Tables.Add("aaa"); 
dataset.Tables.Add("AAA"); 
是在DataSet中初始化两个datatable,
adapter.Fill(dataset, "aaa") 这句是把adapter的command命令的Sql语句的结果填充到DataSet中的aaa这个datatable中
------解决方案--------------------
那么为什么dataset.Tables.Add("aaa"); 之后不能BIND gridview,照理说DATASET里面有该表了啊.

这还是个没有行列的空表,当然会出错