从数据库获取数据很容易,处理数据更容易。如果想要从数据库获取只进、只读的数据流结果集,你可以使用 DataReader 执行命令并且检索它。关于如何使用 DataReader,请参考:使用 OLE DB 检索数据、使用 SQL Server 检索数据。更多关于绑定、浏览、或者远程处理数据查询结果集的操作,你可以如下例所示把结果集放到 DataSet 里。
请记住最重的是,DataSet 是一种独立的有别于数据存储的数据结构。尽管示例从数据库获取数据,但是数据来源是无所谓的;DataSet 总是呈现出一种统一的编程模型。这是一个简单的关于关系型数据库收集数据的示例。由于数据来源不可知,DataSet 上没有加载、打开、或者执行操作。本节描述了如何使用 SqlDataAdapter 从数据库获取数据填充到DataSet。
你可以使用 Add 方法添加数据到 DataSet(请参考:从 DataSet 更新数据库),或者直接使用原生的XML方法(请参考:读写 XML 数据)推送数据。SqlDataAdapter 除了可以用于从数据库检索数据,也可以反向推送数据回数据库。这里,重点关注的是获取输出数据。
第一步是构建 SqlDataAdapter。也可以使用 SqlCommand 来构建 SqlDataAdapter。
    String SelectCmdString = "select * from customers";SqlDataAdapter mySqlDataAdapter = new SqlDataAdapter(SelectCmdString, myConnection);
    SqlCommand mySelectCommand = New SqlCommand("select * from customers", myConnection);SqlDataAdapter mySqlDataAdapter = new SqlDataAdapter(mySelectCommand);

除了 Fill 和 Update 方法以外,SqlDataAdapter 对象和 SqlCommand 对象非常类似。Fill 方法填充 DataSet 对象。Update 方法获取DataSet 的改动,并且把改动反映回数据库。这是 DataAdapter 上指定的4个命令完成的。这些命令是:SelectCommand、UpdateCommand、InsertCommand,和 DeleteCommand。你可以显式的指定这些命令,在运行时控制语句执行变动,包括使用存储过程。对于特别的场景,CommandBuilder 对象可以基于 select 语句  (参考:从 DataSet 更新数据库). 在运行时创建他们。然而,运行时创建需要一次额外的服务器往返以便收集必要的元数据,因此在设计时显式提供 insert、update、和 delete 命令可以得到更好的运行时性能。
备注:Visual Studio 建立了类型化 SqlDataAdapters 和 DataSets,并且最终为你创建存储过程。通过使用 ComponentDesigner 和数据库对象探究这个特性。
一旦创建了 SqlDataAdapter 对象,你就可以通过它来填充 DataSet。
    myDataSet = new DataSet();mySqlDataAdapter.Fill(myDataSet,"Customers");

当前的 DataSet 保存查询结果集。实际上,DataSet 可以从多个查询甚至关联他们的查询(请参考:使用关系型数据)保存结果集。因为保存了多个结果集,所以 DataSet 包含了一组表。请注意 Fill 方法允许“Customers”作为第二个参数。这是填充到 DataSet 中的表名。如果表不存在,就为你创建它。
因为数据是存储在表里一组行里面,所以你可以很容易使用 foreach 语句来迭代这些行:
    foreach (DataRow myDataRow in myDataSet.Tables["Customers"].Rows){Console.WriteLine(myDataRow["CustomerId"].ToString());}

