DataSet基础-建立包含多个表的数据集(dataset),并建立表间制约关系

老规矩,直接复制代码,我的代码通常都有非常繁冗的注释,为了养成看代码的习惯,你还是看吧,呵呵!!
具体功能就是每一个按纽上面写的,自己看了!

  1using System;
  2using System.Collections;
  3using System.ComponentModel;
  4using System.Data;
  5using System.Drawing;
  6using System.Web;
  7using System.Web.SessionState;
  8using System.Web.UI;
  9using System.Web.UI.WebControls;
 10using System.Web.UI.HtmlControls;
 11
 12namespace XML
 13{
 14    /// <summary>
 15    /// WebForm1 的摘要说明。
 16    /// </summary>

 17    public class WebForm1 : System.Web.UI.Page
 18    {
 19        protected System.Web.UI.WebControls.Button btn2;
 20        protected System.Web.UI.WebControls.Button btn1;
 21        protected System.Web.UI.WebControls.DataGrid DataGrid1;
 22        protected System.Web.UI.WebControls.DataGrid DataGrid2;
 23        protected System.Web.UI.WebControls.DropDownList DropDownList1;
 24        protected System.Web.UI.WebControls.Label Label1;
 25        protected System.Web.UI.WebControls.Label Label2;
 26        protected System.Web.UI.WebControls.Label Label3;
 27        protected System.Web.UI.WebControls.Label Label4;
 28        protected System.Web.UI.WebControls.TextBox TextBox1;
 29        protected System.Web.UI.WebControls.Label Label5;
 30        protected System.Web.UI.WebControls.TextBox TextBox2;
 31        protected System.Web.UI.WebControls.Label Label6;
 32        protected System.Web.UI.WebControls.Button btn3;
 33        protected System.Web.UI.WebControls.Button btn4;
 34        protected System.Web.UI.WebControls.Button btn5;
 35        protected System.Web.UI.WebControls.Button btn6;
 36        protected System.Web.UI.WebControls.Button btn7;
 37        protected System.Web.UI.WebControls.Button btn8;
 38        protected System.Web.UI.WebControls.Button Button1;
 39        protected System.Web.UI.WebControls.Label Label7;
 40        protected System.Web.UI.WebControls.TextBox TextBox3;
 41    
 42        private void Page_Load(object sender, System.EventArgs e)
 43        {
 44            // 在此处放置用户代码以初始化页面
 45        }

 46
 47        Web 窗体设计器生成的代码
 75
 76        private void btn1_Click(object sender, System.EventArgs e)
 77        {//创建数据集
 78            DataSet ds=new DataSet("mydata");//实例化一个名字叫 mydata 非类型化数据集
 79            DataTable dtm=new DataTable("master");//new一个名字叫master(主表名)的数据表
 80            DataTable dtc=new DataTable("cong");//new一个名字叫cong(从表名)的数据表
 81            ds.Tables.Add(dtm);//把数据表添加到数据集中
 82            ds.Tables.Add(dtc);//同上
 83            Session["ds"]=ds;//把数据集存如session中,因为HTTP是无连接的,所以要在页面间传递最好就是求助与Session
 84        }

 85
 86        private void btn2_Click(object sender, System.EventArgs e)
 87        {//创建唯一键,这个必须是先创建了列后才可以用哈,当你激发了这个事件后,你添加两次行试下看
 88            DataSet ds=(DataSet)Session["ds"];//从Session中取出数据集再交给新声明的对象中
 89            System.Data.UniqueConstraint uc=new UniqueConstraint("ncqi",ds.Tables["master"].Columns["mid"]);//这行是关键,这里就是设置master表中的mid列是唯一键
 90            ds.Tables["master"].Constraints.Add(uc);//利用Constraints将这个属性给加进表去
 91            Session["ds"]=ds;//还给Session
 92        }

 93
 94        private void btn3_Click(object sender, System.EventArgs e)
 95        {//创建外键约束
 96            DataSet ds=(DataSet)Session["ds"];    
 97            System.Data.ForeignKeyConstraint fkc=new ForeignKeyConstraint("fkc",ds.Tables["master"].Columns["mid"],ds.Tables["cong"].Columns["mlik"]);//使用这个方法指定cong表的mlik是外键约束的,外键表是master的mid列
 98            ds.Tables["cong"].Constraints.Add(fkc);//利用Constraints将这个属性给加进表去
 99            Session["ds"]=ds;//还给Session
100        }

101
102        private void btn4_Click(object sender, System.EventArgs e)
103        {//添加列数据
104            DataSet ds=(DataSet)Session["ds"];//从Session中取出数据集再交给新声明的对象中
105            ds.Tables["master"].Columns.Add("mid",typeof(int));//增加一列(列名为mid,类型为 int)的数据到master表中
106            ds.Tables["master"].Columns.Add("mvalue",typeof(string));
107            //添加从表列
108            ds.Tables["cong"].Columns.Add("mlik",typeof(int));
109            ds.Tables["cong"].Columns.Add("cid",typeof(int));
110            ds.Tables["cong"].Columns.Add("cvalue",typeof(string));
111            //修改表头
112            ds.Tables["master"].Columns["mid"].Caption="主表ID";//设置表master的mid列的表头名字为 主表ID
113            ds.Tables["master"].Columns["mvalue"].Caption="主表值";
114            //把数据集还得Session
115            Session["ds"]=ds;
116            fill();//重新绑定
117        }

118
119        private void btn5_Click(object sender, System.EventArgs e)
120        {//添加行数据
121            DataSet ds=(DataSet)Session["ds"];//从Session中取出
122            //为master表添加两行;
123            DataRow dr=ds.Tables["master"].NewRow();//声明一个新行的实例
124            dr["mid"]=1;//设置mid行的值,这个值是可以通过其他方式传近来的,这个你懂撒
125            dr["mvalue"]="第一";//设置mvalue行的值
126            ds.Tables["master"].Rows.Add(dr);//将这行添加到表中去
127            dr=ds.Tables["master"].NewRow();//再创建一行与上面构架一样(没有数据)的新行
128            dr["mid"]=2;
129            dr["mvalue"]="第二行";
130            ds.Tables["master"].Rows.Add(dr);
131            //我 cong 表添加新行
132            DataRow drc=ds.Tables["cong"].NewRow();
133            drc["mlik"]=1;
134            drc["cid"]=1;
135            drc["cvalue"]="从表第一";
136            ds.Tables["cong"].Rows.Add(drc);
137            Session["ds"]=ds;
138            fill();//重新绑定
139
140        }

141
142        private void btn6_Click(object sender, System.EventArgs e)
143        {//修改主表ID,当你按了这个后,你会发现,cong表的MLIK键也变了
144            DataSet ds=(DataSet)Session["ds"];
145            ds.Tables["master"].Rows[0]["mid"]=3;//修改master表的第一行中mid列的值为 3
146            Session["ds"]=ds;
147            fill();//重新绑定
148        }

149
150        private void btn7_Click(object sender, System.EventArgs e)
151        {//求指定行列的值
152           DataSet ds=(DataSet)Session["ds"];
153            string tb=DropDownList1.SelectedValue.ToString();//得到选择的表名字
154            int r=Convert.ToInt32(TextBox1.Text);//得到行数
155            int c=Convert.ToInt32(TextBox2.Text);//得到列数
156            
157
158            object zhi=ds.Tables[""+tb+""].Rows[r][c];//一个object类型,的结果,
159            TextBox3.Text=zhi.ToString();//显示出来
160
161
162        }

163
164        private void btn8_Click(object sender, System.EventArgs e)
165        {//赋值当然是相反的,取值是把指定位置的值拿出来,赋值就是把指定的位置的值修改掉
166            DataSet ds=(DataSet)Session["ds"];
167            string tb=DropDownList1.SelectedValue.ToString();//得到选择的表名字
168            int r=Convert.ToInt32(TextBox1.Text);//得到行数
169            int c=Convert.ToInt32(TextBox2.Text);//得到列数
170            string zhi=TextBox3.Text.ToString();//和上面不同,只是把他的值直接指定,然后给下面
171            ds.Tables[""+tb+""].Rows[r][c]=zhi;
172
173            fill();//赋值后要想看到结果,当然需要重新绑定了
174        }

175        
176        private void fill()
177        {//做了个绑定到DataGrid的绑定类,方便其多次使用
178            DataSet ds=(DataSet)Session["ds"];
179            this.DataGrid1.DataSource=ds.Tables["master"];
180            this.DataGrid2.DataSource=ds.Tables["cong"];
181            this.DataGrid1.DataBind();
182            this.DataGrid2.DataBind();
183        }

184    }

185}

