随笔分类 -  ADO.NET

ADO.NET is the next evolution of ADO for the .Net Framework.
摘要:这是一个已经移植到 .NET 的 ADO 应用的例子。也演示了单向、只读、快速 DataReader 的使用。它演示如何使用 DataView 类从 DataSet 获取一个 Table 和 操作一个类似于旧的 ADO 记录集模型。请记得,ADO 记录集仅仅包含一个 Table 的数据,但是 ADO.NET DataSet 可以包含多个 Tables 并且非常灵活。原始的 ADO 示例使用 SQL Server 2000 下的 Employee 示例。原始的示例使用 ADO Recordset 对象管理从 SQL 查询返回的结果数据。新的示例演示了如何使用 SqlDataAdapter 填充 阅读全文
posted @ 2013-12-23 20:57 安布雷拉 阅读(1365) 评论(0) 推荐(0)
摘要:SqlDataReader 类提供了一种从数据源读取数据记录只进流的方法。如果想使用 OLE DB 接口的数据库或者 SQL Server7.0 之前的版本,请参考文章:使用 OLE DB 检索数据。SqlCommand 调用 ExecuteReader 方法创建 SqlDataReader,不通过直接使用构造器创建。当 SqlDataReader 正在使用时,关联的 SqlConnection 处于对 SqlDataReader 服务挂起状态。在这个状态下,除非关闭 SqlConnection 的连接,没有其他操作可以执行。在调用 SqlDataReader 的 Close 方法之前,会一直 阅读全文
posted @ 2013-12-01 21:33 安布雷拉 阅读(1149) 评论(0) 推荐(0)
摘要:OleDbDataReader 类提供了一种从数据源读取数据记录只进流的方法。如果想使用 SQL Server 7.0 或者更高版本,请参考文章:使用 SQL Server 检索数据。OleDbCommand 调用 ExecuteReader 方法创建 OleDbReader,不通过直接使用构造器创建。当 OleDbDataReader 正在使用时,关联的 OleDbConnection 处于对 OleDbDataReader 服务挂起状态。在这个状态下,除非关闭 OleDbConnection 的连接,没有其他操作可以执行。在调用 OleDbDataReader 的 Close 方法之前,会 阅读全文
posted @ 2013-11-28 23:01 安布雷拉 阅读(1416) 评论(0) 推荐(0)
摘要:本文演示如何使用2种不同的方法从 SQL Server 生成 XML。方法1:使用了 SqlCommand 的 ExecuteXmlReader 方法获取 XmlReader,然后使用 DataSet 类的 ReadXml 方法把 XmlReader 填充到 DataSet。方法2:使用 SqlDataAdapter 提取数据内容,并使其适应 DataSet 内部的XML 结构。SqlDataAdapter 类封装了一组数据指令和一个数据连接,用于填充 DataSet 。示例1,首先打开一个 SQL Server Northwind 库的连接。然后创建 SqlCommand,从 Northwi 阅读全文
posted @ 2013-11-27 15:51 安布雷拉 阅读(1857) 评论(0) 推荐(0)
摘要:这个示例演示了如何构建一个到数据源的连接池。你可以通过连接池部署高性能的应用程序。本例中使用连接串创建连接池,并且由 SqlConnection 自动管理。 string connString; connString = "server=(local);Integrated Security=SSPI;database=northwind;" + "pooling=true;"; SqlConnection myConnection = new SqlConnection(conn... 阅读全文
posted @ 2013-11-26 12:44 安布雷拉 阅读(1199) 评论(0) 推荐(0)
摘要:我们有很多方法来过滤数据。一种是在数据库命令级别,利用 where 子句查询过滤数据。另一种是在数据填充到 DataSet 以后过滤数据。本篇讨论后者。一旦数据填充到 DataSet,你可以使用 DataSet 的方法获取一个数据子集。1、使用 Select 方法过滤设想一下 DataSet 填充了 Customers 和 Orders 两个表。你可以使用 Select 方法返回一组行,为名叫 Kelly 的 Customers 过滤数据。 myRowArray = dsCustomers.Select("ContactName like 'Kelly%'" 阅读全文
posted @ 2013-11-24 23:16 安布雷拉 阅读(1283) 评论(0) 推荐(1)
摘要:DataSet 可以包含非关联表,也可以包含关联表。你可以把 DataSet 想象成一个文档数据。事实上,除了 DataSet 是基于层级模型的,其它和 XML 数据文档是一样的。由于数据通常存储在关系数据库,DataSet 可以同时处理层级型关系和主键/外键型关系。 Relationships也有不同的执行方式。默认情况下,Deletes 和 Updates 是级联型的:假如删除一个 Customer 行,关联的 Orders 行也会被删除;假如更改一个 Customer 行的主键,关联的 Orders 表中的外键也会更改。DataSet 包含一个 Relations 集合。你可以利用关联表 阅读全文
posted @ 2013-11-23 15:29 安布雷拉 阅读(1365) 评论(0) 推荐(1)
摘要:除了 Try/Catch 和 Exceptions 以外,新的 ADO.NET 数据框架也允许在 DataSet 的每行数据添加错误信息。如果 Updates 或者其他操作失败,SqlDataAdapters 为 Rows 附加上错误信息。此外,你可以过滤错误行呈现给用户,或者把它传递给错误处理函数。即使用 XML 或者 XML Web Services 传输,Errors 仍然伴随 DataSet。 你可以使用 RowError 属性为 DataSet 的 DataRow 设置错误信息。示例一: // 设置行的自定义错误 myDataSet.Tab... 阅读全文
posted @ 2013-11-22 14:07 安布雷拉 阅读(1411) 评论(0) 推荐(0)
摘要:数据库事务用于控制数据提交到数据库。例如,在标准的账户程序,账户的借贷必须同时完成。由于电脑偶尔发生故障(电力中断、网络中断,等等),可能有些记录被更新或者添加,但是另外一些没有。为了避免这些情况,可以使用事务。ADO.NET 中的事务和 ADO 一样,是在数据库级别处理:即数据库必须支持事务。针对事务有三个基本命令:BeginTransaction、Commit、和 Rollback。BeginTransaction 标识着事务的开始。任何发生在 BeginTransaction 和下个命令(要么 Rollback 要么 Commit)都被认为是事务的一部分。下面的示例代码显示了使用 Sql 阅读全文
posted @ 2013-11-21 16:10 安布雷拉 阅读(1832) 评论(0) 推荐(2)
摘要:ADO.NET 和 DataSet 可以读写 XML Schema 和 XML。获取更多信息,请参考How do I...Use XML and the DataSet?DataSet 的 Schemas,或者 tables、columns、constraints 等等,可以用几种方式定义。一种方法是利用特性和方法创建他们(Tables.Add、Columns.Add、等等)。在 DataSet 内部建立了一个 Schema,可以作为容器保存数据。另一种方法是使用 SqlDataAdapter 或者 OleDbDataAdapter。当你使用这些命令,如果 DataSet 中的 Schema 阅读全文
posted @ 2013-11-20 14:56 安布雷拉 阅读(2282) 评论(0) 推荐(1)
摘要:该主题说明了如何使用 DataSet 在数据库中更新数据。你依然可以直接使用 SqlCommand 在数据库中插入、更新、和删除数据,记住这一点也很重要。理解“从数据库填充DataSet”涵盖的概念有助于你理解这个主题。前一篇“从数据库填充 DataSet”涵盖的部分主题包括从数据库检索数据和填充到 DataSet,以及 DataSet 怎样有别于数据库。一旦 DataSet 被加载,你可以修改数据,并且DataSet 会跟踪变化。DataSet 可以被认为是从数据库检索出的在内存中的缓存数据。DataSet 包含一组表、关系、和约束。示例1中演示如何使用 Add 方法在 DataTable 阅读全文
posted @ 2013-11-19 18:40 安布雷拉 阅读(5027) 评论(0) 推荐(2)
摘要:从数据库获取数据很容易,处理数据更容易。如果想要从数据库获取只进、只读的数据流结果集,你可以使用 DataReader 执行命令并且检索它。关于如何使用 DataReader,请参考:使用 OLE DB 检索数据、使用 SQL Server 检索数据。更多关于绑定、浏览、或者远程处理数据查询结果集的操作,你可以如下例所示把结果集放到 DataSet 里。请记住最重的是,DataSet 是一种独立的有别于数据存储的数据结构。尽管示例从数据库获取数据,但是数据来源是无所谓的;DataSet 总是呈现出一种统一的编程模型。这是一个简单的关于关系型数据库收集数据的示例。由于数据来源不可知,DataSe 阅读全文
posted @ 2013-11-18 16:39 安布雷拉 阅读(6430) 评论(1) 推荐(2)
摘要:一些存储过程通过参数返回值。当参数在SQL表达式或者存储过程中被定义为“输出”,参数值会返回给调用者。返回值存储在 OleDbCommand 或者 SqlCommand 对象的参数集合的参数里。和下面的示例不同,即使 Connection 和 Command 都没有指定,你仍然可以建立参数,但是你必须创建参数集合和预期类型。 workParam = myCommand.Parameters.Add("@CustomerID", SQLDataType.NChar, 5); workParam.Value = "CUSTID";下面的示例演示了如何使用存储 阅读全文
posted @ 2013-11-18 16:31 安布雷拉 阅读(2748) 评论(0) 推荐(1)
摘要:Commands发出针对数据库的数据存储动作。例如,你可以执行一条命令插入或者删除数据。获取更多从数据库移动数据相关的信息,请参考“Update a Database from a DataSet”。Commands包含了对数据库发出的若干命令,而且在OleDbCommand情况下, 可以进行特定的数据存储. 例如,你可以执行存储过程调用的命令,又或许是一个“set quoted_identifier on”的命令。无论是何种命令,OleDbCommand还是SqlCommand可以被用于获取命令完成你的后端数据存储。使用传统的ADO,你可以通过Command对象,Connection对象,或 阅读全文
posted @ 2013-11-17 21:03 安布雷拉 阅读(3791) 评论(1) 推荐(1)
摘要:ADO.NET 概述ADO.NET是改进的ADO数据访问模型用于开发可扩展应用程序。他是专门为可伸缩性、无状态和XML核心的web而设计的。ADO.NET使用一些ADO对象,如Connection和Command对象,也引入了一些新对象。关键的新对象包括DataSet,DataReader,和DataAdapter。这种改进的ADO.NET和之前的数据架构的重要区别在于存在一个对象--DataSet对象--这是独立的不同于任何的数据存储。正因为如此,DataSet功能能够作为独立的实体。你可以将DataSet理解为总是断开连接对他包含的数据源和目标一无所知的记录集,在DataSet内部,就像一 阅读全文
posted @ 2013-11-17 15:44 安布雷拉 阅读(29151) 评论(1) 推荐(7)