实际上,在列上同样可以使用foreach语句。下面的例子演示了本节所有的代码。了解如何更新数据回数据库,请参考:从 DataSet 更新数据库。
    public class GettingDataExample{public void Run(){SqlConnection myConnection = new SqlConnection("server=(local);Integrated Security=SSPI;database=northwind");string selectCmdString = "SELECT * FROM Customers";// 构建 SqlDataAdapterSqlDataAdapter myDataAdapter1 = new SqlDataAdapter(selectCmdString, myConnection);// 使用 SqlCommand 构建 SqlDataAdapterSqlCommand mySelectCommand = new SqlCommand(selectCmdString, myConnection);SqlDataAdapter myDataAdapter2 = new SqlDataAdapter(mySelectCommand);DataSet myDataSet = new DataSet();myDataAdapter1.Fill(myDataSet, "Customers");// 迭代 DataSetforeach (DataRow myDataRow in myDataSet.Tables["Customers"].Rows){Console.WriteLine(myDataRow["CustomerId"].ToString());}}}

原文链接
http://quickstarts.asp.net/QuickStartv20/howto/doc/adoplus/GetDataFromDB.aspx

转载于:https://www.cnblogs.com/JavCof/p/3429748.html

ADO.NET 快速入门(四):从数据库填充 DataSet相关推荐

  1. 微信小程序快速入门+四个实战小程序(一)——入门准备

    一)系列达成目标介绍 二)小程序创建的准备 1)注册开发者账号 2)下载编译器 ------------------------------------------------------ 一)系列达 ...

  2. ADO.NET 快速入门(一):ADO.NET 概述

    ADO.NET 概述 ADO.NET是改进的ADO数据访问模型用于开发可扩展应用程序.他是专门为可伸缩性.无状态和XML核心的web而设计的. ADO.NET使用一些ADO对象,如Connection ...

  3. ADO.NET 快速入门(十五):ADO 应用转换为 ADO.NET

    这是一个已经移植到 .NET 的 ADO 应用的例子.也演示了单向.只读.快速 DataReader 的使用.它演示如何使用 DataView 类从 DataSet 获取一个 Table 和 操作一个 ...

  4. mysql vacuum_PostgreSQL DBA快速入门(四) - 体系架构

    PostgreSQL在开源关系型数据库市场是最先进的数据库.他的第一个版本在1989年发布,从那时开始,他得到了很多扩展.根据db-enginers上的排名情况,PostgreSQL目前在数据库领域排 ...

  5. Enterprise Library 4.1数据访问应用程序块快速入门【6】使用DataSet更新数据库

    本演练演示如何使用DataSet更新数据库.它假定以下存储过程已在被引用的数据库中被创建. CREATE PROCEDURE AddProduct (     @ProductName nvarcha ...

  6. IM开发快速入门(一):什么是IM系统?

    本文在编写时参考了博客作者"鹿呦呦"和在线课程"即时消息技术剖析与实战"的相关资料,一并表示感谢. 1.系列文章引言 IM系统看似简单(没错,很多土老板认为开发 ...

  7. ado.net 操作mysql_ADO.NET操作数据库(一)

    ---恢复内容开始--- [1]ADO.Net简介2015-12-07-20:16:05 ADO.Net提供对Microsoft SQL Server数据源以及通过OLE DB和XML公开的数据源的一 ...

  8. (十一) ELK快速入门

    本文为学习笔记,主要用于记录本人学习过程.部分内容为转载!!!!. ELK快速入门一-基本部署 ELK简介 什么是ELK?通俗来讲,ELK是由Elasticsearch.Logstash.Kibana ...

  9. 社交网络快速入门(一)

    前言 社交网络快速入门(一)(7天入门社交网络) R语言社交网络快速入门(二)(7天入门社交网络) R语言社交网络快速入门(三)(7天入门社交网络) R语言社交网络快速入门(四)(7天入门社交网络) ...

最新文章

  1. RepVGG:极简架构,SOTA性能,论文解读
  2. linux下载哪个python版本-Linux下python版本的升级步骤
  3. Kaldi内存泄漏问题排查
  4. java web 柱状图_使用JFreeChart实现基于Web的柱状图
  5. 1390: 队列问题(1)(vector模拟)
  6. php组合查询,PHP组合查询多条件查询实例代码第1/2页
  7. 判刑不应区分未成年、精神病
  8. SCADA数采HAAS数控系统现场实操步骤
  9. ssm仓库管理系统含论文
  10. 学习了pr后的收获_pr学习心得(入门篇)
  11. 自定义滚动条(css)
  12. Ubuntu配置静态IP以及interfaces配置不生效问题解决
  13. [java8] Stream流
  14. 咖说 | 关于当前环境下的经济分析
  15. Windows下的JavaFX桌面应用程序打包ABC
  16. 自用大智慧策略高端版本
  17. java反编译工具gd gson,浅谈Android中static修饰符,及Gson转String实例
  18. 「Python入门」Python代码规范(风格)
  19. 注意这是ACfly TI芯片版本的程序
  20. 不平衡分类之逻辑回归,基于python,SMOTE和RFE

热门文章

  1. 分享Windows Vista Beta1下载
  2. 自助收银导致货损增加,阿里安全如何用视频识别AI应对?
  3. vue 内打开一个新窗口,带传参!
  4. Java复习2-对象与类
  5. 清明是品茗的好时节,那么你了解quot;明前茶quot;吗?
  6. 推荐大家使用的CSS书写规范、顺序
  7. tcpdump基础教程
  8. windows2003系列(之)搭建DHCP服务与中继代理图解
  9. 基于form的身份验证怎样设置一个特例(使某页不需要验证)
  10. yii2快速導出phpexcel