SqlDataAdapter属性.ppt

上传人:s****8 文档编号:69350526 上传时间:2023-01-02 格式:PPT 页数:40 大小:223KB
返回 下载 相关 举报
SqlDataAdapter属性.ppt_第1页
第1页 / 共40页
SqlDataAdapter属性.ppt_第2页
第2页 / 共40页
点击查看更多>>
资源描述

《SqlDataAdapter属性.ppt》由会员分享,可在线阅读,更多相关《SqlDataAdapter属性.ppt(40页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、数据适配器SqlDataAdapter类表示用于填充DataSet和更新SQLServer数据库的一组数据命令和一个数据库连接。不能继承此类。命名空间System.Data.SqlClient.SqlDataAdapterSqlDataAdapter是DataSet和SQLServer之间的桥接器,用于检索和保存数据。SqlDataAdapter通过对数据源使用适当的Transact-SQL语句映射Fill(它可更改DataSet中的数据以匹配数据源中的数据)和Update(它可更改数据源中的数据以匹配DataSet中的数据)来提供这一桥接。例:SqlConnectionconn=newSql

2、Connection(connection);SqlDataAdapteradapter=newSqlDataAdapter();adapter.SelectCommand=newSqlCommand(query,conn);DataSetdataset;adapter.Fill(dataset);数据适配器SqlDataAdapter类当SqlDataAdapter填充DataSet时,它将为返回的数据创建必要的表和列(如果它们尚不存在)。但是,除非MissingSchemaAction属性设置为AddWithKey,否则这个隐式创建的架构中就将不包括主键信息。也可以在使用FillSchem

3、a为数据集填充数据前,让SqlDataAdapter创建DataSet的架构(包括主键信息)。SqlDataAdapter与SqlConnection和SqlCommand一起使用,以便在连接到MicrosoftSQLServer数据库时提高性能。SqlDataAdapter还包括SelectCommand、InsertCommand、DeleteCommand、UpdateCommand和TableMappings属性,使数据的加载和更新更加方便。当创建SqlDataAdapter的实例时,读/写属性将被设置为初始值。有关这些值的列表,参见SqlDataAdapter构造函数。SqlData

4、Adapter构造函数publicSqlDataAdapter();例:SqlConnectionnwindConn=newSqlConnection(DataSource=localhost;IntegratedSecurity=SSPI;InitialCatalog=northwind);SqlDataAdaptercustDA=newSqlDataAdapter();custDA.MissingSchemaAction=MissingSchemaAction.AddWithKey;SqlDataAdapter构造函数publicSqlDataAdapter(SqlCommand):将指定

5、的SqlCommand作为SelectCommand属性,初始化SqlDataAdapter类的新实例例:SqlConnectionnwindConn=newSqlConnection(DataSource=localhost;IntegratedSecurity=SSPI;InitialCatalog=northwind);SqlCommandselectCMD=newSqlCommand(SELECTCustomerID,CompanyNameFROMCustomers,nwindConn);SqlDataAdaptercustDA=newSqlDataAdapter(selectCMD)

6、;custDA.MissingSchemaAction=MissingSchemaAction.AddWithKey;SqlDataAdapter构造函数publicSqlDataAdapter(string,SqlConnection):使用SelectCommand和SqlConnection对象初始化SqlDataAdapter类的新实例例:SqlConnectioncustConn=newSqlConnection(DataSource=localhost;IntegratedSecurity=SSPI;InitialCatalog=northwind);SqlDataAdapterc

7、ustDA=newSqlDataAdapter(SELECTCustomerID,CompanyNameFROMCustomers,custConn);custDA.MissingSchemaAction=MissingSchemaAction.AddWithKey;SqlDataAdapter构造函数publicSqlDataAdapter(string,string):用SelectCommand和一个连接字符串初始化SqlDataAdapter类的新实例例:SqlDataAdaptercustDA=newSqlDataAdapter(SELECTCustomerID,CompanyNam

8、eFROMCustomers,DataSource=localhost;IntegratedSecurity=SSPI;InitialCatalog=northwind);SqlConnectioncustConn=custDA.SelectCommand.Connection;custDA.MissingSchemaAction=MissingSchemaAction.AddWithKey;SqlDataAdapter属性当创建SqlDataAdapter的实例时,下面的读/写属性将设置为以下初始值PropertiesMissingMappingAction确定传入数据没有匹配的表或列时需要

9、执行的操作值:Passthrough创建源列或源表,并使用其原始名称将其添加到DataSet(初始值)Error如果缺少指定的列映射,则生成InvalidOperationExceptionIgnore忽略没有映射的列或表。返回空引用(VisualBasic中为Nothing)。MissingSchemaAction确定现有DataSet架构与传入数据不匹配时需要执行的操作值:MissingSchemaAction.Add添加必需的列以完成架构(初始值)AddWithKey添加必需的列和主键信息以完成架构Error如果缺少指定的列映射,则生成InvalidOperationExceptionI

10、gnore忽略额外列可以通过单独调用属性来更改任何这些属性的值SqlDataAdapter属性AcceptChangesDuringFill(从DataAdapter继承)获取或设置一个值,该值指示在任何Fill操作过程中,在将AcceptChanges添加到DataTable之后是否针对DataRow调用它,如果在DataRow上调用AcceptChanges,则为true;否则为false。默认值为trueContainer(从Component继承)获取IContainer,它包含Component。如果Component未在IContainer中封装,则该值为空引用。IContaine

11、r提供容器的功能。容器是在逻辑上包含零个或更多个组件的对象。容器是封装和跟踪零个或更多个组件的对象。在此上下文中,包容是指逻辑包容,而不是直观包容。可以在多种方案下使用组件和容器,包括可视化方案和非可视化方案。对实施者的说明对实施者的说明:要成为容器,类必须实现IContainer接口,该接口支持添加、移除和检索组件的方法SqlDataAdapter属性TableMappings(从DataAdapter继承)获取一个集合,它提供源表和DataTable之间的主映射,默认值是一个空集合。当协调更改时,DataAdapter使用DataTableMappingCollection集合将数据源使用

12、的列名与DataSet使用的列名关联起来publicvoidShowTableMappings()/./createmyDataAdapter/.myDataAdapter.TableMappings.Add(Categories,DataCategories);myDataAdapter.TableMappings.Add(Orders,DataOrders);myDataAdapter.TableMappings.Add(Products,DataProducts);stringmyMessage=TableMappings:n;for(inti=0;imyDataAdapter.Tabl

13、eMappings.Count;i+)myMessage+=i.ToString()+myDataAdapter.TableMappingsi.ToString()+n;MessageBox.Show(myMessage);DataTable 和 DataColumn 映射DataAdapter在其TableMappings属性中包含零个或更多个DataTableMapping对象的集合。DataTableMapping提供对数据源的查询所返回的数据与DataTable之间的主映射。DataTableMapping名称可以代替DataTable名称传递到DataAdapter的Fill方法。以

14、下示例为MyAuthors表创建名为AuthorsMapping的DataTableMapping。workAdapter.TableMappings.Add(AuthorsMapping,MyAuthors);DataTableMapping使得能够使用DataTable中与数据库中的列名不同的列名。当该表被更新时,DataAdapter将使用此映射来匹配列。如果在调用DataAdapter的Fill或Update方法时未指定TableName或DataTableMapping名称,DataAdapter将查找名为“Table”的DataTableMapping。如果DataTableMap

15、ping不存在,DataTable的TableName将为“Table”。可以通过创建名为“Table”的DataTableMapping来指定默认的DataTableMapping。DataTable 和 DataColumn 映射以下代码示例创建一个DataTableMapping(从System.Data.Common命名空间)并通过将其命名为“Table”来使其成为指定DataAdapter的默认映射。然后,该示例将查询结果中第一个表(Northwind数据库的Customers表)中的列映射到DataSet的NorthwindCustomers表中的一组更为用户友好的名称。对于未映射

16、的列,将使用数据源中的列名称。DataTableMapping custMap=custDA.TableMappings.Add(Table,NorthwindCustomers);custMap.ColumnMappings.Add(CompanyName,Company);custMap.ColumnMappings.Add(ContactName,Contact);custMap.ColumnMappings.Add(PostalCode,ZIPCode);custDA.Fill(custDS);在更为复杂的情况下,可能会决定需要使用相同的DataAdapter来支持为不同的表加载不同的

17、映射。若要完成此任务,只需添加附加的DataTableMapping对象。DataTable 和 DataColumn 映射当Fill方法以DataSet实例和DataTableMapping名称的形式进行传递时,如果存在具有该名称的映射,则使用该映射;否则将使用具有该名称的DataTable。以下示例创建一个名称为Customers而DataTable名称为BizTalkSchema的DataTableMapping。然后,该示例将SELECT语句所返回的行映射到BizTalkSchemaDataTable。ITableMappingbizMap=custDA.TableMappings.A

18、dd(Customers,BizTalkSchema);bizMap.ColumnMappings.Add(CustomerID,ClientID);bizMap.ColumnMappings.Add(CompanyName,ClientName);bizMap.ColumnMappings.Add(ContactName,Contact);bizMap.ColumnMappings.Add(PostalCode,ZIP);custDA.Fill(custDS,Customers);注意:注意:如果没有为列映射提供源列名称或者没有为表映射提供源表名称,则将自动生成默认名称。如果没有为列映射提供

19、源列,则将给列映射提供递增的默认名称SourceColumnN,这些名称从“SourceColumn1”开始。如果没有为表映射提供源表名称,则将给该表映射提供递增的默认名称SourceTableN,这些名称从“SourceTable1”开始。建议在为列映射提供源列名称时避免使用“SourceColumnN”命名约定,在为表映射提供源表名称时避免使用“SourceTableN”命名约定,因为所提供的名称可能会与ColumnMappingCollection中现有的默认列映射名称或DataTableMappingCollection中的表映射名称发生冲突。如果提供的名称已经存在,将引发异常。Dat

20、aTable 和 DataColumn 映射多个结果集:如果SelectCommand返回多个表,Fill将自动使用递增值为DataSet中的表生成表名称,这些表名称从指定表名称开始,并以TableNameN格式(从“TableName1”开始)继续。可以使用表映射将自动生成的表名称映射到要为DataSet中的表指定的名称。例如,对于返回两个表(Customers和Orders)的SelectCommand,可对Fill发出以下调用。custDA.Fill(custDS,Customers)在DataSet中创建了两个表:Customers和Customers1。可以使用表映射来确保第二个表名

21、为Orders而不是Customers1。若要完成此任务,请将Customers1的源表映射到DataSet表Orders,如以下示例所示。custDA.TableMappings.Add(Customers1,Orders)custDA.Fill(custDS,Customers)SqlDataAdapter属性SelectCommand获取或设置一个Transact-SQL语句或存储过程,用于在数据源中选择记录。下面的实例将创建一个SqlDataAdapter并设置SelectCommand属性。假定已经创建一个SqlConnection对象publicstaticSqlDataAdapt

22、erCreateCustomerAdapter(SqlConnectionconn)SqlDataAdapterda=newSqlDataAdapter();SqlCommandcmd;/CreatetheSelectCommand.cmd=newSqlCommand(SELECT*FROMCustomers+WHERECountry=CountryANDCity=City,conn);cmd.Parameters.Add(Country,SqlDbType.NVarChar,15);cmd.Parameters.Add(City,SqlDbType.NVarChar,15);da.Selec

23、tCommand=cmd;returnda;SqlDataAdapter属性DeleteCommand获取或设置一个Transact-SQL语句或存储过程,以从数据集删除记录。在Update过程中,如果未设置此属性而且DataSet中存在主键信息,则在设置SelectCommand属性并使用SqlCommandBuilder的情况下,可以自动生成DeleteCommand。面的实例创建一个SqlDataAdapter并设置DeleteCommand属性。假定已经创建一个SqlConnection对象publicstaticSqlDataAdapterCreateCustomerAdapter(

24、SqlConnectionconn)SqlDataAdapterda=newSqlDataAdapter();SqlCommandcmd;SqlParameterparm;/CreatetheDeleteCommand.cmd=newSqlCommand(DELETEFROMCustomersWHERECustomerID=CustomerID,conn);parm=cmd.Parameters.Add(CustomerID,SqlDbType.NChar,5,CustomerID);parm.SourceVersion=DataRowVersion.Original;da.DeleteCom

25、mand=cmd;returnda;SqlDataAdapter属性InsertCommand获取或设置一个Transact-SQL语句或存储过程,以在数据源中插入新记录。在Update过程中,如果未设置此属性而且DataSet中包含主键信息,则在设置SelectCommand属性并使用SqlCommandBuilder的情况下,可以自动生成InsertCommand。下面的实例将创建一个SqlDataAdapter并设置SelectCommand和InsertCommand属性。假定已经创建一个SqlConnection对象publicstaticSqlDataAdapterCreateCu

26、stomerAdapter(SqlConnectionconn)SqlDataAdapterda=newSqlDataAdapter();SqlCommandcmd;/CreatetheInsertCommand.cmd=newSqlCommand(INSERTINTOCustomers(CustomerID,CompanyName)+VALUES(CustomerID,CompanyName),conn);cmd.Parameters.Add(CustomerID,SqlDbType.NChar,5,CustomerID);cmd.Parameters.Add(CompanyName,Sql

27、DbType.NVarChar,40,CompanyName);da.InsertCommand=cmd;returnda;SqlDataAdapter属性UpdateCommand获取或设置一个Transact-SQL语句或存储过程,用于更新数据源中的记录。在Update过程中,如果未设置此属性而且DataSet中包含主键信息,则在设置SelectCommand属性并使用SqlCommandBuilder的情况下,可以自动生成UpdateCommand。然后,SqlCommandBuilder将生成其他所有未设置的命令。此生成逻辑要求DataSet中存在键列信息。如果执行此命令返回行,更新的

28、行可能会合并到DataSet中,具体取决于如何设置SqlCommand对象的UpdatedRowSource属性下面的实例将创建一个SqlDataAdapter并设置UpdateCommand属性。假定已经创建一个SqlConnection对象publicstaticSqlDataAdapterCreateCustomerAdapter(SqlConnectionconn)SqlDataAdapterda=newSqlDataAdapter();SqlCommandcmd;SqlParameterparm;/CreatetheUpdateCommand.cmd=newSqlCommand(UP

29、DATECustomersSETCustomerID=CustomerID,CompanyName=CompanyName+WHERECustomerID=oldCustomerID,conn);cmd.Parameters.Add(CustomerID,SqlDbType.NChar,5,CustomerID);cmd.Parameters.Add(CompanyName,SqlDbType.NVarChar,40,CompanyName);parm=cmd.Parameters.Add(oldCustomerID,SqlDbType.NChar,5,CustomerID);parm.Sou

30、rceVersion=DataRowVersion.Original;da.UpdateCommand=cmd;returnda;SqlDataAdapter属性UpdatedRowSource属性1.Both将输出参数和第一个返回行都映射到DataSet中的已更改的行2.FirstReturnedRecord将第一个返回行中的数据映射到DataSet中的已更改的行3.None忽略任何返回的参数或行4.OutputParameters将输出参数映射到DataSet中的已更改的行创建SqlDataAdapter实例publicstaticvoidCreateSqlDataAdapter()Sql

31、DataAdaptercustDA=newSqlDataAdapter(SELECTCustomerID,CompanyNameFROMCustomers,DataSource=localhost;IntegratedSecurity=SSPI;InitialCatalog=northwind);SqlConnectioncustConn=custDA.SelectCommand.Connection;custDA.MissingSchemaAction=MissingSchemaAction.AddWithKey;custDA.InsertCommand=newSqlCommand(INSE

32、RTINTOCustomers(CustomerID,CompanyName)+VALUES(CustomerID,CompanyName),custConn);custDA.UpdateCommand=newSqlCommand(UPDATECustomersSETCustomerID=CustomerID,CompanyName=CompanyName+WHERECustomerID=oldCustomerID,custConn);custDA.DeleteCommand=newSqlCommand(DELETEFROMCustomersWHERECustomerID=CustomerID

33、,custConn);custDA.InsertCommand.Parameters.Add(CustomerID,SqlDbType.Char,5,CustomerID);custDA.InsertCommand.Parameters.Add(CompanyName,SqlDbType.VarChar,40,CompanyName);custDA.UpdateCommand.Parameters.Add(CustomerID,SqlDbType.Char,5,CustomerID);custDA.UpdateCommand.Parameters.Add(CompanyName,SqlDbTy

34、pe.VarChar,40,CompanyName);custDA.UpdateCommand.Parameters.Add(oldCustomerID,SqlDbType.Char,5,CustomerID).SourceVersion=DataRowVersion.Original;custDA.DeleteCommand.Parameters.Add(CustomerID,SqlDbType.Char,5,CustomerID).SourceVersion=DataRowVersion.Original;SqlDataAdapter方法fillFill方法在方法在DataSet中添加或刷

35、新行以匹配数据源中的行中添加或刷新行以匹配数据源中的行Fill方法使用方法使用SELECT语句从数据源中检索数据。与语句从数据源中检索数据。与Select命令关联的命令关联的IDbConnection对象必须有效,但不需要将其打开。如果调用对象必须有效,但不需要将其打开。如果调用Fill之前之前IDbConnection已关闭,则将其打开以检索数据,然后再将其关闭。如果调用已关闭,则将其打开以检索数据,然后再将其关闭。如果调用Fill之前连接已打开,它将保持打开状态。之前连接已打开,它将保持打开状态。如果在填充数据集时遇到错误,则错误发生之前添加的行将保留在数据集中。操如果在填充数据集时遇到错

36、误,则错误发生之前添加的行将保留在数据集中。操作的剩余部分被中止。作的剩余部分被中止。如果命令不返回任何行,则不向如果命令不返回任何行,则不向DataSet中添加表,并且不引发异常。中添加表,并且不引发异常。如果如果DbDataAdapter对象在填充对象在填充DataTable时遇到重复列,它将以时遇到重复列,它将以“columnname1”、“columnname2”、“columnname3”这种模式命名后面的列。这种模式命名后面的列。如果传入数据包含未命名的列,它们将按如果传入数据包含未命名的列,它们将按“Column1”、“Column2”的模式放在的模式放在DataSet中。中。当

37、指定的查询返回多项结果时,每个返回查询的行的结果集都放置在单独的表中。当指定的查询返回多项结果时,每个返回查询的行的结果集都放置在单独的表中。将整数值追加到指定的表名从而对其他结果集进行命名(例如将整数值追加到指定的表名从而对其他结果集进行命名(例如“Table”、“Table1”、“Table2”等)。如果某个查询不返回行,则不会为该查询创建表。等)。如果某个查询不返回行,则不会为该查询创建表。因此,如果先处理一个插入查询,然后再处理一个选择查询,那么由于为选择查因此,如果先处理一个插入查询,然后再处理一个选择查询,那么由于为选择查询创建的表是第一个表,所以该表将被命名为询创建的表是第一个表

38、,所以该表将被命名为“Table”。在应用程序中使用列在应用程序中使用列名和表名时应小心,一定不要与这些命名模式发生冲突。名和表名时应小心,一定不要与这些命名模式发生冲突。SqlDataAdapter方法fill当用于填充当用于填充DataSet的的SELECT语句(例如批处理语句(例如批处理SQL语句)返回多项结果时,语句)返回多项结果时,如果其中一项结果包含错误,则将跳过所有后面的结果并且不将其添加到如果其中一项结果包含错误,则将跳过所有后面的结果并且不将其添加到DataSet中。中。当使用后面的当使用后面的Fill调用来刷新调用来刷新DataSet的内容时,必须满足以下两个条件:的内容时

39、,必须满足以下两个条件:1.该该SQL语句应该与最初用来填充语句应该与最初用来填充DataSet的语句匹配。的语句匹配。2.必须存在键列信息。必须存在键列信息。如果主键信息存在,则协调任何重复的行,并且这些重复行将只在与如果主键信息存在,则协调任何重复的行,并且这些重复行将只在与DataSet对应对应的的DataTable中出现一次。可以通过中出现一次。可以通过FillSchema(通过指定通过指定DataTable的的PrimaryKey属性),或者通过将属性),或者通过将MissingSchemaAction属性设置为属性设置为AddWithKey来设置主键信息。来设置主键信息。如果如果S

