• ADO.NET基础知识


    ADO.NET定义

    ADO是ActiveX Data Objects的缩写,ADO.NET是数据库应用程序和数据源之间沟通的桥梁,主要提供一个面向对象的数据访问架构,用来开发数据库应用程序,就是一组类库,可以让我们通过程序的方式访问数据库(方便用户)。

    由两个主要元件是 .NET Framework 资料提供者(1:SqConnection 2:SqlCommand 3:SqlDataReader 4:SqlDataAdapter)和数据集(DataSet)。


    ADO.NET使用一些ADO对象,如ConnectionCommand对象,也引入了一些新对象。关键的新对象包括DataSetDataReader,和DataAdapter

    这种改进的ADO.NET和之前的数据架构的重要区别在于存在一个对象--DataSet对象--这是独立的不同于任何的数据存储。正因为如此,DataSet功能能够作为独立的实体。你可以将DataSet理解为总是断开连接对他包含的数据源和目标一无所知的记录集,在DataSet内部,就像一个数据库一样,有表,列,关系,约束,视图等等。

    ADO.NET五大对象

    ◆数据库好比水源,存储了大量的数据。

    ◆Connection好比伸入水中的进水笼头,保持与水的接触,只有它与水进行了“连接”,其他对象才可以抽到水。

    ◆Command则像抽水机,为抽水提供动力和执行方法,通过“水龙头”,然后把水返给上面的“水管”。

    ◆DataAdapter、DataReader就像输水管,担任水的传输任务,并起着桥梁的作用。DataAdapter(抽取完就可断开数据库连接) 像一根输水管,通过发动机,把水从水源输送到水库里(内存)进行保存。DataReader(保持数据库连接) 也是一种水管,和DataAdapter不同的是,DataReader不把水输送到水库里面,而是单向地直接把水送到需要水的用户那里或田地里,所以要比在水库中转一下(速度)更快。

    ◆DataSet则是一个大水库,把抽上来的水按一定关系的池子进行存放。即使撤掉“抽水装置”(断开连接,离线状态),也可以保持“水”的存在。这也正是ADO.NET的核心。

    ◆DataTable则像水库中的每个独立的水池子,分别存放不同种类的水。一个大水库由一个或多个这样的水池子组成。

    SqlCommand---主要有以下三个方法:(Commands扫描连接然后结果集以流的形式被返回,这种流可以被DataReader对象读取,或者推入DataSet对象。)

    1:ExecuterNonQuery()执行对数据库的增删改,返回受影响的行数

    2:ExecuteScalar()执行查询,返回首行首列

    3:ExecuteReader()执行查询,返回DataReader对象

    CommandBuilder 自动生成单表命令,用于将对 DataSet 所做的更改与关联的 SQL Server 数据库的更改相协调。无法继承此类。

    如果在运行时动态指定 SelectCommand 属性(例如,通过接受用户提供的文本命令的查询工具),那么您可能无法在设计时指定适当的InsertCommandUpdateCommand 或 DeleteCommand如果您的 DataTable 映射到单个数据库表或者是从单个数据库表中生成的,那么您可以利用 DbCommandBuilder 对象来自动成 DbDataAdapter 的 DeleteCommandInsertCommand 和 UpdateCommand

    CommandBuilder对象使用方法:

    要使用CommandBuilder对象,需要首先定义起一个实例,将该实例绑定到数据适配器对象,然后调用数据适配器对象的Update方法更新DataSet对象即可。比如下面的语句。

    SqlCommandBuilder MyCb = new SqlCommandBuilder(MyAdapter);

    MyAdapter.Update(MyDataSet, "T_STUDENT");

    何时使用:

    a. 有时候需要缓存的时候,比如说在一个商品选择界面,选择好商品,并且进行编辑/删除/更新后,
    最后一并交给数据库,而不是每一步操作都访问数据库,因为客户选择商品可能进行n次编辑/删除
    更新操作,如果每次都提交,不但容易引起数据库冲突,引发错误,而且当数据量很大时在用户执行
    效率上也变得有些慢
    b.有的界面是这样的有的界面是这样的,需求要求一定用缓存实现,确认之前的操作不提交到库,点击
    页面专门提交的按钮时才提交商品选择信息和商品的其它信息. 我经常遇到这样的情况
    c.有些情况下只往数据库里更新,不读取. 也就是说没有从数据库里读,SqlDataAdapter也就不知道是
    更新哪张表了,调用Update就很可能出错了。这样的情况下可以用SqlCommandBuilder 了
    (此段参考了他人所作)
    d.在使用adapter的时候如果不是用设计器的时候,并且要用到adapter.Update()函数的时候,这时候要注意
    SqlCommandBuilder必须要有
  • 相关阅读:
    Eclipse 代码模板
    Eclipse 安装插件
    Eclipse 任务管理
    Eclipse 添加书签
    Eclipse 重构菜单
    Eclipse 浏览(Navigate)菜单浏览 Eclipse 工作空间
    Eclipse 查找
    Eclipse 悬浮提示
    Eclipse 快速修复
    Eclipse 内容辅助
  • 原文地址:https://www.cnblogs.com/CrabMan/p/5195215.html
Copyright © 2020-2023  润新知