DataSet数据集

来源:互联网 发布:第一学历 知乎 编辑:程序博客网 时间:2024/04/25 12:40

填充DataSet数据集

 DataSet数据集表示来自一个或多个数据源数据的本地副本,是数据的集合,也可以看作是一个虚拟的表。DataSet对象允许Web窗体半独立于数据源运行。DataSet能够提高程序性能,因为DataSet从数据源中加载数据后,就会断开与数据源的连接,开发人员可以直接使用和处理这些数据,当数据发生变化并要更新时,则可以使用DataAdapter重新连接并更新数据源。DataAdapter可以进行数据集的填充,创建DataAdapter对象的代码如下所示。 

SqlDataAdapter da=new SqlDataAdapter("select * from news",con); //创建适配器 

 

上述代码创建了一个DataAdapter对象并初始化DataAdapter对象,DataAdapter对象的构造函数允许传递两个参数初始化,第一个参数为SQL查询语句,第二个参数为数据库连接的SqlConnection对象。初始化DataAdapter后,就需要将返回的数据的集合存放到数据集中,示例代码如下所示。

DataSet ds = new DataSet(); //创建数据集 da.Fill(ds, "tablename"); //Fill方法填充 

 

上述代码创建了一个DataSet对象并初始化DataSet对象,通过DataAdapter对象的Fill方法,可以将返回的数据存放到数据集DataSet中。DataSet可以被看作是一个虚拟的表或表的集合,这个表的名称在Fill方法中被命名为tablename。 

====================================================================================================================================

显示 DataSet 

当返回的数据被存放到数据集中后,可以通过循环语句遍历和显示数据集中的信息。当需要显示表中某一行字段的值时,可以通过DataSet对象获取相应行的某一列的值,示例代码如下所示。

 ds.Tables["tablename"].Rows[0]["title"].ToString(); //获取数据集 

 

上述代码从DataSet对象中的虚表tablename中的第0行中获取title列的值,当需要遍历DataSet  时,可以使用DataSet对象中的Count来获取行数,示例代码如下所示。

for (int i = 0; i < ds.Tables["tablename"].Rows.Count; i++) //遍历DataSet数据集 {  Response.Write(ds.Tables["tablename"].Rows[i]["title"].ToString()); } 


DataSet不仅可以通过编程的方法来实现显示,也可以使用ASP.NET中提供的控件来绑定数据集并显示。ASP.NET中提供了常用的显示DataSet数据集的控件,包括RepeaterDataListGridView等数据绑定控件。将DataSet数据集绑定到DataList控件中可以方便的在控件中显示数据库中的数据并实现分页操作,示例代码如下所示。

DataList1.DataSource = ds; //绑定数据集 DataList1.DataMember = "tablename";DataList1.DataBind(); //绑定数据 


上述代码就能够将数据集ds中的数据绑定到DataList控件中。DataList控件还能够实现分页、自定义模板等操作,非常方便开发人员对数据开发。

 

=============================================================================================================================================

 

DataAdapter适配器对象 

在创建了数据库连接后,就需要对数据集DataSet进行填充,在这里就需要使用DataAdapter对象。在没有数据源时,DataSet对象对保存在Web窗体可访问的本地数据库是非常实用的,这样降低了应用程序和数据库之间的通信次数。然而DataSet必须要与一个或多个数据源进行交互,DataAdapter就提供DataSet对象和数据源之间的连接。 

 

若要使一个使用DataAdapter对象的DataSet要能够和一个数据源之间交换数据,则可以使用DataAdapter属性来指定需要执行的操作,这个属性可以是一条SQL语句或者是存储过程,示例代码如下所示。

string str = "server='(local)';database='mytable';uid='sa';pwd='sa'"; //创建连接字串SqlConnection con = new SqlConnection(str); con.Open(); //打开连接 SqlDataAdapter da = new SqlDataAdapter("select * from news", con); //DataAdapter对象 con.Close(); //关闭连接 

上述代码创建了一个DataAdapter对象,DataSet对象可以使用该对象的Fill方法来填充数据集。