`
ljzforever
  • 浏览: 117520 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

ado知识遗补

    博客分类:
  • ado
阅读更多
1.CommandBehavior类
这个类与Sqldataread相关,比如:
SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
这个rdr是一般是要返回外调用者,那他调用完后怎么去关闭数据库连接呢?如果象上面这样写,在调用者rdr.close()时会自动关闭数据库,省事省心啊

2.DataAdapter.TableMappings 属性
如果一个DataAdapter返回的是多个记录集,默认的情况下,Fill(DataSet ds)后ds中的第一个表名是Table,第二个表是Table1,第三个是Table2。如果用了TableMappings,那么这些Table,Table1,Table2就可以用TableMappings中指定的名称了。比如:
sqlAda = new SqlDataAdapter();
sqlAda.TableMappings.Add("Table", "orders");
sqlAda.TableMappings.Add("Table1", "employees");
...
ds = new DataSet();
sqlAda.Fill(ds);

这时ds.Tables[0].TableName为orders,ds.Tables[1].TableName为employees;这样就方便了按句子取一个表,比如DataTable orders=ds.Tables["orders"];
需要说明的是"Table","Table1"...是固定的名称,不可乱写哈!

3.SqlDataAdapter.Update方法
这里用的是ado.net的断开模式,就是说所有的数据更改在dataset中完成,然后一次性提交到数据库中
首先要这样做:
SqlConnection con = new SqlConnection(@"server=.\ljzforever;database=test;uid=sa;pwd=ljz");
SqlDataAdapter dap=new SqlDataAdapter("select * from a", con);SqlCommandBuilder scb = new SqlCommandBuilder(dap);
用SqlCommandBuilder将SqlDataAdapter打包一下,其实你提交回数据库的时候,本质提交的还是用Sql脚本,这个类的作用是对比dataset与数据库中的数据,当数据不一致的时候自动将改动的地方自动生成sql脚本提交,而不用自手动来写
dap.Fill(ds);
这样数据库进Dataset了
当dataset中的数据有更改时,比如加了一行
ds.Tables[0].Rows.Add("111", "zzz");
你需要把数据提交数据库,真正的增加一行,就要这样:
dap.Update(ds);
这行的意思是提交,这样,内存中改动的部份就真正反映到数据库中了

4.DataSet.AcceptChanges 方法与 SqlDataAdapter.Update
DataSet.AcceptChanges只是在内存在对数据向DataSet提交
SqlDataAdapter.Update才是真正将变化反映到数据库中了
Update要用在AcceptChanges之前,因为使用数据集的数据操作方式是断开与数据库连接的,也就是说只是在得到数据库数据的副本后立即断开了与数据库的连接。你无法保证你的数据是最新的(你不知道是否其他用户在你FILL后是否有修改了数据),所以update也不一定成功。即便成功了,你也没有刷新数据,你仍然不能得到最新的数据。如果你先acceptchange,那么这些行的状态就改变了,这样他们将不能得到更新,因为update方法是根据行的状态进行更新的。你在update成功后acceptchange只能保证你现有的能看到的数据是正确的(这也是暂时的和不确定的)。
所以:
当调用   Datatable.AcceptChanges后再调用Adapter.Update将不会有记录更新到服务器中的记录了,因为调用Datatable.AcceptChanges所有行DataRowState也会随之更改:所有状态为Added和Modified的行的状态都变为Unchanged;状态为Deleted的行则被移除
反过来如果Adapter.Update后如果不调用Datatable.AcceptChanges,那么所有行DataRowState不会有什么更改,下次如果再调用Adapter.Update还会有与上次Adapter.Update相同记录更新到数据库中。
Adapter.Update 会自动调用dataset的AcceptChanges
还有两个属性:
AcceptChangesDuringFill和
AcceptChangesDuringUpdate,这个属性默认值为true,就实现了上面所说的自动调用

5.DataSet.GetChange/DataTable.GetChange,DataSet.Merge/DataTable.Merge,DataTable.Select方法
GetChange()能从数据集中选择出与数据集初始状态发生了变化的数据行,返回一个数据子集,是跟据DataViewRowState来进行判断的
Merge()能将数据集合并,如果对象是DataTable/DataRow[],默认合并进DataSet.Table[0],如果对象是DataSet,则第0个合并进第0个,第1个合并进第1个,以此类推,它是跟据主键来判断与合并的
有个比较好的文章:
http://www.chinaitpower.com/A/2004-11-09/136465.html

Select()能从数据集中选择出特定的数据子集,结果是DataRow[],括号内参数与sql的where子句写法一样,如:DataTable.Select("id>5")

两篇比较好的文章:
http://blog.csdn.net/zhzuo/archive/2005/01/03/238273.aspx
http://blog.csdn.net/zhzuo/archive/2004/08/06/67037.aspx
分享到:
评论

相关推荐

    windows server 2008 ado 分页补丁

    windows server 2008 ado 分页补丁

    ADO Win7 64位补丁

    ADO程序在Win7下运行,报空指针错误时,需要安装KB983246补丁,但是只能找到32位的,如果是64位win7系统,可以安装这个补丁。

    ADO更新补丁KB983246

    ADO更新补丁主要修正以下两个问题。 1.在 64 位版本的 Office 2010 应用程序中运行 VBA 宏时,"类型不匹配"错误消息 2.Debug下能访问Access数据库,Release下在其它机器就出现访问数据库出错。

    ADO.NET主要知识点总结资料

    ADO.NET 主要知识点总结资料 本文对 ADO.NET 的主要知识点进行了总结,涵盖了连接、Command 对象、DataSet 和 DataReader 等方面的内容。 连接 ADO.NET 最大的特色就在于支持在断开连接的情况下对数据库里的内容...

    ADO相关知识归纳

    ### ADO相关知识归纳 #### 一、ADO概述 ADO(ActiveX Data Objects)是微软开发的一种用于数据库访问的技术,其设计目标是为了提供一个简单、高效且统一的接口,使得开发者能够轻松地与多种类型的数据库进行交互。...

    ODBC、ADO知识点及用法介绍

    ### ODBC、ADO知识点及用法介绍 #### 一、ADO (ActiveX Data Objects) 概述 **ADO**(ActiveX Data Objects)是一种用于访问数据的服务层接口,旨在简化和标准化应用程序对不同数据源的访问。ADO是在**OLE DB**...

    ADO.net所有知识点总结及用法

    ADO.NET是微软.NET框架下用于访问数据库的核心组件,它提供...以上就是ADO.NET的主要知识点和用法,掌握这些将有助于理解如何高效地访问和操作数据库。在实际开发中,还需要根据具体需求和场景灵活应用这些概念和技巧。

    ado.net相关知识

    ADO.NET是Microsoft开发的一种数据访问技术,主要用于与数据库进行交互,它是.NET框架的重要组成部分,尤其在C#编程中被广泛使用。ADO.NET提供了一种高效、灵活且安全的方式来处理SQL和其他类型的数据源。本篇文章将...

    dephi5的ado补丁

    dephi5的ado补丁

    ADO帮助文档--ADO帮助文档

    ADO帮助文档ADO帮助文档ADO帮助文档ADO帮助文档ADO帮助文档ADO帮助文档ADO帮助文档ADO帮助文档ADO帮助文档ADO帮助文档ADO帮助文档ADO帮助文档ADO帮助文档ADO帮助文档ADO帮助文档ADO帮助文档ADO帮助文档ADO帮助文档...

    [ADO]ADO 程序员参考.rar

    综上所述,"[ADO]ADO 程序员参考.rar"是一个针对ADO的开发指南,涵盖了ADO的核心概念、对象和编程实践,对于使用ADO进行数据库编程的开发者来说是一份宝贵的参考资料。通过阅读和实践其中的内容,开发者可以提升在...

    Win10ADO组件安装包

    在Windows 10 64位操作系统中,有时在尝试使用ActiveX Data Objects(简称ADO)来操作数据库...在处理这类问题时,了解ADO的工作原理和Windows系统组件的管理方法至关重要,对于开发者和系统管理员来说都是必备的知识。

    ADO全解,ADO全解

    **ADO(ActiveX Data Objects)全解** ADO是Microsoft开发的一种数据访问接口,它允许程序员通过编程语言与各种数据库进行交互。在Windows环境下,ADO广泛应用于VB、VC++、ASP等编程环境中,提供了简单而强大的数据...

    ado.h ado.cpp

    标题中的"ado.h"和"ado.cpp"是两个关键文件,它们涉及到使用ActiveX Data Objects (ADO)技术来链接和操作数据库。下面将详细讨论这两个文件以及ADO在数据库编程中的应用。 首先,"ado.h"是一个头文件,通常包含ADO...

    ado.net知识讲解

    关于ado.net开发的一些知识讲解

    ADO_QT_qtaccess_ADO_ACCESS数据库

    1. `adorecordset.cpp` 和 `adorecordset.h`: 这两个文件可能包含了对ADO的Recordset对象的封装,Recordset是ADO的一个核心组件,用于处理数据库中的记录集。 2. `adoconnection.cpp` 和 `adoconnection.h`: 这些...

    ADO 2[1].5 Microsoft ADO 2.5 程序员参考

    在《ADO 2.5 Microsoft ADO 2.5 程序员参考》中,读者可以找到以下关键知识点: 1. **ADO对象模型**:包括Connection(连接)、Command(命令)、Recordset(记录集)、Record(记录)、Fields(字段)等核心对象的...

    Win10版本的ADO组件包

    **知识点** 1. **ADO对象模型**:ADO提供了一套完整的对象,如Connection(连接对象)、Recordset(记录集对象)、Command(命令对象)和Parameter(参数对象),这些对象使得开发人员能够执行SQL查询、管理数据库...

    ADO与ADO_NET编程指南

    近几年来,ADO已经成为在基于Windows 的应用程序中执行数据访问的领先、优选的方法。今天,已经有大量的ADO应用程序付诸应用,许多开发人员已经对ADO开发非常熟练。随着Microsoft .NET Framework的引入,ADO.NET——...

    msado15各版本ADO

    标题"msado15各版本ADO"指的是Microsoft ActiveX Data Objects (ADO) 的一个特定版本,即msado15.dll。ADO是微软提供的一个接口,允许程序员通过编程语言与各种数据库进行交互,如访问数据、执行查询、更新记录等。...

Global site tag (gtag.js) - Google Analytics