LNotes-ASP.NET-C#中的“虚拟表”

ylbtech-LearningNotes:LNotes-ASP.NET-C#中的“虚拟表”
 
1.A,学习课程-知识点

 C#中的“虚拟表”。

1.B,课堂笔记及课下总结
虚拟表(vtable)重点 具体思路
存在于内存中的表System.Data.DataTable
它能够直接的在内存中描述一个数据库中的表。
要求大家掌握2点:
1,自定义虚拟表,并遍历,与数据库无关
例如:请构建虚拟表
编号 姓名 性别 年龄 成绩
1001 mike 男 21 98.5
1002 张三 男 33 68.5
并遍历之。
相关的类:
DataSet--虚拟库
DataTable--虚拟表
DataRow--虚拟行
DataColumn--虚拟列
关注创建步骤,见案例。

步骤
1、创建虚拟表
DataTable dt=new DataTable("student");

2、创建列

DataColumn d1 = new DataColumn("编号",typeof(int));
DataColumn d2 = new DataColumn("姓名",typeof(string));
... ... ...
DataColumn d5 = new DataColumn("成绩",typeof(float));
3、将列并入表中,实现其组织结构

dt.Columns.Add(d1);
dt.Columns.Add(d2);
.... ...
dt.Columns.Add(d5);

4、创建行// 1001 mike 男 21 98.5

DataRow dr1 =dt.newRow();

5、给单元格赋值

dr[0]=1001;
//dr["编号"]=1001;
dr[1]="mike";
.... ...
dr[4]=98.5;

6、将行加入表格

dt.Rows.Add(dr1); //(添加一行)

7、遍历表格 //用户只有dt

for(int i=0;i<dt.Rows.Count;i++) //循环行
for(int j=0;j<dt.Columns.Count;j++) //循环列
Console.Write(dt.Rows[i][j]+"\t")
Console.WriteLine();
8、输入表头
for(int i=0;i<dt.Columns.Count;i++)
Console.Write(dt.Columns[i].ColumnName+"\t")
Console.WriteLine();

9、补充DateSet-----虚拟库,可以包含多个表
DataSet ds=new DataSet("学校的数据库");
ds.Tables.Add(dt);//将表加入库
//将表从数据库中提出
System.Data.DataTable dt2=ds.Tables[0];

 

课堂案例 将数据库中的表内容加载到虚拟表中

//编号 姓名 性别 年龄 成绩
//1001 mike 男 21 98.5
//1002 张三 男 33 68.5

//步骤:
//1,创建虚拟表
System.Data.DataTable dt = new DataTable("student");

//2,创建列,5列
System.Data.DataColumn dc1 = new DataColumn("编号", typeof(int));
System.Data.DataColumn dc2 = new DataColumn("姓名", typeof(string));
System.Data.DataColumn dc3 = new DataColumn("性别", typeof(string));
System.Data.DataColumn dc4 = new DataColumn("年龄", typeof(int));
System.Data.DataColumn dc5 = new DataColumn("成绩", typeof(double));

//3,将列并入表,实现其组织结构
dt.Columns.Add(dc1);
dt.Columns.Add(dc2);
dt.Columns.Add(dc3);
dt.Columns.Add(dc4);
dt.Columns.Add(dc5);

//4,创建行//1001 mike 男 21 98.5
System.Data.DataRow dr1 = dt.NewRow();

//5,给行中的单元格赋值
dr1[0] = 1001;
//dr1["编号"] = 1001;
dr1[1] = "mike";
//dr1["姓名"] = "mike";
dr1[2] = "男";
dr1[3] = 21;
dr1[4] = 98.5;

//6,将行加入表格
dt.Rows.Add(dr1);

//添加第二行 //1002 张三 男 33 68.5
System.Data.DataRow dr2 = dt.NewRow();
dr2[0] = 1002;
dr2[1] = "张三";
dr2[2] = "男";
dr2[3] = 33;
dr2[4] = 68.5;
dt.Rows.Add(dr2);

//表格实现。

//7,遍历表格
//用户只有dt
//输出表头
for (int i = 0; i < dt.Columns.Count; i++)
{
Console.Write(dt.Columns[i].ColumnName + "\t");
}
Console.WriteLine();

//输出表体
for (int i = 0; i < dt.Rows.Count; i++)//循环行
{
for (int j = 0; j < dt.Columns.Count; j++)//循环列
{
Console.Write(dt.Rows[i][j] + "\t");
}
Console.WriteLine();//一行一个回车
}

//8,补充,DataSet--虚拟库,可以包含多个表
DataSet ds = new DataSet("学校数据库");
//将表加入库
ds.Tables.Add(dt);

//将表从库中提取
System.Data.DataTable dt2 = ds.Tables[0];

Console.Read();

//将 select productid,productname,categoryid,unitprice from products 运行结果导入虚拟表
string sql="select productid,productname,categoryid,unitprice from products";

System.Data.DataTable dt = new System.Data.DataTable();

SqlConnection con = new Com.Myt.DB.DBConnection().Con;
SqlCommand com = new SqlCommand();
com.Connection = con;
com.CommandText = sql;

con.Open();

SqlDataReader sdr = com.ExecuteReader();

//重要
dt.Load(sdr);//将sdr中的数据以数据库表的原始架构导入到dt中去

con.Close();//此处con连接关闭,则sdr不能再使用。但是dt中的数据依然存在,可以继续使用,称之为脱机记录集

//遍历虚拟表
//输出表头
for (int i = 0; i < dt.Columns.Count; i++)
{
Console.Write(dt.Columns[i].ColumnName + "\t");
}
Console.WriteLine();
//输出表体
for (int i = 0; i < dt.Rows.Count; i++)
{
for (int j = 0; j < dt.Columns.Count; j++)
{
Console.Write(dt.Rows[i][j] + "\t");
}
Console.WriteLine();
}

Console.Read();

Mar,4,17 1010 勇于面对 勇于拼搏 勇于争取 勤奋好学 做一个爸妈眼中的好孩子

1.C,升华提升|领悟|感知|天马行空-痴人说梦

 无。

warn 作者:ylbtech
出处:http://ylbtech.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
posted on 2013-02-25 11:37  ylbtech  阅读(1655)  评论(0编辑  收藏  举报