当前位置: 首页 > 文章教程  > 计算机与互联网 > 网络编程

9.10其他常用对象

8/31/2020 9:19:23 PM 人评论

9.10其他常用对象

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对象筛选数据

相关教程

共有条评论 网友评论

验证码: 看不清楚?