9.10 其他常用对象
除了前面介绍的对象外,ADO.NET还提供了其他的对象,下面介绍两种常用的对象:DataTable对象和DataView对象。
9.10.1 DataTable对象
DataTable对象与DataSet对象一样,将数据库中的数据提取出来进行保存,以提供断开连接时对数据的访问。但是它们之间也有区别:DataTable对象保存单个表;DataSet对象可以保存多个表。在数据显示时,使用DataTable能够更加简单地控制数据显示。
开发者可以通过两种方式创建DataTable对象,第一种是通过DataSet对象的Tables属性获取,代码如下。
DataTable dt = ds.Tables[0];
第二种是通过动态创建的方式进行创建,这需要利用DataSet对象的相关属性和方法。动态创建DataTable对象的一般步骤如下。
(1)创建DataTable的实例对象。
(2)创建DataColumn对象构建表结构。
(3)将创建好的表结构添加到DataTable对象中。
(4)调用DataTable对象的NewRow()方法创建DataRow对象。
(5)在DataRow对象中添加一条或者多条数据记录。
(6)将数据插入到DataTable对象中。
【范例13】
通过下面的代码动态创建一个五行两列的表格,并将表格中的内容输出到页面。步骤如下。
(1)通过new创建DataTable的实例对象,代码如下。
DataTable dt = new DataTable();
(2)创建两个DataColumn对象,指定这两个对象的ColumnName、Unique、Caption和ReadOnly属性。以第一个对象为例,代码如下。
DataColumn column1 = new DataColumn("name", typeof(string)); column1.ColumnName = "name"; column1.Unique = true; column1.Caption = "ID"; column1.ReadOnly = true;
(3)调用dt.Columns.Add()方法将创建好的表结构添加到DataTable对象,代码如下。
dt.Columns.Add(column1);
(4)在for语句中调用NewRow()方法创建DataRow对象,并为DataRow对象添加记录,然后调用dt.Rows.Add()方法将数据插入到DataTable对象中,代码如下。
DataRow row; for (int i = 1; i <= 5; i++) { row = dt.NewRow(); //创建DataRow对象 row["name"] = "老师" + i; row["age"] = "年龄" + i; dt.Rows.Add(row); }
(5)创建DataSet的实例对象,并将DataTable添加到DataSet中,代码如下。
DataSet ds = new DataSet(); ds.Tables.Add(dt);
(6)通过foreach语句循环DataSet对象中的数据,并将数据显示到页面,代码如下。
string result = "<table border=\"1\">"; foreach (DataRow mDr in ds.Tables[0].Rows) { //遍历行 result += "<tr>"; foreach (DataColumn mDc in ds.Tables[0].Columns) { //遍历列 result += "<td>"+mDr[mDc].ToString()+"</td>"; } result += "</tr>"; } result += "</table>"; lblMessage.Text = result;
(7)运行页面查看效果,效果图不再显示。
DataTable对象包含多个属性和方法,如表9-11所示列举了常用属性。
表9-11 DataTable对象的常用属性
9.10.2 DataView对象
DataView对象可用于排序、筛选、搜索、编辑和导航的DataTable的可绑定数据的自定义列,通常把DataView称为数据视图。一个DataSet中可以有多个DataTable,而每一个DataTable对象都存在一个默认的数据视图。
开发者可以使用DataTable对象的DefaultView属性创建一个DataView对象。另外,开发者也可以自定义DataView表示DataTable中的数据的子集。
DataView对象中包含多个属性和方法,如表9-12和表9-13所示分别对这些属性和方法进行了说明。
表9-12 DataView对象的常用属性
表9-13 DataView对象的常用方法
【范例14】
通过SqlDataAdapter对象填充数据,然后通过DataView对象筛选数据,并将筛选后的结果输出到页面。步骤如下。
(1)通过SqlDataAdapter对象向DataSet对象中填充数据,代码如下。
string connectionString = "Data Source=SJB; Initial Catalog=UserRegister; User ID=sa; Pwd = 123456"; SqlConnection connection = new SqlConnection(connectionString); //创建SqlCommand对象 string sql = "SELECT * FROM UserInfo"; //声明SQL语句 SqlDataAdapter da = new SqlDataAdapter(sql, connection); //SQL语句和connection创建对象 DataSet ds = new DataSet(); da.Fill(ds);
(2)获取DataSet对象中的表,调用DataTable对象的DefaultView属性获取DataView对象,代码如下。
DataTable dt = ds.Tables[0]; System.Data.DataView dv = dt.DefaultView;
(3)设置DataView对象的RowFilter属性和Sort属性,代码如下。
dv.RowFilter = "UserId>=2 AND UserID<=4"; dv.Sort = "UserId desc";
(4)向窗体页面添加GridView控件,在后台中指定该控件的DataSource属性,并通过DataBind()方法进行绑定,代码如下。
gvShow.DataSource = dt; gvShow.DataBind();
(5)运行页面查看效果,如图9-6所示。从图9-6中可以看出,通过DataView对象筛选已经起到作用,已经查询出UserId字段的值大于等于2小于等于4的所有数据记录。
图9-6 DataView对象筛选数据
共有条评论 网友评论