zoukankan      html  css  js  c++  java
  • SqlCommand和SqlDataAdapter有什么区别

    因为DataSet是离线的,所以SqlDataAdapter这个对象是连接DataSet和数据库的桥梁,所有对DataSet的操作(填充,更新等)都要通过他
    ado.net数据访问有两种方式:
    1.离线--通过DataSet,然后离线增,删,改,最后通过SqlDataAdapter解 析到数据库中
    2.直接对数据库操作SqlCommand (Update,Insert,Delete)
    SqlCommand就是是命令了,可以用它来执行SQL命令
    SqlDataAdapter就是数据适配器了,它是用于在数据源和数据集之间通讯的一组对象
    SqlCommand对应DateReader
    SqlDataAdapter对应DataSet
    SqlCommand是C#中与Sql数据库打交道的对象,几乎所有的Sql数据库操作都需要使用该对象来实现,但其功能有限,只是简单的实现了与Sql数据库的接口而已;
    SqlDataAdapter是一个功能强大的SqL数据适配器,也用于操作Sql数据库,但它的操作都要通过SqlCommand来实现(有一个属性对象的类型就是SqlCommand),也就是说,可以把SqlDataAdapter看作是一个把一些特殊功能封装了、增强了的SqlCommand!
    SqlCommand与ADO时代的Command一样,SqlDataAdapter则是ADO.NET中的新事物,它配合DataSet来使用。其实,DataSet就像是驻留在内存中的小数据库,在DataSet中可以有多张DataTable,这些DataTable之间可以相互关联,就像在数据库中表关联一样!SqlDataAdapter的作用就是将数据从数据库中提取出来,放在DataSet中,当DataSet中的数据发生变化时,SqlDataAdapter再将数据库中的数据更新,以保证数据库中的数据和DataSet中的数据是一致的!
    用微软顾问的话讲:DataAdapter就像是一把铁锹,它负责把数据从数据库铲到DataSet中,或者将数据从DataSet铲到数据库中!
    -----------------------------------------
    SqlDataReader
    只能顺序读,不能修改数据库
    在程序没执行完之前一直保持连接
    一次读出,可以放在DATASET里的。可以用来修改数据库

    这个区别是比较明显的:

    1,Command用来执行语句,只是单纯的执行,比如,新增,删除,修改,以及查找。

    2,而DataAdapter则是数据适配器,用来填充数据集等容器(内部也实现了一些Command功能)。

    所以,显而易见的,如果只是新增,删除,修改,以及简单的查找,则Command拥有极强的性能优势。

    如果用来填充一些数据集容器(特指执行查询),则数据适配器是不二选择

    Command一般用来做增删改的操作,当然也能够查询。

    DataAdapter一般跟DataSet和DataTable一块进行查询操作。你可以把DataSet理解成临时的数据仓库,DataAdapter可以理解成在数据库与DataSet临时仓库之间的运输车。

    如果数据量大的查询,如果返回行数多或者返回多个表,DataAdapter把经常要查询的数据临时保存在DataSet里,可以避免多次访问数据库,节省服务器的数据库连接资源。

    如果不是特别大的查询,就可以直接用Command查询。毕竟货物少,给他一个单独的大仓库明显浪费。

    可能比方不是很恰当,大概意思是这样的。

  • 相关阅读:
    Python调用C++的DLL
    Go-map
    Go-切片
    Go-数组
    Go-流程控制
    Go-运算符
    Go-变量和常量
    Go-VS Code配置Go语言开发环境
    Go-跨平台编译
    Go-从零开始搭建Go语言开发环境
  • 原文地址:https://www.cnblogs.com/handsomer/p/3698557.html
Copyright © 2011-2022 走看看