zoukankan      html  css  js  c++  java
  • 数据库ADO.NET的结构

     

    1          ADO.NET结构

    1.1         相关的名字空间

    1.1.1   System.Data 这是最主要的数据相关名字空间,其下包括两个相关名字空间

    l        System.Data.OleDB

    l        System.Data.SqlClient

    1.1.2   .NET数据提供者

    它允许你连接到数据源, 对数据源执行一组命令, 并根据命令获取结果.

    1.1.3   .NET架构中有两个.NET数据提供者

    OLE DB .NET数据提供者能连接到OLEDB数据源

    SQL SERVER .NET数据提供者能连接到SQL SERVER

    1.1.4   System.Data.OleDB

    包含OLEDB .NET数据提供者所使用的类. 这些类以OleDB开头

    1.1.5   System.Data.SqlClient

    包含SQL SERVER数据提供者使用的类, SQL开头

    2          ADO.NET组件

    ADO.NET提供两个主要的组件: 数据集和.NET数据提供者

    2.1         数据集

    ADO.NET的数据集支持断开连接方式的分布式数据方案

    数据集是一个集合,包含了来自一个数据源的一个或多个表或者记录, 以及其间的关系的信息. DataSetADONET的核心, 是数据在内存中的副本.

    数据集包含了表, , , 约束, 以及表间的关系.它可以有多个表,用关系将表进行连接

    可以在DataSet中创建数据的DataView.再用DataView特性将控件绑定到DataSet中的值.(指定控件从哪个DataTable获得数据-DataTableDataView);

    DataSet使用XML传输数据

    DataSet类表示ADO.NET的数据集, 存储在System.Data名字空间

    数据集中的对象列表

    对象

    描述

    DataSet

    表示内存中的虚拟的, 本地的关系数据库,用于临时存储数据

    DataTable

    表示数据集中数据位于内存的表.

    该对象以行和列的形式包含了数据

    DataRow

    表示包含了DataTable对象中的数据的一行

    DataColumn

    表示DataTable对象中的一个列模式

    DataRelation

    表示两个DataTable对象之间存在的关系

    Constraint

    表示对一个或多个DataColumn对象的约束

    2.2         .NET数据提供者

    数据提供者是担当应用程序和数据源之间的桥的角色, 用来与数据源建立连接, 执行一组命令, 以及获取结果, 取得结果并处理之后, 需要再次使用提供者在数据源中更新修改

    2.2.1   .NET数据提供者的四个核心组件

    l        Connection对象

    用于连接到数据库. 建立并管理数据库的连接.

    Connnection对象上的Open方法打开它或在用DataAdapter时隐式使用它

    l        Command对象

    Command对象通过Connection对象传递参数并对数据存储执行命令,再将数据返回到DataReader或DataSet

    l        DataReader对象

    DataReader对象从数据库读取只读/只向前的数据流,并与Command和Connection对象联合使用.

    在任意给定的时间点, DataReader只允许将一行数据存储在内存中. 这有利于减少系统开销,它比用DataSet的速度快.

    不过要注意在使用时保持到数据存储的连接处于活动状态,并要求你必须在结束时关闭DataReader对象

    l        DataAdapter对象

    DataAdapter用于与填充DataSet的数据库通信.它配合Connection和Command对象从数据存储中检索数据; DataAdapter也能将内存DataSet中的本地修改后数据存回其基本数据存储.

    如何将所作的修改存回到数据存储中,这时应该使用DataAdapter

    这时的DataAdapter如何工作?(这里要求不要调用DataSet的AcceptChanges方法)

    基本流程:

    ü        指定DataAdapter的SelectCommand/InsertCommand/UpdataCommand和DeleteCommand

    ü        使用DataAdapter从数据库检索数据,并填充DataSet

    ü        允许用户或系统对DataSet进行修改

    ü        调用GetChanges方法只使用已更新的基本数据存储中的已修改过的值来填充DataSet(或者说,该方法的可选参数RowState,不指定,就会返回所有改过的行)

    ü        调用DataAdapter的Update方法,并在参数中传递包含修改值的DataSet

    n        对于插入操作,会用InsertCommand属性值

    n        对于更新,会用UpdateCommand属性值

    n        对于删除,会用DeleteCommand属性值

    实际情况是ADONET会根据需要自动调用适当的命令

    注意: DataAdapter不仅可以在数据集和数据库间传输数据

           也可以在数据集和其他一些数据源, 比如Microsoft Exchange SERVER, 之间传输

    2.2.2   .NET数据提供者的类型

    有两种:

    l        OLE DB

    允许通过COM的互操作性进行数据访问

    它可以使用几种OLEDB提供者, 例如

    n        SQLOLEDB

    n        MSDAORA

    n        Microsoft.Jet.OLEDB.4.0

    但它不支持MSDASQL, 因为这个是面向ODBC

    2.2.2.1.1  OLEDB.NET数据提供者类(存储在System.Data.OleDB名字空间)

    描述

    OleDbConnection

    表示到数据源的打开连接

    OleDbCommand

    表示可以对数据源执行的SQL语句或存储过程

    OleDbDataReader

    提供了一种方法, 可以用只向前的模型从数据源读取数据

    OleDbDataAdapter

    表示数据命令和数据库连接, 可以用来将数据在数据源和数据集之间双向传递

    OleDbError

    对应于数据源所返回的错误或警告的编译信息

    OleDbException

    表示当OLEDB数据源返回错误或警告是所引发的异常

    OleDbPermission

    允许OLEDB提供者验证用户是否拥有足够的安全性权限, 来获取数据源的访问权限

    OleDbTransaction

    表示数据源的SQL事务

     

    l        SQL SERVER

    它是专门针对Microsoft SQL SERVER, 为实现这一点, 它使用了TDS(表格式数据库)协议

    2.2.2.1.2  SQL SERVER .NET数据提供者类(存储在System.Data.SqlClient名字空间)

    描述

    SqlConnection

    表示到数据源的打开连接

    SqlCommand

    表示可以对SQL SERVER执行事务SQL语句或存储过程

    SqlDataReader

    提供一种方法, 用只向前模型读取数据

    SqlDataAdapter

    表示数据命令,SQLSERVER数据库和数据集之间传递数据

    SQLError

     

    SQLException

     

    SqlTransaction

    事务

    3          ADO.NETXML

    ADO.NET内置XML支持

    ADO.NET只提供了显示和隐式XML支持

    ADO.NET使用XML作为存储和传输数据的内部格式

    这样有两个有点:

    l        有利于不同应用程序交换数据

    l        数据可以通过不同的协议和防火墙

    XML以数据集的形式与ADO.NET集成在一起

    l        可以用xml将数据从数据源传到数据集

    l        或从数据集传送到组件

    l        数据集也可以访问xml文件中的数据

  • 相关阅读:
    字符统计和滑动窗口
    字典树应用及用哈希表代替
    迷宫里的动态规划应用
    求所有排列中的第 i 个排列的问题
    最大子串和问题
    二分查找、变形及应用
    前 n 个数原址排序的问题
    LeetCode 32 括号匹配
    11.常用的API
    10.正则表达式
  • 原文地址:https://www.cnblogs.com/lizunicon/p/1287949.html
Copyright © 2011-2022 走看看