DataSet,DataTable,DateView的关系和用法
DataSet,DataTable,DateView的关系和用法
DataSet是ADO.NET的中心概念。可以把DataSet当成内存中的数据库,DataSet是不依赖于数据库的独立数据集合。所谓独立,就是说,即使断开数据链路,或者关闭数据库,DataSet依然是可用的,DataSet在内部是用XML来描述数据的,由于XML是一种与平台无关、与语言无关的数据描述语言,而且可以描述复杂关系的数据,比如父子关系的数据,所以DataSet实际上可以容纳具有复杂关系的数据,而且不在依赖于数据库链路。
DataSet就是一个临时的小仓库,通过sqlDataApert,可相当于卡车,将数据从数据库中通过适配器sqlDataApert放到DataSet中,所以即使断开了连接,也照样可以与数据库打交道,下面看一个例子:
public static DataSet Query(string sqlstr)
{
using(OleDbConnection conn=new OleDbConnection(CONNSTR))
{
try
{
DataSet ds = new DataSet()
OleDbDataAdapter da = new OleDbDataAdapter();
da.Fill(ds, "ds");
return ds;
}
catch (OleDbException e)
{
throw new Exception(e.Message);
}
}
}
可以看出基本用法,通过OleDbDataAdapter的Fill方法将数据填充到DataSet中,其中
da.Fill(ds, "ds"); 后面的ds是表明,因为DataSet中包含很多表,其实我们就是把数据添加到DataSet的表中,这个在后面会讲到,如果不写,则以索引0开始
DataTable dt=ds.tables[“ds”]
DataTable dt=ds.tables[0];
下面我们有必要看看DataSet的组成部分
DataSet有很多DataTable,DataTable中有很多的DataView
DataTable中有很多的DataRow和DataColumn组成
获得具体的值就是:
Ds.tables[“表明”].Rows[0][“列名字”]
DataColumn numColumn = new DataColumn("num");
dt.Columns.Add(numColumn);
for (int i =0; i <5);i++)
{
DataRow row = sdt.NewRow();
row["num"] = dt.Rows[i]["num"].ToString();
dt.Rows.Add(row);
}
一般都是先创建行,在创建列,在列中添加内容
DataView是显示出来的视图,比如我们要绑定到GirlView的数据源绑定中,为了显示,就用到了DataView
DataView dv=new DataView();
dv.table=ds.tables[“”]
this.GirlView.DataSource=dv;
或者使用DefaultView,这样就不用实例化DataView了;
this.GirlView.DataSource= ds.tables[0].DefaultView;
我们还可以DataView进行过滤
ds.Tables[0].DefaultView.RowFilter = "id=1";
或者
DataView dv=new DataView();
dv.RowFilter=”id=1”;
DataSet的多表查询
多表查询或者数据量很大的时候我们都可以使用DataSet,下面就看看使用DataSet如何进行多表查询,下面看个例子
public static DataSet Query(string SQLString)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
DataSet ds = new DataSet();
try
{
connection.Open();
SqlDataAdapter command = new SqlDataAdapter(SQLString, connection);
command.Fill(ds, "ds");
}
catch (System.Data.SqlClient.SqlException ex)
{
throw new Exception(ex.Message);
}
return ds;
}
}
string citysql = "select * from soncity;select * from partytype";
ds= DbHelperSQL.Query(citysql);
s1.DataSource = ds.Tables[0].DefaultView;
s1.DataTextField = "sonname";
s1.DataBind();
s2.DataSource = ds.Tables[1].DefaultView;
s2.DataTextField = "partytypename";
s2.DataBind();
从上面我们可以看出如何进行多表查询了,sql语句可以写多个,用分号隔开就可以了
string citysql = "select * from soncity;select * from partytype";
返回的时候就是按着索引从0开始返回表格
s1.DataSource = ds.Tables[0].DefaultView;
s2.DataSource = ds.Tables[1].DefaultView;
DataSet和sqlCommand的关系
使用SqlDataAdapter 的时候不知道有没有想过这样的问题,为什么数据库不用打开直接就可以连接了呢?在这里我就来告诉大家原因:
其实 数据库的连接是隐式的被打开的
SqlDataAdapter sqlDateAdapter = new SqlDataAdapter(sql语句,connection);
其实它是隐式的替代了下面的代码:
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "select * from googs";
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
SqlDataAdapter sqlDateAdapter = new SqlDataAdapter();
sqlDateAdapter.SelectCommand = cmd;
现在看出原因了吧!!
转载于:https://www.cnblogs.com/shuang121/archive/2011/03/03/1970425.html
DataSet,DataTable,DateView的关系和用法相关推荐
- C#三分钟教你理解DataTable、Datarow、DataColumn的关系以及用法
C#三分钟教你理解DataTable.Datarow.DataColumn的关系以及用法! 码字不易,点赞关注加收藏,谢谢各位看官老爷了!!!!. 码字不易,点赞关注加收藏,谢谢各位看官老爷了!!!! ...
- DataSet DataTable DataReader DataAdapter之间的区别
1.四者各自的介绍 DataSet是用来做连接sql的一种方法,意思是把数据库的副本存在应用程序里,相当于存在内存中的数据库,应用程序开始运行时,把数据库相关数据保存到DataSet. DataTab ...
- [Json] C#ConvertJson|List转成Json|对象|集合|DataSet|DataTable|DataReader转成Json (转载)...
点击下载 ConvertJson.rar 本类实现了 C#ConvertJson|List转成Json|对象|集合|DataSet|DataTable|DataReader转成Json| 等功能 大 ...
- Dataset/Datatable/Datarow转Json的一种方法
//以下三句為轉Dataset/Datatable為Json格式的一般方法. System.Web.Script.Serialization.JavaScriptSerializer serial = ...
- dataset__getitem___一文弄懂Pytorch的DataLoader, DataSet, Sampler之间的关系
以下内容都是针对Pytorch 1.0-1.1介绍. 很多文章都是从Dataset等对象自下往上进行介绍,但是对于初学者而言,其实这并不好理解,因为有的时候会不自觉地陷入到一些细枝末节中去,而不能把握 ...
- GridView绑定数据源 绑定DataReader /DataSet /DataTable
有一个GridView1 <asp:GridView ID="GridView1" runat="server"></asp:GridView ...
- DataSet DataTable操作
SqlDataReader sdr = cmd.ExecuteReader(); while (sdr.Read()) //行的读取 { Response.Write(sdr[0]); //列的读取, ...
- Java字节序,java整型数与网络字节序 byte[] 数组转换关系(ByteArrayOutputStream用法)
Java字节序 http://origin100.iteye.com/blog/267165 /** * 通信格式转换 * * Java和一些windows编程语言如c.c++.delphi所写的网络 ...
- 查看dataloader的大小_一文弄懂Pytorch的DataLoader, DataSet, Sampler之间的关系
以下内容都是针对Pytorch 1.0-1.1介绍. 很多文章都是从Dataset等对象自下往上进行介绍,但是对于初学者而言,其实这并不好理解,因为有的时候会不自觉地陷入到一些细枝末节中去,而不能把握 ...
- 一文弄懂Pytorch的DataLoader, DataSet, Sampler之间的关系
自上而下理解三者关系 首先我们看一下DataLoader.__next__的源代码长什么样,为方便理解我只选取了num_works为0的情况(num_works简单理解就是能够并行化地读取数据). c ...
最新文章
- 深入了解 gRPC:协议
- 从字节码层面分析==比较integer和int
- [原创] VPDN--PPTP Server
- a标签鼠标放上去变色_一切为了集齐一套装备:杜伽LEO600游戏鼠标和P300鼠标垫简评...
- 2021年,不平凡的一年~
- 电子公文流转暨无纸办公系统
- java myeclipse的好处,关于MyEclipse_MyEclipse用途_MyEclipse优势
- Unity中获取AnimationClip的关键帧信息
- ES06# Filebeat采集原理与监控指标梳理
- 小趴菜学习c语音记录第六天
- 今天气温达到了39度 单位给买了雪糕降温
- 同时安装 瑞星、金山、腾讯、百度和360这五大杀毒软件
- SSM框架实战详细教程(十四)贯穿项目实战之三层架构
- MySQL事务实现原理详解
- (第三板斧)上班奴的特征:今天你“被奴”了吗?
- 不执著才叫看破,不完美才叫人生。
- 华为宣布鸿蒙OS开源
- PWM调节Arduino控制4个自由度机械手臂
- 一键离线地图发布工具(教程)
- 搭建S60手机端Python软件运行,开发,发布平台
热门文章
- html写彩虹,HTML5 Canvas彩虹粒子组成的动画文本
- Springboot 拦截器配置(登录拦截)
- 阶段3 1.Mybatis_12.Mybatis注解开发_6 mybatis注解开发一对一的查询配置
- 阶段1 语言基础+高级_1-3-Java语言高级_09-基础加强_第2节 反射_11_反射_案例
- 音视频重新封装的流程
- SpringMVC:学习笔记(7)——验证器(JSR303)
- 解决远程桌面无法复制黏贴
- MVC数据验证Model Validation
- java 排序,选择排序、插入排序、冒泡排序
- biztalk中架构验证、实例生成和验证