186


 1<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="XML.WebForm1" %>
 2<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
 3<HTML>
 4    <HEAD>
 5        <title>WebForm1</title>
 6        <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
 7        <meta content="C#" name="CODE_LANGUAGE">
 8        <meta content="JavaScript" name="vs_defaultClientScript">
 9        <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
10    </HEAD>
11    <body MS_POSITIONING="GridLayout">
12        <form id="Form1" method="post" runat="server">
13            <FONT face="宋体">
14                <asp:button id="btn2" style="Z-INDEX: 101; LEFT: 16px; POSITION: absolute; TOP: 216px" runat="server"
15                    Width="176px" Text="创建唯一键"></asp:button><asp:button id="btn3" style="Z-INDEX: 102; LEFT: 16px; POSITION: absolute; TOP: 264px" runat="server"
16                    Width="176px" Text="创建外键"></asp:button><asp:button id="btn4" style="Z-INDEX: 103; LEFT: 16px; POSITION: absolute; TOP: 120px" runat="server"
17                    Width="176px" Text="添加列"></asp:button><asp:button id="btn5" style="Z-INDEX: 104; LEFT: 16px; POSITION: absolute; TOP: 168px" runat="server"
18                    Width="176px" Text="添加行"></asp:button><asp:button id="btn6" style="Z-INDEX: 105; LEFT: 16px; POSITION: absolute; TOP: 312px" runat="server"
19                    Width="176px" Text="修改主ID"></asp:button><asp:button id="btn7" style="Z-INDEX: 106; LEFT: 16px; POSITION: absolute; TOP: 360px" runat="server"
20                    Width="176px" Text="求值"></asp:button><asp:button id="btn8" style="Z-INDEX: 107; LEFT: 16px; POSITION: absolute; TOP: 408px" runat="server"
21                    Width="176px" Text="赋值"></asp:button><asp:button id="btn1" style="Z-INDEX: 108; LEFT: 16px; POSITION: absolute; TOP: 72px" runat="server"
22                    Text="创建数据集和数据表"></asp:button><asp:datagrid id="DataGrid1" style="Z-INDEX: 109; LEFT: 232px; POSITION: absolute; TOP: 72px"
23                    runat="server" Width="312px"></asp:datagrid><asp:datagrid id="DataGrid2" style="Z-INDEX: 110; LEFT: 232px; POSITION: absolute; TOP: 216px"
24                    runat="server" Width="312px"></asp:datagrid><asp:dropdownlist id="DropDownList1" style="Z-INDEX: 111; LEFT: 272px; POSITION: absolute; TOP: 360px"
25                    runat="server">
26                    <asp:ListItem Value="master">主表</asp:ListItem>
27                    <asp:ListItem Value="cong">从表</asp:ListItem>
28                </asp:dropdownlist><asp:label id="Label1" style="Z-INDEX: 112; LEFT: 208px; POSITION: absolute; TOP: 104px" runat="server"
29                    Width="8px" Height="56px">主 表</asp:label><asp:label id="Label2" style="Z-INDEX: 113; LEFT: 208px; POSITION: absolute; TOP: 248px" runat="server"
30                    Width="8px" Height="32px">从表</asp:label><asp:label id="Label3" style="Z-INDEX: 114; LEFT: 216px; POSITION: absolute; TOP: 360px" runat="server">表:</asp:label><asp:label id="Label4" style="Z-INDEX: 115; LEFT: 216px; POSITION: absolute; TOP: 400px" runat="server">行 Rows:</asp:label><asp:textbox id="TextBox1" style="Z-INDEX: 116; LEFT: 288px; POSITION: absolute; TOP: 400px"
31                    runat="server" Width="40px"></asp:textbox><asp:label id="Label5" style="Z-INDEX: 117; LEFT: 352px; POSITION: absolute; TOP: 400px" runat="server">列 Column:</asp:label><asp:textbox id="TextBox2" style="Z-INDEX: 118; LEFT: 440px; POSITION: absolute; TOP: 400px"
32                    runat="server" Width="48px"></asp:textbox><asp:label id="Label6" style="Z-INDEX: 119; LEFT: 512px; POSITION: absolute; TOP: 400px" runat="server">值:</asp:label><asp:textbox id="TextBox3" style="Z-INDEX: 120; LEFT: 544px; POSITION: absolute; TOP: 400px"
33                    runat="server" Width="48px"></asp:textbox>
34                <asp:Button id="Button1" style="Z-INDEX: 121; LEFT: 16px; POSITION: absolute; TOP: 0px" runat="server"
35                    Text="下面按纽请按顺序激发事件,否则不保证不会出错" Width="568px" Height="64px" BackColor="GreenYellow" BorderColor="Blue"
36                    BorderStyle="Inset" BorderWidth="2px" Font-Bold="True" Font-Names="隶书" Font-Size="Large"
37                    Font-Underline="True" ForeColor="Blue"></asp:Button>
38                <asp:Label id="Label7" style="Z-INDEX: 122; LEFT: 216px; POSITION: absolute; TOP: 432px" runat="server"
39                    Width="360px" ForeColor="Red">行和列只能输入数字,切必须输入,因为是Demo,我懒的做验证控件了</asp:Label></FONT></form>
40    </body>
41</HTML>
42
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值