发布日期:2013-03-12 16:04 来源:未知 标签: ASP.net 对象
 

DataTable 是 ADO.NET 库中的核心对象,就像普通的数据库中的表一样,它也有行和列。它主要包括DataRow和DataColumn,分别代表行和列。

(1) 数据行(DataRow)

数据行是给定数据表中的一行数据,或者说是数据表中的一条记录。它可能代表一个学生、一位用户、一张订单或者一件货物的相关数据。DataRow对象的方法提供了对表中数据的插入、删除、更新和查看等功能。提取数据表中的行的语句如下:

DataRow dr = dt.Rows[n];

其中:DataRow代表数据行类;dr是数据行对象;dt代表数据表对象; n代表行的序号(序号从0开始)。

(2) 数据列(DataColumn)

数据表中的数据列(又称字段)定义了表的数据结构,例如,可以用它确定列中的数据类型和大小,还可以对其他属性进行设置。例如,确定列中的数据是否是只读的、是否是主键、是否允许空值等;还可以让列在一个初始值的基础上自动增殖,增值的步长还可以自行定义。

某列的值需要在数据行的基础上进行。语句如下:

01.string dc = dr.Columns["字段名"].ToString();

或者

01.string dc = dr.Column[i].ToString();//i表示对应的列索引

综合前面的语句,若想取出数据表(dt)中第3条记录中的“姓名”字段,并将该字段的值放入一输入框(textBox1)中时,语句可以写成:

01.DataRow dRow = dt.Rows[2 ];   // 从数据表提取行
02.string textBox1.Text=dRow["CompanyName"].ToString();  // 从行中取出字段的值

下面是一个利用代码在内存中创建表并显示的例子(仍然是采用了单页模式):

01.<%@ Page Language="C#" %>
02.<%@ Import Namespace="System.Data" %>
03.<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
04.<script runat="server">
05.   
06.    protected void Page_Load(object sender, EventArgs e)
07.    {
08.    }
09.    private void CreateDataTable()
10.    {
11.        //实例化DataTable
12.        DataTable data = new DataTable();
13.        //创建一个名为"ID"的列,值类型为int
14.        DataColumn dc1 = new DataColumn("ID", typeof(int));
15.        dc1.AllowDBNull = false;//不允许为空
16.        dc1.AutoIncrement = true;//自动递增
17.        dc1.AutoIncrementSeed = 1;//列起始值为1
18.        dc1.AutoIncrementStep = 1;//步长为1
19.        data.Columns.Add(dc1);//添加列到表中
20.        //创建一个新列,列名为"UserName",值类型为string
21.        DataColumn dc = new DataColumn("UserName", typeof(string));
22.        dc.Unique = true;//设置唯一索引
23.        dc.MaxLength = 20;//设置字段最大长度
24.        data.Columns.Add(dc);
25.        dc = new DataColumn("Birthday", typeof(DateTime));
26.        dc.DefaultValue = DateTime.Now.AddYears(-2000);
27.        data.Columns.Add(dc);
28.        DataRow row=data.NewRow();//得到与刚才创建的表有相同结构的行
29.        row["UserName"]="张飞";//设置列的UserName值,Birthday列采用默认值
30.        data.Rows.Add(row);//添加行
31.        row = data.NewRow();
32.        row["UserName"] = "刘备";
33.        row["Birthday"] = new DateTime(1, 3, 4);
34.        data.Rows.Add(row);
35.        row = data.NewRow();
36.        row["UserName"] = "关羽";
37.        row["Birthday"] = new DateTime(6, 11, 7);//跟周公同月同日了:)
38.        data.Rows.Add(row);
39.        Session["Data"] = data;//将创建的表和添加的数据保存到Session中
40.    }
41.   
42.    protected void ShowData()
43.    {
44.        if (Session["Data"] == null)
45.        {
46.            CreateDataTable();
47.        }
48.        DataTable data=(DataTable)Session["Data"];
49.        for (int i = 0; i < data.Rows.Count; i++)
50.        {
51.            Response.Write("<tr>");
52.            Response.Write("<td>" + data.Rows[i]["ID"].ToString() + "</td>");
53.            Response.Write("<td>" + data.Rows[i]["UserName"].ToString() + "</td>");
54.            Response.Write("<td>" + DateTime.Parse(data.Rows[i]["Birthday"].ToString()).ToShortDateString() + "</td>");
55.            Response.Write("</tr>");
56.        }
57.    }
58.</script>
59.<html xmlns="http://www.w3.org/1999/xhtml" >
60.<head runat="server">
61.    <title>自己创建DataTable的例子</title>
62.</head>
63.<body>
64.    <form id="form1" runat="server">
65.    <div>
66.    <table border="1" width="400">
67.    <tr><td>编号</td><td>用户名</td><td>生日</td></tr>
68.    <% ShowData(); %>
69.    </table>
70.    </div>
71.    </form>
72.</body>
73.</html>

上面代码我已经做了详尽的注释,它的运行效果如下:


 

相关评论

专题信息
    ASP.NET 是一种服务器端脚本技术,可以使(嵌入网页中的)脚本由 Internet 服务器执行。本教材是初学者的福音,十分的基础课程,0基础的都能学会制作自己的网站,非常好的学习教程。想学习ASP.net的爱好者可以从基础知识对象,控件,数据库这里开始吧。