40、electCommand返回返回OUTERJOIN的结果,则的结果,则DataAdapter不为生成的不为生成的DataTable设置设置PrimaryKey值。必须显式定义主键,确保正确地解析重复行。值。必须显式定义主键,确保正确地解析重复行。注意注意当处理返回多项结果的批处理当处理返回多项结果的批处理SQL语句时,用于语句时,用于OLEDB的的.NETFramework数据提供程序的数据提供程序的FillSchema的实现只为第一项结果检索架构信息。若的实现只为第一项结果检索架构信息。若要为多项结果检索架构信息,请使用要为多项结果检索架构信息,请使用MissingSchemaAction设

41、置为设置为AddWithKey的的Fill。在DataSet中添加或刷新行以匹配使用DataSet和DataTable名称的数据源中的行publicvoidGetMyRecords()/./createmyDataSetandmyDataAdapter/.myDataAdapter.Fill(myDataSet,Categories);Fill方法支持以下情况:DataSet包含多个DataTable对象,而这些对象的名称只有大小写不同。在这种情况下,Fill执行区分大小写的比较以查找相应的表,如果不存在完全匹配的表,则新建一个。下面的C#代码阐释该行为。DataSetdataset=newD

42、ataSet();dataset.Tables.Add(aaa);dataset.Tables.Add(AAA);adapter.Fill(dataset,aaa);/Fillsaaa,whichalreadyexistsintheDataSet.adapter.Fill(dataset,Aaa);/AddsanewtablecalledAaa.如果调用Fill并且DataSet只包含一个其名称只有大小写不同的DataTable,则更新该DataTable。在这种情况下,比较不区分大小写。下面的C#代码阐释该行为。DataSetdataset=newDataSet();dataset.Tabl

