从数据库获取数据很容易,处理数据更容易。如果想要从数据库获取只进、只读的数据流结果集,你可以使用 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. Go 学习笔记(6)— 变量定义、变量声明、变量作用域
  2. ASP.NET网页显示LED字体
  3. Java的if判断对象为null时,null放在比较运算符的左边还是右边较好?
  4. 世界首份博客报纸问世
  5. 单片机小白学步系列(七) 准备实验板——萝卜青菜,各有所爱
  6. 自适应表格连续字符换行及单行溢出点点点显示
  7. 41.进程池--Pool
  8. LeetCode(1122)——数组的相对排序(JavaScript)
  9. WiFi 扫描处理过程
  10. 极限学习机的一篇小综述
  11. 乌龟Git误点跳过工作树的解决方法
  12. 【计算机网络】HTTP协议详解
  13. JAVA HD japan_电竞小金刚:优派VX2778-hd-PRO
  14. in作为介词的用法_介词in重要用法归纳
  15. Android 简单直接--无需jar包zing实现生成、扫描二维码
  16. IOS App的简单开发实例
  17. 【三】仿射变换、投影变换的矩阵形式和特点归纳
  18. java计算机毕业设计ssm学生宿舍管理系统15pjb(附源码、数据库)
  19. VS中编写Qt项目时,提取ts文件出现中文乱码的解决方法(填坑)
  20. 【原创】操作系统---文件系统设计(三)(你们需要的源代码)

热门文章

  1. 『中级篇』Minikube快速搭建K8S单节点环境(61)
  2. 前端每日实战:108# 视频演示如何用 CSS 和 D3 创作一个抽象的黑白交叠动画
  3. Python 字符串的所有方法详解
  4. JDK5.0中JVM堆模型、GC垃圾收集详细解析 .
  5. python-django框架中使用docker和elasticsearch配合实现搜索功能
  6. (十一)java版spring cloud+spring boot+redis多租户社交电子商务平台- commonservice-sso服务搭建(一)...
  7. vue-router路由基础
  8. 别的设计师比你又快又好,是因为你不知道他们在用介个!
  9. 并发编程实战-读书笔记
  10. iOS多线程之7.NSOperation的初识