ADO.NET连接数据库的原理是什么?

As1000__a 2012-01-28 01:52:32
ADO.NET连接数据库的原理是什么?
...全文
2887 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
chen_ya_ping 2012-01-28
  • 打赏
  • 举报
回复
其实还真的没有必要深入研究,就好像计算机中所有的都是0 1
wcj1018_net 2012-01-28
  • 打赏
  • 举报
回复
搞研究的话,可以深究
缪军 2012-01-28
  • 打赏
  • 举报
回复
其实,如果是VS6,学习数据访问就必然要学到ADO,
那么DAO,RDO,OLEDB,ODBC这些都是必学的,
老师必然会在课堂上讲解这些数据访问的原理,
ODBC作为更通行的数据访问接口,至今仍然广泛的应用在各个开放式平台和跨平台系统

只不过,ADO.net是在ADO的基础上进化来的,微软平台使用ADO早已经是首选,
所以连微软也不会像十几年前那样不厌其烦的介绍原理还要比较几种数据访问方案之间的差异

我倒是觉得,如果是4年制学习软件专业,老师的要求也是无可厚非的
wosizy 2012-01-28
  • 打赏
  • 举报
回复
这也太生硬了吧.....
你们的老师也很有才啊!
这样吧! 把这个问题解开 分成2部分 或者更好理解

1、什么是ADO.NET
答:ADO.NET是一组用于和数据源进行交互的面向对象类库。通常情况下,数据源是数据库,但它同样也能够是文本文件、Excel表格或者XML文件。
ADO.NET允许和不同类型的数据源以及数据库进行交互。然而并没有与此相关的一系列类来完成这样的工作。因为不同的数据源采用不同的协议,所以对于不同的数据源必须采用相应的协议。一些老式的数据源使用ODBC协议,许多新的数据源使用OleDb协议,并且现在还不断出现更多的数据源,这些数据源都可以通过.NET的ADO.NET类库来进行连接。
ADO.NET提供与数据源进行交互的相关的公共方法,但是对于不同的数据源采用一组不同的类库。这些类库称为Data Providers,并且通常是以与之交互的协议和数据源的类型来命名的。表1列处了一些常见的data providers,以及它们所使用的API前缀,和允许进行交互的数据源类型。

2、数据源的连接枢纽
答:这里得谈到它的对象了 (必须的)
ADO.NET包含的对象
SqlConnection 对象

和数据库交互,你必须连接它。连接帮助指明数据库服务器、数据库名字、用户名、密码,和连接数据库所需要的其它参数。connection对象会被command对象使用,这样就能够知道是在哪个数据库上面执行命令。
与数据库交互的过程意味着你必须指明想要发生的操作。这是依靠command对象执行的。你使用command对象来发送SQL语句给数据库。command对象使用connection对象来指出与哪个数据库进行连接。你能够单独使用command对象来直接执行命令,或者将一个command对象的引用传递给SqlDataAdapter,它保存了一组能够操作下面描述的一组数据的命令。

sqlDataReader对象

许多数据操作要求你只是读取一串数据。data reader对象允许你获得从command对象的SELECT语句得到的结果。考虑性能的因素,从data reader返回的数据都是快速的且只是“向前”的数据流。这意味着你只能按照一定的顺序从数据流中取出数据。这对于速度来说是有好处的,但是如果你需要操作数据,更好的办法是使用DataSet。

DataSet对象

DataSet对象是数据在内存中的表示形式。它包括多个DataTable对象,而DataTable包含列和行,就象一个普通的数据库中的表。你甚至能够定义表之间的关系来创建主从关系(parent-child relationships)。DataSet是在特定的场景下使用――帮助管理内存中的数据并支持对数据的断开操作的。DataSet是被所有Data Providers使用的对象,因此它并不像Data Provider一样需要特别的前缀。

SqlDataAdapter对象