43、es.Add(aaa);adapter.Fill(dataset,AAA);/FillstableaaabecauseonlyonesimilarlynamedtableisintheDataSet.在DataSet的指定范围中添加或刷新行以匹配使用DataSet和DataTable名称的数据源中的行publicintFill(DataSet,int,int,string);publicintFill(DataSetdataSet,intstartRecord,intmaxRecords,stringsrcTable);参数dataSet要用记录和架构(如果必要)填充的DataSet。star

44、tRecord从其开始的从零开始的记录号。maxRecords要检索的最大记录数。srcTable用于表映射的源表的名称。下面的示例利用categories表中从第10行开始的15行数据来填充DataSet。publicvoidGetMyRecords()/./createmyDataSetandmyDataAdapter/.myDataAdapter.Fill(myDataSet,9,15,Categories);SqlDataAdapter方法Update方法为指定的DataRow对象数组中每个已插入、已更新或已删除的行调用相应的INSERT、UPDATE或DELETE语句当应用程序调用U

45、pdate方法时,DbDataAdapter根据DataSet中配置的索引顺序为每一行检查RowState属性,并迭代执行所需的INSERT、UPDATE或DELETE语句。例如,由于DataTable中行的排序,Update可能先执行一个DELETE语句,接着执行一个INSERT语句,然后再执行另一个DELETE语句。应注意,这些语句不是作为批处理进程执行的;每一行都是单独更新的。在必须控制语句类型顺序的情况下(例如,INSERT在UPDATE之前),应用程序可以调用GetChanges方法。有关更多信息,请参见使用DataAdapter和DataSet更新数据库。如果未指定INSERT、U

