DataAdapter, DataSet, SqlDateReader, DataTable, DataView操作


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

DataAdapter:? 获取数据库中的数据
DataSet, SqlDateReader, DataTable存储DataAdapter得来的数据。

1,通过 DataAdapter 使用数据源中的数据生成和填充 DataSet 中的每个 DataTable。
??? SqlDataAdapter da = new SqlDataAdapter(cmd);
??? DataSet ds = new DataSet(); da.Fill(ds);

2, SqlDataReader的创建必须调用 SqlCommand 对象的 ExecuteReader方法,而不是用new

DataSet与DataReader区别:

  • DataReader使用时始终占用SqlConnection,在线操作数据库.DataSet则是将数据一次性加载在内存 中.支持数据库访问的断开连接模型.
  • DataReader每次只在内存中加载一条数据,节约内存.DataSet将数据全部加载在内存中.比较消耗内存.
  • DataReader单向只读.DataSet支持查询\修改\删除等操作,比较灵活.
  • DataReader提供了快速向前的游标风格的数据访问,故不能用来分页,分页时要转为DataTable
  • DataReader从名称就可看出数据是只读的
  • DataReader与 SqlCommand搭配.DataSet与DataAdapter 结合使用.

3,DataSet, DataReader数据的读取
??? (1)
????? DataSet利用DataTable读取
???????? DataTable dt =DataSet1Tables[0];
????????
??????????? foreach (DataRow row in dt.Rows)
??????????? {
??????????????? Console.wirte(row[“Name”] );
??????????? }

??? (2)
? ? ?? MySqlDataReader dr = _newsDA.GetData(1, 3, 0);
???????? while (dr.Read()){
? ? ? ? ? ? Console.wirte(dr[“Name”]);
???????????????????????? // 或者dr[“0”], dr.GetInt32(0);指定类型返回
???? }?
???? (3)
? ? ?? DataReader也可用DataTable读取
???? ? DataTable dt = new DataTable();
?????? dt.Load( DataReader1 );
???? load:用DataReader数据源的值填充 DataTable。如果 DataTable 已经包含行,则从数据源传入的数据将与现有的行合并。

4, DataTable 与 DataView
利用DataView可对数据进行排序,筛选,并保存结果视图。
?DataView DV = dt.DefaultView;
?DV.Sort = “department, amount desc”;

5, GridView 的DataSource 可以是DataSet, DataReader, DataTable, DataView