ADO.NET常用五种对象

1.DataSet对象(包含DataTable)     

2. SqlConnection 对象

3.SqlDataAdapter对象(包含Fill方法)

4.DataCommand对象

  1. static void Main(string[] args)
  2. {
  3. string conn_string = "Data Source=localhost;Initial Catalog=SQLtest;Integrated Security=True";
  4. using(SqlConnection connection = new SqlConnection(conn_string)){
  5. SqlCommand sqcm = new SqlCommand("SelectAll", connection);
  6. sqcm.CommandType = CommandType.StoredProcedure;
  7. SqlDataAdapter sqda = new SqlDataAdapter(sqcm);
  8. DataSet da = new DataSet();
  9. sqda.Fill(da);
  10. foreach (DataTable item in da.Tables ) // 学会使用DataSet.Tables对象
  11. {
  12. foreach (DataRow item2 in item.Rows)
  13. {
  14. foreach (DataColumn item3 in item.Columns)
  15. {
  16. Console.Write("{0} {1} {2}",item.TableName,item3.ColumnName,item2[item3]);
  17. }
  18. Console.WriteLine();
  19. }
  20. }
  21. Console.WriteLine();
  22. Console.WriteLine();
  23. DataTable dt = new DataTable();
  24. sqda.Fill(dt);
  25. foreach (DataRow item2 in dt.Rows) // 学会使用DataRow对象
  26. {
  27. foreach (DataColumn item3 in dt.Columns) // 学会使用DataColumn对象
  28. {
  29. Console.Write("{0} {1} ", item3.ColumnName, item2[item3]);
  30. }
  31. Console.WriteLine();
  32. }
  33. Console.ReadKey();
  34. }
  35. Connection.Close();
  36. }

5.DataReader对象

  1. SqlCommand sqcm = new SqlCommand("SelectAll", connection);
  2. sqcm.CommandType = CommandType.StoredProcedure;
  3. connection.Open();
  4. SqlDataReader reader = sqcm.ExecuteReader(); // SqlCommand.ExecuteReader方法返回一个DataReader变量
  5. // Call Read before accessing data.
  6. while (reader.Read()) // 可以一直迭代读取的时候
  7. {
  8. ReadSingleRow(reader); // 就输出里面的内容
  9. }
  10. // Call Close when done reading.
  11. reader.Close();
  12. Connection.Close();
  1. private static void ReadSingleRow(IDataRecord record) // IDataReord借口比较重要,里面有各个行的参数
  2. {
  3. Console.WriteLine(String.Format("{0}, {1},{2}", record[0], record[1], record[2]));
  4. }

各个对象的常用定义及用法:

Connection:主要是开启程序和数据库之间的连接。没有利用连接对象将数据库打开,是无法从数据库中取得数据的。

Close和Dispose的区别,Close以后还可以Open,Dispose以后则不能再用。

Command:主要可以用来对数据库发出一些指令,例如可以对数据库下达查询、新增、修改、删除数据等指令,以及调用存在数据库中的存储过程等。这个对象是架构在Connection 对象上,也就是Command 对象是透过连接到数据源。

DataAdapter:主要是在数据源以及DataSet 之间执行数据传输的工作,它可以透过Command 对象下达命令后,并将取得的数据放入DataSet 对象中。这个对象是架构在Command对象上,并提供了许多配合DataSet 使用的功能。

DataSet:这个对象可以视为一个暂存区(Cache),可以把从数据库中所查询到的数据保留起来,甚至可以将整个数据库显示出来,DataSet是放在内存中的。DataSet 的能力不只是可以储存多个Table 而已,还可以透过DataAdapter对象取得一些例如主键等的数据表结构,并可以记录数据表间的关联。DataSet 对象可以说是ADO.NET 中重量级的对象,这个对象架构在DataAdapter对象上,本身不具备和数据源沟通的能力;也就是说我们是将DataAdapter对象当做DataSet 对象以及数据源间传输数据的桥梁。DataSet包含若干DataTable、DataTableTable包含若干DataRow。

DataReader:当我们只需要循序的读取数据而不需要其它操作时,可以使用DataReader 对象。DataReader对象只是一次一笔向下循序的读取数据源中的数据,这些数据是存在数据库服务器中的,而不是一次性加载到程序的内存中的,只能(通过游标)读取当前行的数据,而且这些数据是只读的,并不允许作其它的操作。因为DataReader 在读取数据的时候限制了每次只读取一笔,而且只能只读,所以使用起来不但节省资源而且效率很好。使用DataReader 对象除了效率较好之外,因为不用把数据全部传回,故可以降低网络的负载。DataReader提供一个来自数据库的快速、仅向前、只读数据流。

ADO.NET 使用Connection 对象来连接数据库,使用Command 或DataAdapter对象来执行SQL语句,并将执行的结果返回给DataReader 或 DataAdapter ,然后再使用取得的DataReader 或DataAdapter 对象操作数据结果。