46、PDATE或DELETE语句,Update方法会生成异常。但是,如果设置.NETFramework数据提供程序的SelectCommand属性,则可以创建SqlCommandBuilder或OleDbCommandBuilder对象来为单个表更新自动生成SQL语句。然后,CommandBuilder将生成其他任何未设置的SQL语句。此生成逻辑要求DataSet中存在键列信息。有关更多信息,请参见自动生成的命令。Update方法在执行更新之前从第一个映射列出的表中检索行。然后,Update使用UpdatedRowSource属性的值刷新该行。忽略返回的任何其他行。在将任何数据加载回DataSet

47、之后,将引发OnRowUpdated事件,从而允许用户检查经协调的DataSet行以及该命令返回的任何输出参数。在对一行成功进行更新之后,将接受对该行的更改SqlDataAdapter方法Update方法当使用Update时,执行的顺序如下:1.将DataRow中的值移至参数值。2.引发OnRowUpdating事件。3.执行命令。4.如果该命令设置为FirstReturnedRecord,返回的第一项结果将放置在DataRow中。5.如果存在输出参数,它们将被放在DataRow中。6.引发OnRowUpdated事件。7.调用AcceptChanges。与DbDataAdapter关联的每个

48、命令通常都有一个与其关联的参数集合。参数通过.NETFramework数据提供程序的Parameter类的SourceColumn和SourceVersion属性映射到当前行。SourceColumn引用DataTable列,而DbDataAdapter引用该列来获取当前行的参数值SqlDataAdapter方法Update方法SourceColumn属性还用于将输出或输入/输出参数的值映射回DataSet。如果它引用一个不存在的列,则会生成异常。.NETFramework数据提供程序的Parameter类的SourceVersion属性确定使用列值的哪个版本:Original、Current

49、还是Proposed。该功能通常用于在UPDATE语句的WHERE子句中包含初始值,以检查开放式并发冲突。注意注意如果在更新行时出错,则会引发异常并停止执行更新。若要在遇到错误时继续更新操作而不生成异常,请在调用Update之前将ContinueUpdateOnError属性设置为true。您还可以在SqlDataAdapter或OleDbDataAdapter的RowUpdated事件中逐行对错误作出响应。若要在RowUpdated事件中继续更新操作而不生成异常,请将RowUpdatedEventArgs的Status属性设置为Continue。Update方法程序实例为指定的DataRow

50、对象数组中每个已插入、已更新或已删除的行调用相应的INSERT、UPDATE或DELETE语句publicDataSetCreateCmdsAndUpdate(DataSetmyDataSet,stringmyConnection,stringmySelectQuery,stringmyTableName)OleDbConnectionmyConn=newOleDbConnection(myConnection);OleDbDataAdaptermyDataAdapter=newOleDbDataAdapter();myDataAdapter.SelectCommand=newOleDbCom

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com