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][“列名字”]

View Code

DataTable dt = new DataTable();
        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的关系和用法相关推荐

  1. C#三分钟教你理解DataTable、Datarow、DataColumn的关系以及用法

    C#三分钟教你理解DataTable.Datarow.DataColumn的关系以及用法! 码字不易,点赞关注加收藏,谢谢各位看官老爷了!!!!. 码字不易,点赞关注加收藏,谢谢各位看官老爷了!!!! ...

  2. DataSet DataTable DataReader DataAdapter之间的区别

    1.四者各自的介绍 DataSet是用来做连接sql的一种方法,意思是把数据库的副本存在应用程序里,相当于存在内存中的数据库,应用程序开始运行时,把数据库相关数据保存到DataSet. DataTab ...

  3. [Json] C#ConvertJson|List转成Json|对象|集合|DataSet|DataTable|DataReader转成Json (转载)...

    点击下载 ConvertJson.rar 本类实现了  C#ConvertJson|List转成Json|对象|集合|DataSet|DataTable|DataReader转成Json| 等功能 大 ...

  4. Dataset/Datatable/Datarow转Json的一种方法

    //以下三句為轉Dataset/Datatable為Json格式的一般方法. System.Web.Script.Serialization.JavaScriptSerializer serial = ...

  5. dataset__getitem___一文弄懂Pytorch的DataLoader, DataSet, Sampler之间的关系

    以下内容都是针对Pytorch 1.0-1.1介绍. 很多文章都是从Dataset等对象自下往上进行介绍,但是对于初学者而言,其实这并不好理解,因为有的时候会不自觉地陷入到一些细枝末节中去,而不能把握 ...

  6. GridView绑定数据源 绑定DataReader /DataSet /DataTable

    有一个GridView1 <asp:GridView ID="GridView1" runat="server"></asp:GridView ...

  7. DataSet DataTable操作

    SqlDataReader sdr = cmd.ExecuteReader(); while (sdr.Read()) //行的读取 { Response.Write(sdr[0]); //列的读取, ...

  8. Java字节序,java整型数与网络字节序 byte[] 数组转换关系(ByteArrayOutputStream用法)

    Java字节序 http://origin100.iteye.com/blog/267165 /** * 通信格式转换 * * Java和一些windows编程语言如c.c++.delphi所写的网络 ...

  9. 查看dataloader的大小_一文弄懂Pytorch的DataLoader, DataSet, Sampler之间的关系

    以下内容都是针对Pytorch 1.0-1.1介绍. 很多文章都是从Dataset等对象自下往上进行介绍,但是对于初学者而言,其实这并不好理解,因为有的时候会不自觉地陷入到一些细枝末节中去,而不能把握 ...

  10. 一文弄懂Pytorch的DataLoader, DataSet, Sampler之间的关系

    自上而下理解三者关系 首先我们看一下DataLoader.__next__的源代码长什么样,为方便理解我只选取了num_works为0的情况(num_works简单理解就是能够并行化地读取数据). c ...

最新文章

  1. 数据结构 python的书推荐-java数据结构书一般推荐看什么好?
  2. openresty开发系列12--lua介绍及常用数据类型简介
  3. 前端优秀博客网站收集
  4. uni-app + vue-cli3 安装axios、vant等依赖 - 操作篇
  5. jQuery file upload cropper的 click .preview事件没有绑定成功
  6. 使用CleanMyMac的空间透镜功快速决策清理垃圾
  7. 第一次入坑docker
  8. JS中某事件需要同时调用几个function另类解决办法。
  9. 在安全防火墙内通过 WebHook 触发构建
  10. 《黑马程序员 MySQL数据库入门到精通,从MySQL安装到MySQL高级、MySQL优化全囊括》——学习笔记基础篇
  11. 简单了解芯片封装技术
  12. linux mint借用deepin-wine安装QQ/微信
  13. (bat)检查今天星期几,并执行程序
  14. 日拱一卒,功不唐捐 | 每日思考俱乐部 专栏更新通知
  15. 为什么学python?怎么学?怎样算学会?
  16. 自学CTP客户端开发记录001
  17. MCDF实验_lab1(1)
  18. 什么是RPN,ROIAlign?
  19. 如何看计算机接口类型,怎么看自己电脑cpu的接口类型
  20. H3C EPON技术白皮书

热门文章

  1. Linux 命令之 tar 备份与解压缩
  2. 阶段5 3.微服务项目【学成在线】_day05 消息中间件RabbitMQ_1.页面发布-需求分析...
  3. 阶段3 2.Spring_08.面向切面编程 AOP_5 切入点表达式的写法
  4. 阶段3 1.Mybatis_05.使用Mybatis完成CRUD_2 Mybatis的CRUD-保存操作
  5. 阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第2节 Stream流式思想概述_1_使用传统的方式,遍历集合,对集合进行过滤...
  6. Leetcode 137. Single Number I/II/III
  7. [转]Delphi的运算符重载
  8. ubuntu 开发环境的配置 (转)
  9. 使用vue自定义组件以及动态时间
  10. django传递临时数据