某些时候你使用的数据主要是只读的,并且你很少需要将其改变至底层的数据源。同样一些情况要求在内存中缓存数据,以此来减少并不改变的数据被数据库调用的次数。Data adapter通过断开模型来帮助你方便的完成对以上情况的处理。当在一单批次的对数据库的读写操作的持续的改变返回至数据库的时候,Data adapter 填充(fill)DataSet对象。data adapter包含对连接对象以及当对数据库进行读取或者写入的时候自动的打开或者关闭连接的引用。另外,data adapter包含对数据的SELECT,INSERT,UPDATE和DELETE操作的command对象引用。你将为DataSet中的每一个table都定义data adapter,它将为你照顾所有与数据库的连接。所有你将做的工作是告诉data adapter什么时候装载或者写入到数据库。


总结:ADO.NET是与数据源交互的.NET技术。有许多的Data Providers,它将允许与不同的数据源交流――取决于它们所使用的协议或者数据库。然而无论使用什么样的Data Provider,你将使用相似的对象与数据源进行交互。SqlConnection对象管理与数据源的连接。SqlCommand对象允许你与数据源交流并发送命令给它。为了对进行快速的只“向前”地读取数据,使用SqlDataReader。如果想使用断开数据,使用DataSet并实现能进行读或者写入数据源的SqlDataAdapter。

到此为止吧!希望能帮到你. 要细究的话 那还多着呢...
缪军 2012-01-28
  • 打赏
  • 举报
回复
既然是ado.net 不知道你们老师为什么会问这个问题,
如果是简单了解,可以看看MSDN:
http://msdn.microsoft.com/zh-cn/library/h43ks021.aspx

如果是真的去探究,那就要从ADO说起,你要了解到很多概念,诸如:
RDO,DAO,OLEDB,ODBC,以及什么事数据提供者,等等,
这个是在线的有关ADO的MSDN:
http://msdn.microsoft.com/en-us/library/aa733612(v=vs.60).aspx
缪军 2012-01-28
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wanghui0380 的回复:]
(我为什么要看无聊的春晚,好像我说不出来为什么)
[/Quote]
我已经N年没看春晚了,每当那个时候,我都是在写代码或者看书,
btw:好像我说不出来为什么
wanghui0380 2012-01-28
  • 打赏
  • 举报
回复
又当解剖学了

其实当一件事情被规定出来以后他就没啥道理可言了。

为啥中国人要过年,为啥cctv年年要春晚,为啥中国人要用筷子。其实根本没啥原理啊,为啥啊的问法。

当第一人把oledb的规则定义出来以后,后面就已经没有为什么的了。你照着做就ok,如果真要问为什么,那你只能去问那个第一个人他为啥要这么做。估计八成也没答案(我为什么要看无聊的春晚,好像我说不出来为什么)
dalmeeme 2012-01-28
  • 打赏
  • 举报
回复
如果可能的话,可以看一下Ado.net底层的类的源代码。不过可能看不太懂,研究这个没多大意义。
vinoYang 2012-01-28
  • 打赏
  • 举报
回复
这尼玛也深究啊,说白了也是C/S模式的请求与应答模型啊。你的应用程序对sql server来说是个客户端,你发送的sql执行命令,类似于请求。服务端(sql server)执行命令,返回给你数据或结果作为响应。类比下就好啦,至于协议什么的不会还要知道吧?可以是tcp/IP协议,配置的时候有的,还有什么通道等其他协议的。
LMAOhuaNL 2012-01-28
  • 打赏
  • 举报
回复
http://developer.51cto.com/art/200911/162930.htm
As1000__a 2012-01-28
  • 打赏
  • 举报
回复
这是老师留的一道题。找不到答案啊
苦苦的潜行者 2012-01-28
  • 打赏
  • 举报
回复
我只会用,不知道,
就像1+1=2的原理是什么,我不知道..

