黑马程序员技术交流社区

标题: DataSet的作用与用法, [打印本页]

作者: 天高地阔    时间: 2012-4-9 16:43
标题: DataSet的作用与用法,
,本人水平比较菜,还请各位浅显易懂的讲解下,
作者: 吴永飞    时间: 2012-4-9 17:06
dataset是ADO.NET的重要核心对象,用于存储临时数据表,改对象底层使用XML。
存储在内存当中 比较耗费资源。
例如
//数据适配器。
        SqlDataAdapter da = new SqlDataAdapter(sqlStr, con);
//数据集对象。
        DataSet ds = new DataSet();
//填充到数据集。
        da.Fill(ds, tableName);
//填充之后你就可以使用数据集里面的表了。
        dv = ds.Tables[tableName].DefaultView;
作者: 职业规划-蔡红微老师    时间: 2012-4-9 17:26
dataset是数据集,数据集里包含datatable,还有数据表之间的关系等,一个数据集可以不包含表,一个或多个datatable表。   

  datatable是数据表,它有列columns,行rows等。DataView是视图

DataView用来创建DataTable中所存储数据的不同视图,通常用于数据绑定   
  DataView   DV   =   ds.Tables["表名"].DefaultView;   
  DataGrid1.DataSource=DV;


简单说就是:   
  DataSet:数据集。一般包含多个DataTable,用的时候,dataset["表名"]得到DataTable   
   
  DataTable:数据表。   
  一:   
  SqlDataAdapter   da=new   SqlDataAdapter(cmd);   
  DataTable   dt=new   DataTable();   
  da.Fill(dt);   
   
  -----------------   
  直接把数据结果放到datatable中,   
  二:   
  SqlDataAdapter   da=new   SqlDataAdapter(cmd);   
  DataSet   dt=new   DataSet();   
  da.Fill(dt);   
  ----------------   
  数据结果放到dataset中,若要用那个datatable,可以这样:dataset[0]   
  更常见的用法:   
  SqlDataAdapter   da=new   SqlDataAdapter(cmd);   
  DataSet   dt=new   DataSet();   
  da.Fill(dt,"table1");   
  用的时候:这样取datatable:   
   
  dataset["table1"]   

=======================//前段部分为网上收集的资料,并非原创

DataTable表示内存中的一个表。

DataTable的创建

DataTable dt=new DataTable("tbAmount");   //创建DataTable
     dt.Columns.Add("riqi",System.Type.GetType("System.String"));  //创建DataTable的列的框架
     //也可以用DataColumn dc=new DataColumn("riqi",System.Type.GetType("System.String"));   dt.Columns.Add(dc);
     dt.Columns.Add("bianm",System.Type.GetType("System.String"));
     dt.Columns.Add("xAmount",System.Type.GetType("System.String"));
     dt.Columns.Add("jPoints",System.Type.GetType("System.String"));

       DataRow drw=dt.NewRow();        //创建一行
      drw["riqi"]="2008-12-25";              //把数据加进行
      drw["bianm"]="100007";
      drw["xAmount"]="234";
      drw["jPoints"]="900";
      dt.Rows.Add(drw);                        //把行添加到DataTable中


作者: 黄雄斌    时间: 2012-4-9 17:31
DataSet数据集是ADO.NET的断开式结构的核心组件,它的数据是与数据库断开的,即它在与数据源断开的缓存中存储数据,从而实现了独立于任何数据源的数据访问。

DataSet可用于多层应用程序中,如果应用程序运行在中间层的业务对象中来访问数据库,则业务对象需将脱机数据结构传递给客户应用程序。

DataSet的功能:浏览、排序、搜索、过滤、处理分级数据、缓存更改等;还可以与XML数据互换。

DataSet的结构和关系型数据库很类似,具有表、行、列等属性。主要用于在内存中存放数据,可以一次读取整张数据表的内容。DataSet中可包括多个DataTable,DataTable中又包括多个DataRow、DataColumn、Constraint对象,分别存放数据表的行信息、列信息及约束信息,可通过DataRow、DataColumn来查看、操作其中的数据,如需将操作结果返回给数据库的话,则可以调用DataAdapter的 Update方法。此外DataSet对象还包括DataRelation对象,用于表示表间的关系。

在使用DataSet对象之前,必须有一个可以建立初始化数据集的对象,即DataAdapter对象。

DataColumn对象的常用属性及方法如下。

◆     Count属性:DataTable对象中的字段数;

◆     DataType:该列的数据类型;

◆     ColumnName属性:该列的名字;

◆     AllNull属性:该表字段是否接受空值;

DataRow对象的常用属性及方法。

◆     RowState属性:行对象的状态;

◆     ItemArray属性:以数组方式读取行内数据;

◆     Item方法:读取行内的数据,如Item(3),就是读取第3个数据。



※     DataSet的操作:

(1)      DataSet ds=new DataSet();

DataTable dt=new DataTable("newTable");

ds.Tables.Add(dt);

(2)      DataSet ds=new DataSet();

DataTable dt=ds.Tables.Add("newTable");

上述两种方法都可以在DataSet中添加一个DataTable,看需要而进行选择。添加DataTable后,需向其中添加行和列。

DataSet ds=new DataSet();

DataTable dt=ds.Tables.Add("newTables");

DataColumn col=dt.Columns.Add("newColumn",typeof(int));

col.AllowDBNull=false;

col.MaxLength=4;

col.Unique=true;

上述代码向DataSet中的DataTable中添加名为”newColumn”,类型为int且不为空,最大长度为4和唯一性为真的列。

※     使用DataSet对象处理数据

(1)修改某一条记录中的某一数据时,首先对DataRow对象使用BeginEdit方法,结束时使用EndEdit方法。

       DataRow row=newDataSet.Table[0].Rows[0];

// 把DataSet对象newDataSet中第一表的第一行,赋给row对象

row.BeginEdit();

row[2]=****;

// 修改row对象的第3个数据

row.EndEdit();

(2)为某一记录添加一行数据时,要调用DataTable对象的NewRow方法,创建一个新的空行,再调用DataRow的Add方法将该行添加到表中。

DataRow row1=new DataSet.Tables[0].Row[0];

row[1]=”aaa”;

row[2]=”bbb”;

newDataSet.Tables[0].Rows.Add(row1);

// 把row1增加到Rows中



(3)当删除表中某一行数据时,调用DataRow的Delete方法或DataRowCollection的Remove方法。其区别是Delete方法实际上不是从 DataTable中删除掉一行,而是将其标志删除,仅仅是做个记号,当应用程序调用AcceptChanges方法时才会真正删除;而Remove方法则是真正的从DataRow中删除一行。

       DataRow row2=newDataSet.Tables[0].Row[2];

       row2.Delete();

       newDataSet. AcceptChanges();

       // 真正删除row2

DataAdapter对象在DataSet与数据之间起桥梁作用

string strConn="uid=账号;pwd=密码;database=数据库;server=服务器";//SQL Server链接字符串
SqlConnection ConnSql=new SqlConnection (strConn); //Sql链接类的实例化
ConnSql.Open ();//打开数据库
string strSQL="SELECT * FROM 表名1 "; //要执行的SQL语句
SqlDataAdapter da=new SqlDataAdapter(strSQL,ConnSql); //创建DataAdapter数据适配器实例
DataSet ds=new DataSet();//创建DataSet实例
da.Fill(ds,"自定义虚拟表名");//使用DataAdapter的Fill方法(填充),调用SELECT命令
ConnSql.Close ();//关闭数据库







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2