实际上ADO.NET对XML用的少,DBA可能会用的多一些

来自为知笔记(Wiz)

时间: 2024-10-16 06:00:25

ADO.NET常用五种对象的相关文章

php 常用五种模式

/* 设计模式之单例模式 $_instance 必须声明为静态的私有变量 构造函数必须声明为私有,防止外部程序 new 类从而失去单例模式的意义 getInstance() 方法必须设置为公有的,必须调用此方法以返回实例的一个引用 :: 操作符只能访问静态变量和函数 new 对象会消耗内存 使用场景:最常用的地方是数据库连接 使用单例模式生成一个对象后,该对象可以被其它众多对象所使用 [单例模式适用场景] 1.当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时 2.当这个唯一实例应该是

Redis的五种对象类型及其底层实现

目录(?)[-] Redis对象类型简介 Redis对象底层数据结构 字符串对象 列表对象 哈希对象 集合对象 有序集合对象 结尾 Redis对象类型简介 Redis是一种key/value型数据库,其中,每个key和value都是使用对象表示的.比如,我们执行以下代码: redis>SET message "hello redis" 其中的key是message,是一个包含了字符串"message"的对象.而value是一个包含了"hello re

PHP V5 的五种常用设计模式

设计模式 一书将设计模式引入软件社区,该书的作者是 Erich Gamma.Richard Helm.Ralph Johnson 和 John Vlissides Design(俗称 "四人帮").所介绍的设计模式背后的核心概念非常简单.经过多年的软件开发实践,Gamma 等人发现了某些具有固定设计的模式,就像建筑师设计房子和建筑物一样,可以为浴室的位置或厨房的构造方式开发模板.使用这些模板或者说设计模式 意味着可以更快地设计更好的建筑物.同样的概念也适用于软件. 设计模式不仅代表着更

struts2获取表单数据之 属性封装 模型驱动 表达式封装 对象封装到list集合 对象封装到map集合 五种方便的封装方式

一.属性封装 属性封装是在action里面设定属性值,属性名字一定要和表单中的name一样,action中extends ActionSupport demo1.jsp: <body> This is my login JSP page. <br> <form action="demo1.action" method="post" > username<input type="text" name=&qu

java线程池与五种常用线程池策略使用与解析

背景:面试中会要求对5中线程池作分析.所以要熟知线程池的运行细节,如CachedThreadPool会引发oom吗? java线程池与五种常用线程池策略使用与解析 可选择的阻塞队列BlockingQueue详解 首先看一下新任务进入时线程池的执行策略: 如果运行的线程少于corePoolSize,则 Executor始终首选添加新的线程,而不进行排队.(如果当前运行的线程小于corePoolSize,则任务根本不会存入queue中,而是直接运行) 如果运行的线程大于等于 corePoolSize

java线程池和五种常用线程池的策略使用与解析

java线程池和五种常用线程池策略使用与解析 一.线程池 关于为什么要使用线程池久不赘述了,首先看一下java中作为线程池Executor底层实现类的ThredPoolExecutor的构造函数 public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue, ThreadFactory th

关于Redis五种类型对象的学习笔记

我们在使用Redis的时候,直接接触到的是字符串对象(String),列表对象(List),哈希对象(Hash),集合对象(Set),有序集合对象(SortedSet)这五种类型的对象,基本的命令如:String(get set) List(lpush rpush lpop rpop lrange) Hash(hget hset hlen hgetall) Set(sadd smembers smov) SortedSet(Zadd Zrange)等. 我们首先看一下redis对象的数据结构:

五种常用的图片格式及其是否有数据压缩的总结

五种常用的图片格式及其是否有数据压缩的总结 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 说明:本文主要介绍五种最常见和最常用的图像格式:BMP,PNG,JPEG,JPEG200,以及GIF.在进行图像处理相关应用之前第一步首先是能够读取这些图像文件,虽然很多开发工具支持库比如OpenCV等已经帮助节省了这些工作的麻烦,便利的同时也使得开发人员不再熟悉这些基本的图像格式.本文的作用就在于将这五种常用的图像格式进行分条叙述,方便查阅. 内容借鉴主流图片格

五种常用的算法设计技巧之二:分治算法

一,介绍 分治算法主要包含两个步骤:分.治.分,就是递归地将原问题分解成小问题:治则是:在解决了各个小问题之后(各个击破之后)合并小问题的解,从而得到整个问题的解 二,分治递归表达式 分治算法一般都可以写出一个递归表达式:比如经典的归并排序的递归表达式:T(N)=2T(N/2)+O(N) T(N)代表整个原问题,采用了分治解决方案后,它可以表示成: ①分解成了两个规模只有原来一半(N/2)的子问题:T(N/2) ②当解决完这两个子问题T(N/2)之后,再合并这两个子问题需要的代价是 O(N) 递