苦B..
深入探索了类、接口、属性和方法。讲解了数据结构,演示了如何用ado.net来解决具体的数据访问问题。重点讨论了ado.net如何有效地平衡"功能的泛化"和"执行效率",以及它如何解决对扩展性、并发性和可靠性的要求。针对其他数据访问api(包括ole db,ado,odbc和jdbc)的程序员,提供了帮助其迁移到ado.net许多易用的参考 本书由资深数据库教师编写,全面介绍了adonet。书中深入剖析了adonet的本质,探索了类、接口、属性和方法的工作原理,同时还为其他数据访问api(包括oledb,ado,odbc和jdbc)的程序员,提供了有价值的参考材料。本书适合具有一定数据库基础的开发人员阅读,也可用作数据库中高级课程或培训班配套教材。 第1章 数据:模型、应用程序和api 1.1 信息、数据建模和数据库 1.2 数据库和api基础 1.3 关系模型 1.3.1 关系设计规则 1.3.2 关系模型的优点 1.3.3 ado.net对关系模型的支持 1.4 层次结构、对象和混合 1.4.1 现代的非关系数据 1.4.2 多维数据 1.4.3 非关系数据和ado.net 1.4.4 xml和信息集 1.4.5 xml、数据库和统一数据表示 1.5 以数据的中心的应用程序模型 1.6 数据访问api的发展历程 1.7 小结 第2章 adonet基础 2.1 数据访问和.net体系结构 2.2 两种数据访问模式 .2.3 连接模式 2.3.1 oledb和sqlclient数据提供程序 2.3.2 使用adonet数据提供程序编写泛型数据访问代码 2.3.3 数据提供程序模型中的游标 2.4 断开模式和dataset 2.5 .net中的xml api 2.5.1 流式xml 2.5.2 xml架构 2.5.3 xmldocument,xpath和xpathnavigator 2.5.4 xml和数据提供程序的混合 2.6 托管数据类的布局 2.7 小结 第3章 连接模型:流式数据访问 3.1 .net数据提供程序和连接模型 3.2 连接类 3.3 连接池 3.4 元数据方法 3.5 command类 3.6 使用参数 3.7 命令的准备、取消、超时和清除 3.8 通过datareader进行流式数据传输 3.9 通过idatarecord读取列值 3.10 错误处理 3.11 使用事务处理 3.11.1 分布式事务处理 3.11.2 连接池的工作原理 3.11.3 声明性事务处理的工作原理 3.12 permission类 3.13 小结 第4章 dataset类:关系数据的集合 4.1 dataset 4.1.1 dataset作为驻留内存的数据库 4.1.2 dataset的用途 4.2 dataset对象模型 4.2.1 datacolumn,datarow和data table 4.2.2 data table及其用法 4.2.3 datarow 4.2.4 键、关系和约束 4.2.5 通过关系来导航:select和find 4.2.6 行的添加、获取、更改和删除 4.2.7 合并更改 4.2.8 合并dataset 4.2.9 datarow的状态和版本 4.2.10 规则和关系 4.2.11 错误处理 4.2.12 事件 4.2.13 dataset和非关系类型 4.3 定义信息架构 4.4 小结 第5章 dataadapter:数据库和dataset的同步 5.1 乐观并发性 5.2 dataadapter类 5.3 从托管提供程序中填充dataset 5.3.1 在fill中使用架构和映射信息 5.3.2 执行dataadapter.fill期间的错误处理 5.4 dataadapter.fill的工作原理 5.5 oledbdataadapter中的ado集成 5.6 通过dataadapter更新数据库 5.6.1 commandbuilder类 5.6.2 直接编写更新逻辑 5.7 update的工作原理 5.8 dataset事件模型 5.9 编写常规自定义命令 5.9.1 adox commandbuilder 5.9.2 构造批处理更新命令 5.10 再论dataset和非关系数据类型 5.11 应该使用dataset还是datareader 5.12 小结 第6章 数据绑定:adonet和gui 6.1 windows窗体和web窗体 6.2 数据表示模式 6.3 使用数据绑定控件 6.3.1 web窗体数据绑定类型 6.3.2 数据绑定控件类型解析 6.3.3 同datareader绑定 6.4 用dataset进行数据绑定 6.5 data view和通用转换 6.6 表和列映射 6.7 可编辑的列表控件:datalist和datagrid 6.7.1 datalist 6.7.2 datagrid 6.8 非关系数据和data view 6.9 与visual studio的集成 6.10 控件和数据窗体 6.1l 小结 第7章 xml和数据访问的集成 7.1 xml和传统数据访问 7.2 xml和adonet 7.2.1 定义dataset的架构 7.2.2 优化dataset的xml架构 7.2.3 将xml读入dataset 7.2.4 从dataset写入xml架构 7.2.5 microsoft特有的批注 7.2.6 从dataset写入xml数据 7.3 序列化、封送和dataset 7.4 类型化的dataset 7.5 xmldatadocument类 7.5.1 xmldatadocument和dataset 7.5.2 xmldatadocument和datadocumentxpathnavigator 7.6 数据库和xml的重要意义 7.6.1 xml作为一种特定类型 7.6.2 文档合成与分解 7.7 sql server、xml和托管数据访问 7.7.1 for xml关键字 7.7.2 openxml 7.7.3 sqloledb提供程序 7.7.4 sqlxml托管类 7.7.5 sqlxml web应用程序 7.7.6 updategram 7.7.7 sql xml oledb提供程序中的for xml 7.7.8 批量加载 7.7.9 未来的支持 7.8 使用sqlxml和.net 7.9 小结 第8章 提供程序:adonet和数据提供程序 8.1 如何选择 8.2 保留ole db:ole db概念总结 8.3 保留ole db:与oledb数据提供程序交互 8.3.1 主要的共型和类型映射 8.3.2 访问程序 8.3.3 执行命令、返回结果和使用openrowset 8.3.4 command的最终格式和行为 8.3.5 command dialect 8.3.6 层次化数据 8.3.7 从rowset更新 8.3.8 错误 8.3.9 不支持的功能 8.3.10 支持和不支持的提供程序 8.4 编写数据提供程序 8.5 实现connection类 8.5.1 规格 8.5.2 实现 8.5.3 特殊化 8.6 实现command类 8.6.1 规格 8.6.2 实现 8.6.3 特殊化 8.7 实现datareader类 8.7.1 规格 8.7.2 实现 8.7.3 特殊化 8.8 实现dataadapter类 8.8.1 规格 8.8.2 实现 8.8.3 特殊化 8.9 添加增强功能 8.10 实现xml infoset提供程序 8.11 实现xmlreader 8.12 实现xpathnavigator 8.13 其他实现方案:总结 8.14 论证大一统访问模型的可行性 8.15 小结 第9章 消费者的adonet迁移路径 9.1 adonet迁移路径 9.2 面向ole db程序员的adonet 9.2.1 cotype等价物 9.2.2 数据提供程序的透明性 9.2.3 使用提供程序特有的功能 9.2.4 错误处理 9.2.5 系统提供的服务 9.2.6 系统提供的组件 9.2.7 服务提供程序 9.2.8 封送 9.3 ado概述 9.4 面向ado程序员的adonet 9.5 ado connection、command和事务处理 9.5.1 连接连接字符串 9.5.2 使用事务处理 9.5.3 命令和command行为 9.5.4 层次化数据 9.5.5 异步操作 9.5.6 属性 9.6 adonetado断开模型的比较 9.6.1 类的等价物 9.6.2 导航 9.6.3 ado.net中的getrows有何变化 9.6.4 更新 9.6.5 创建更新语句 9.6.6 批处理更新 9.6.7 ado.net的dataset扩展 9.6.8 列和表的命名 9.6.9 排序和筛选 9.7 ado db的互操作性 9.8 面向odbc程序员的ado.net 9.8.1 句柄和环境 9.8.2 命令 9.8.3 获取数据 9.8.4 元数据和架构信息 9.8.5 错误 9.9 面向jdbc程序员的adonet 9.9.1 泛化代码 9.9.2 提供程序的类型 9.9.3 连接池 9.9.4 非关系数据类型 9.9.5 对象数据库 9.9.6 其他sql-99扩展 9.9.7 元数据 9.9.8 事务处理 9.9.9 命令和行为 9.9.10 执行查询和返回结果 9.9.11 服务器游标 9.9.12 错误 9.10 adonet jdbc程序员和断开模型 9.11 sql/j part 0和类型化dataset 9.12 小结 第10章 adonet和各种数据类型 10.1 数据访问的发展历程 10.2 adonet和基于服务器及文件的rdbms 10.3 adonet和同种层次结构数据及ordbms 10.4 adonet和网络数据:对象图、odbms与网络dbms 10.5 adonet和结构化文件、多维数据及ordbms 10.6 adonet平面文件和半结构化文件 10.7 小结 附录a 数据类型和类型映射 a.1 db type枚举 a.2 将sql server数据类型映射到sqltype及sqldbtype a.3 将ole db dbtype映射到.net数据类型 a.4 odbc类型映射 a.5 parameter.dbtype 附录b 表达式的语法 b.1 用户自定义值 b.2 运算符 b.3 字符串运算符 b.4 通配符 b.5 父/子关系引用 b.6 聚合 b.7 函数 附录c 架构推断规则 c.1 排除信息 c.2 推断过程总结 c.3 表 c.4 有属性的元素 c.5 有子元素的元素 c.6 重复元素 c.7 列 c.8 属性 c.9 没有属性或子元素的元素 c.10 关系 c.11 元素文本 c.12 限制
对任何 Web 站点而言,最重要的要求就是能够准确而安全地发送和存储信息。这种信息可以是任何形式,包括信贷公司提供的信用卡资料到市场信息网站的民意投票结果。不管将 ASP.NET Web 页面用于何种目的,您迟早都会需要处理涉及数据库的访问、读取和写入数据以及一般的控制操作。 幸运的是,操纵 Web 应用程序的数据库比以前更容易。 .NET Framework 改进了开发复杂的 Web 站点的方式。 ASP.NET 对如何开发复杂和交互的 Web 站点作了重大的改进, ADO.NET 提供了强大而灵活的数据访问功能,从根本上改变了从 Web 应用程序中检索、处理和存储数据的方式。 本书将介绍如何创建能够支持数据的 ASP.NET 应用程序。本书根据一些实践经验进行编写,并列举了演示基础原理的代码示例。本书要求读者对 ASP.NET 和 C# 有一些基本的认识,如果对操纵数据库没有任何经验也没有关系,作者将指导每个过程,包括将 ASP.NET 页面与数据库连接,研究各种读取、处理和更新数据的方法。接下来研究所有涉及侧重于数据的 ASP.NET 编程的问题,包括一些高级的主题,例如使用存储过程和组件。本书还给出了案例分析,将前面几章讨论的内容都置于同一个环境中加以运用。 0.1 本书主要内容 第 1 章介绍创建数据驱动的 Web 站点的一般性概念。特别讨论了 Web 站点与数据之间的关系,在此过程中介绍了 ADO.NET 。在这一章的末尾,还为本书其余章节创建了一个开发环境,讨论了一些可能会遇到的问题。 到底什么是数据库呢?这似乎是个奇怪的问题。第 2 章介绍了不同类型的数据库,如何设计它们,以及如何使用它们存储和检索信息。接下来又概述了 SQL 语言,并与 Microsoft 的数据库方案作了一个简单的比较。 了解了数据库以后,就需要学习如何将它们与 ASP.NET 代码连接。第 3 章首先概述了第 1 章提到的 ADO.NET ,阐明了需要掌握的重要术语。接着是创建和测试对 Northwind 示例数据库连接,本书将通篇使用该数据库。本章演示了大量例子,演示如何连接不同的数据源,例如 Access , SQL Server , Excel 和 XML ,以便在任何开发环境中都游刃有余。 第 4 章通过一些例子,运用 DataReader 对象读取和显示数据。首先讨论了在 ASP.NETADO.NET 中处理数据的原理,在 ADO.NET 中引入了 Command 对象。然后介绍如何运用 DataReader 获取数据,接着将那些数据绑定到像单选按钮、复选框这样的不同控件上和最重要的 DataGrid 上。 第 5 章讨论了一个重要的 ADO.NET 对象: DataSet ,它用于存储和检索服务器上任何复杂形式的数据。在介绍完原理之后,使用大量的例子来演示使用 DataSet 的不同方法。 当然,我们并不总是读取其他人的数据,因此第 6 章介绍了如何在现有的数据库中创建自己的记录。该章的主题包括 ASP.NET 的验证控件,以及使用 Command 对象和 DataSet 对象实现插入记录。

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