【学习笔记】
申明DataSet的对象ds: DataSet ds = new DataSet();
申明内存表: DataTable dt =new DataTable("表名");
内存表dt添加到DataSet实例对象ds表集合中: ds.Tables.Add("dt");
实例化一个列并设置其属性(可省略):DataColumn id = new DataColumn("id",typeof(Int32));
表中添加列并设置类型:dt.Columns.Add("列名",typeof(列类型));
申明基类数组,存放表数据:Object[] dt_arr = new object[n];(n表示数组列数)
列出数组的所有数据:dt_arr[0]=?;dt_arr[1]=?;...dt_arr[n-1]=?;(其中?字符串数据要加"")
将数组数据加到表的行中:dt.Rows.Add(dt_arr);
DataSet对象ds存放到Session中: Session["ds"]=ds;
数据绑定到GridView: Fill();
添加Fill方法:(1)从Session取出DataSet对象:ds = (DataSet)Session["ds"]; (2)读取表的数据源:表名.DataSource = ds.Tables["表名"];(3)数据绑定:表名.DataBind();
设置主键: UniqueConstraint uc = new UniqueConstraint("约束名", ds.Tables["表名"].Columns["要设置主键的列名"],true);ds.Tables["表名"].Constraints.Add(uc);
设置两个表外键: ForeignKeyConstraint fc = new ForeignKeyConstraint("约束名", ds.Tables["表名1"].Columns["主表列名"], ds.Tables["表名2"].Columns["从表列名"]);ds.Tables["表名2"].Constraints.Add(fc);
从表中获取所需的数据:ds.Tables["表名"].Rows[行索引]["列名"(列索引)].ToString();
修改表中的数据: ds.Tables["表名"].Rows[行索引]["列名"(列索引)] = "修改后的值";
多个DataAdapter填充同一个 DataSet:SqlDataAdapter sda1 = new SqlDataAdapter("select 字段1,字段2,字段3,... from 表名",ConfigurationManager.ConnectionStrings["数据源"].ConnectionString);DataSet ds = new DataSet();sda1.Fill(ds, "t1"); SqlDataAdapter sda2 = new SqlDataAdapter("select 字段1,字段2,字段3,... from 表名",ConfigurationManager.ConnectionStrings["数据源"].ConnectionString);sda2.Fill(ds, "t2");GridView1.DataSource = ds.Tables["t1"];GridView1.DataBind();GridView2.DataSource = ds.Tables["t2"];GridView2.DataBind();
另一种方法(SelectCommand)填充同一个DataSet: SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["数据源"].ConnectionString);SqlDataAdapter sda = new SqlDataAdapter();sda.SelectCommand = new SqlCommand("select 字段1,字段2,字段3,... from 表名",conn);DataSet ds = new DataSet();sda.Fill(ds,"t1");sda.SelectCommand = new SqlCommand("select 字段1,字段2,字段3,... from 表名", conn);sda.Fill(ds,"t2");
外键关联方法:UniqueConstraint uc = new UniqueConstraint("t1",ds.Tables["t1"].Columns["列名"],true);ds.Tables["t1"].Constraints.Add(uc);ForeignKeyConstraint fkc = new ForeignKeyConstraint("f1", ds.Tables["t1"].Columns["外键列名"], ds.Tables["t2"].Columns["外键列名"]);ds.Tables["t2"].Constraints.Add(fkc);ds.Tables["t2"].Constraints.Add(fkc);Session["ds"]=ds;Response.Write(ds.Relations.Count);Fill();
按照主键值删除行: DataSet ds = (DataSet)Session["ds"];
string keys = GridView1.DataKeys[e.RowIndex].Value.ToString();
DataRow dr=ds.Tables["t1"].Rows.Find(keys);
ds.Tables["t1"].Rows.Remove(dr); Fill();
两个数据DataSet合并:DataSet ds = (DataSet)Session["ds"];DataSet ds1 = (DataSet)Session["ds1"];ds.Merge(ds1,false); //false不保留DataSet更改的数据,true 保留
缓存DataSet到服务器:DataSet ds = (DataSet)Cache.Get("缓存名"); //取出Cache
if (ds == null)
{ 连接数据库的三句话(SqlConnection conn、SqlDataAdapter sda、sda.SelectCommand)
DataSet cds = new DataSet();
sda.Fill(cds, "t1");
cds.ExtendedProperties.Add("ds_t1", DateTime.Now.ToLongTimeString());
Cache.Insert("缓存名", cds, null, DateTime.Now.AddMinutes(2), TimeSpan.Zero);//存入Cache Response.Write("对象已经从数据库填充并存入Cache");
GridView1.DataSource = cds.Tables["t1"];
GridView1.DataBind();
}
else
{
Response.Write("对象还在缓存中,直接调用");
GridView1.DataSource = ds.Tables["t1"];
GridView1.DataBind();
}
清除缓存:Cache.Remove("缓存名");
申明内存表: DataTable dt =new DataTable("表名");
内存表dt添加到DataSet实例对象ds表集合中: ds.Tables.Add("dt");
实例化一个列并设置其属性(可省略):DataColumn id = new DataColumn("id",typeof(Int32));
表中添加列并设置类型:dt.Columns.Add("列名",typeof(列类型));
申明基类数组,存放表数据:Object[] dt_arr = new object[n];(n表示数组列数)
列出数组的所有数据:dt_arr[0]=?;dt_arr[1]=?;...dt_arr[n-1]=?;(其中?字符串数据要加"")
将数组数据加到表的行中:dt.Rows.Add(dt_arr);
DataSet对象ds存放到Session中: Session["ds"]=ds;
数据绑定到GridView: Fill();
添加Fill方法:(1)从Session取出DataSet对象:ds = (DataSet)Session["ds"]; (2)读取表的数据源:表名.DataSource = ds.Tables["表名"];(3)数据绑定:表名.DataBind();
设置主键: UniqueConstraint uc = new UniqueConstraint("约束名", ds.Tables["表名"].Columns["要设置主键的列名"],true);ds.Tables["表名"].Constraints.Add(uc);
设置两个表外键: ForeignKeyConstraint fc = new ForeignKeyConstraint("约束名", ds.Tables["表名1"].Columns["主表列名"], ds.Tables["表名2"].Columns["从表列名"]);ds.Tables["表名2"].Constraints.Add(fc);
从表中获取所需的数据:ds.Tables["表名"].Rows[行索引]["列名"(列索引)].ToString();
修改表中的数据: ds.Tables["表名"].Rows[行索引]["列名"(列索引)] = "修改后的值";
多个DataAdapter填充同一个 DataSet:SqlDataAdapter sda1 = new SqlDataAdapter("select 字段1,字段2,字段3,... from 表名",ConfigurationManager.ConnectionStrings["数据源"].ConnectionString);DataSet ds = new DataSet();sda1.Fill(ds, "t1"); SqlDataAdapter sda2 = new SqlDataAdapter("select 字段1,字段2,字段3,... from 表名",ConfigurationManager.ConnectionStrings["数据源"].ConnectionString);sda2.Fill(ds, "t2");GridView1.DataSource = ds.Tables["t1"];GridView1.DataBind();GridView2.DataSource = ds.Tables["t2"];GridView2.DataBind();
另一种方法(SelectCommand)填充同一个DataSet: SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["数据源"].ConnectionString);SqlDataAdapter sda = new SqlDataAdapter();sda.SelectCommand = new SqlCommand("select 字段1,字段2,字段3,... from 表名",conn);DataSet ds = new DataSet();sda.Fill(ds,"t1");sda.SelectCommand = new SqlCommand("select 字段1,字段2,字段3,... from 表名", conn);sda.Fill(ds,"t2");
外键关联方法:UniqueConstraint uc = new UniqueConstraint("t1",ds.Tables["t1"].Columns["列名"],true);ds.Tables["t1"].Constraints.Add(uc);ForeignKeyConstraint fkc = new ForeignKeyConstraint("f1", ds.Tables["t1"].Columns["外键列名"], ds.Tables["t2"].Columns["外键列名"]);ds.Tables["t2"].Constraints.Add(fkc);ds.Tables["t2"].Constraints.Add(fkc);Session["ds"]=ds;Response.Write(ds.Relations.Count);Fill();
按照主键值删除行: DataSet ds = (DataSet)Session["ds"];
string keys = GridView1.DataKeys[e.RowIndex].Value.ToString();
DataRow dr=ds.Tables["t1"].Rows.Find(keys);
ds.Tables["t1"].Rows.Remove(dr); Fill();
两个数据DataSet合并:DataSet ds = (DataSet)Session["ds"];DataSet ds1 = (DataSet)Session["ds1"];ds.Merge(ds1,false); //false不保留DataSet更改的数据,true 保留
缓存DataSet到服务器:DataSet ds = (DataSet)Cache.Get("缓存名"); //取出Cache
if (ds == null)
{ 连接数据库的三句话(SqlConnection conn、SqlDataAdapter sda、sda.SelectCommand)
DataSet cds = new DataSet();
sda.Fill(cds, "t1");
cds.ExtendedProperties.Add("ds_t1", DateTime.Now.ToLongTimeString());
Cache.Insert("缓存名", cds, null, DateTime.Now.AddMinutes(2), TimeSpan.Zero);//存入Cache Response.Write("对象已经从数据库填充并存入Cache");
GridView1.DataSource = cds.Tables["t1"];
GridView1.DataBind();
}
else
{
Response.Write("对象还在缓存中,直接调用");
GridView1.DataSource = ds.Tables["t1"];
GridView1.DataBind();
}
清除缓存:Cache.Remove("缓存名");
【自建数据表具体实例代码】
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//申明一个小型数据库ds对象
DataSet ds = new DataSet("one");
//申明两个内存表
DataTable dt1 = new DataTable("user");
DataTable dt2 = new DataTable("blog");
//将两个内存表增加到Dataset对象ds的表集合中
ds.Tables.Add(dt1);
ds.Tables.Add(dt2);
{
if (!IsPostBack)
{
//申明一个小型数据库ds对象
DataSet ds = new DataSet("one");
//申明两个内存表
DataTable dt1 = new DataTable("user");
DataTable dt2 = new DataTable("blog");
//将两个内存表增加到Dataset对象ds的表集合中
ds.Tables.Add(dt1);
ds.Tables.Add(dt2);
////=========实例化一个新的列===================
//DataColumn id = new DataColumn("id", typeof(Int32));
//id.AutoIncrement = true;
//id.AutoIncrementStep = 1;
//id.Unique = true;
////=========这样是为这个列设置更多的属性=======
//dt1.Columns.Add(id);//将上面设置好的列加到表中去
//增加表1中的列,设置列的类型
dt1.Columns.Add("id", typeof(Int32));
dt1.Columns.Add("name", typeof(string));
dt1.Columns.Add("age", typeof(Int32));
//DataColumn id = new DataColumn("id", typeof(Int32));
//id.AutoIncrement = true;
//id.AutoIncrementStep = 1;
//id.Unique = true;
////=========这样是为这个列设置更多的属性=======
//dt1.Columns.Add(id);//将上面设置好的列加到表中去
//增加表1中的列,设置列的类型
dt1.Columns.Add("id", typeof(Int32));
dt1.Columns.Add("name", typeof(string));
dt1.Columns.Add("age", typeof(Int32));
//添加表2中的列,设置列的类型
dt2.Columns.Add("title", typeof(string));
dt2.Columns.Add("url", typeof(string));
dt2.Columns.Add("id", typeof(Int32));
dt2.Columns.Add("title", typeof(string));
dt2.Columns.Add("url", typeof(string));
dt2.Columns.Add("id", typeof(Int32));
//申明基类数组,存放表中的数据
Object[] dt1_arr = new object[3];
Object[] dt2_arr = new object[3];
Object[] dt1_arr = new object[3];
Object[] dt2_arr = new object[3];
//申明两个存放数据的数组
dt1_arr[0] = 1;
dt1_arr[1] = "天神";
dt1_arr[2] = 23;
dt1_arr[0] = 1;
dt1_arr[1] = "天神";
dt1_arr[2] = 23;
//将数据加到表的行中去
dt1.Rows.Add(dt1_arr);
dt2.Rows.Add(dt2_arr);
dt1.Rows.Add(dt1_arr);
dt2.Rows.Add(dt2_arr);
//将数据存放到Session中
Session["ds"] = ds;
//调用Fill()方法将数据绑定到GridView中去
Fill();
}
}
Session["ds"] = ds;
//调用Fill()方法将数据绑定到GridView中去
Fill();
}
}
private void Fill() //自定义的函数Fill()
{
//两个表数据绑定
DataSet ds = new DataSet();
ds = (DataSet)Session["ds"];
{
//两个表数据绑定
DataSet ds = new DataSet();
ds = (DataSet)Session["ds"];
user.DataSource = ds.Tables["user"];
user.DataBind();
user.DataBind();
blog.DataSource = ds.Tables["blog"];
blog.DataBind();
}
blog.DataBind();
}
protected void unique_Click(object sender, EventArgs e) //一个名为unique的按钮
{
//设置主键
DataSet ds = new DataSet();
ds = (DataSet)Session["ds"];
//设置主键
DataSet ds = new DataSet();
ds = (DataSet)Session["ds"];
//user表的列建立主键约束对象uc,约束名为u1,约束内存user表的id列
UniqueConstraint uc = new UniqueConstraint("u1", ds.Tables["user"].Columns["id"],true);
ds.Tables["user"].Constraints.Add(uc);
UniqueConstraint uc = new UniqueConstraint("u1", ds.Tables["user"].Columns["id"],true);
ds.Tables["user"].Constraints.Add(uc);
Session["ds"] = ds;
Fill();
}
Fill();
}
protected void addrows_Click(object sender, EventArgs e) //一个名为addrows的按钮
{
//增加行数据
DataSet ds = new DataSet();
ds = (DataSet)Session["ds"];
object[] add_dt1 = new object[3];
add_dt1[0] = 1;
add_dt1[1] = "天神";
add_dt1[2] = 23;
ds.Tables["user"].Rows.Add(add_dt1);
add_dt1[0] = 1;
add_dt1[1] = "天神";
add_dt1[2] = 23;
ds.Tables["user"].Rows.Add(add_dt1);
Session["ds"] = ds;
Fill();
}
Fill();
}
protected void foreign_Click(object sender, EventArgs e) //一个名为foreign的按钮
{
DataSet ds = new DataSet();
ds = (DataSet)Session["ds"];
{
DataSet ds = new DataSet();
ds = (DataSet)Session["ds"];
//主(user)表从(blog)表之间建立外键关联对象fc,约束名为f1
ForeignKeyConstraint fc = new ForeignKeyConstraint("f1", ds.Tables["user"].Columns["id"], ds.Tables["blog"].Columns["id"]);
ds.Tables["blog"].Constraints.Add(fc);
ForeignKeyConstraint fc = new ForeignKeyConstraint("f1", ds.Tables["user"].Columns["id"], ds.Tables["blog"].Columns["id"]);
ds.Tables["blog"].Constraints.Add(fc);
Session["ds"] = ds;
Fill();
}
Fill();
}
protected void Button1_Click(object sender, EventArgs e) //提取表中值得按钮
{
{
//获取blog表的(1,2)值
DataSet ds = new DataSet();
ds = (DataSet)Session["ds"];
DataSet ds = new DataSet();
ds = (DataSet)Session["ds"];
Button1.Text = ds.Tables["blog"].Rows[0]["url"].ToString();
Session["ds"] = ds;
fill();
}
fill();
}
protected void Button2_Click(object sender, EventArgs e) //修改表中值的按钮
{
DataSet ds = new DataSet();
ds = (DataSet)Session["ds"];
DataSet ds = new DataSet();
ds = (DataSet)Session["ds"];
ds.Tables["user"].Rows[0]["name"] = "
http://blog.sina.com.cn/tracymcgrady";
Session["ds"] = ds;
fill();
}
fill();
}
【注意重点】设置任何一个函数,都需要在开头和结尾打上以下这段话:
DataSet ds = new DataSet();
ds = (DataSet)Session["ds"];
ds = (DataSet)Session["ds"];
……(函数体部分)……
Session["ds"] = ds;
Fill();
Fill();
本文转自 qianshao 51CTO博客,原文链接:http://blog.51cto.com/qianshao/201802,如需转载请自行联系原作者