广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C#数据适配器DataAdapter
  • 146
分享到

C#数据适配器DataAdapter

2024-04-02 19:04:59 146人浏览 薄情痞子
摘要

一、填充数据 DataSet ds = new DataSet(); sqlCommand cmd = new SqlCommand("select * from Cato

一、填充数据

DataSet ds = new DataSet();
sqlCommand cmd = new SqlCommand("select * from CatoGories;select * from Customers", conn);
SqlDataAdapter da = new SqlDataAdapter(cmd);//da可以多次使用于不同的SelectCommand.CommandText
DataTableMapping map = da.TableMappings.Add("Table", "Customer");//参数依次为,数据源中表,DataSet中的表
map.ColumnMappings.Add("Name", "CustomerName");
//da.MissingMappingAction= MissingMappingAction.Ignore;
da.MissingSchemaAction = MissingSchemaAction.AddWithKey;//用于处理模式冲突,默认为Add。
da.Fill(ds);//新增的DataTable表名默认为"Table",而后新增的表名默认为Table1,Table2等。
da.Fill(ds, "Customer");
da.Fill(ds, 0, 10000, "Customer");//用于分页填充
da.FillSchema(ds, System.Data.SchemaType.Source, "Customer");//仅仅填充模式信息

如果连接未打开,则会自动打开,Fill后自动关闭,如还需要使用此连接,需要重新打开。如果conn手工已打开,Fill后需要手动关闭连接。

二、将多个DataTable插入Tables集合

1、使用多个DataAdapter填充

SqlCommand cmd = new SqlCommand("select * from Catogories;s", conn);
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds, "Catogories");

cmd.CommandText = "select * from Customers";
SqlDataAdapter da2 = new SqlDataAdapter(cmd);
da2.Fill(ds, "Customer");

2、使用同一个DataAdapter,用不同的SelectCommandText填充

SqlCommand cmd = new SqlCommand("select * from Catogories;s", conn);
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds, "Catogories")

da.SelectCommand.CommandText = "select * from Customers";
da.Fill(ds, "Customer");

3、返回多个结果集的SQL(推荐)

SqlCommand cmd = new SqlCommand("select * from Catogories;select * from Customers", conn);
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);

三、使用DataAdapter更新数据

DataSet dsChanged = ds.GetChanges();
if (dsChanged != null)
{
    SqlCommandBuilder builder=new SqlCommandBuilder(da);
    //自动生成InsertCommand,UpdateCommand,DeleteCommand命令,前提是:Select语句为单表,同时此语句包含主键或唯一列
    da.Update(ds,"Author");//Update方法检测DataSet中的每条记录,如果行状态不为Unchanaged,根据其行状态调用不同的SQL语句。
    ds.AcceptChanges();
}
  • DataTable.AcceptChanges方法:提交自上次调用AcceptChanges以来对该表进行的所有更改。  
    所有Added和Modified行成为Unchanged;Deleted行被移除。  
  • DataTable.RejectChanges方法:回滚自该表加载以来或上次调用AcceptChanges以来对该表进行的所有更改。  
    Added被移除。DataRowState为Modified或Deleted的行返回到其初始状态。 

四、使用SQL

OleDbDataAdapter da = new OleDbDataAdapter();
OleDbCommand cmd = new OleDbCommand("insert into  [A_Emp_Dept_20190522](empname,line) values (?,?)", conn);
cmd.Parameters.Add(new OleDbParameter("empname", OleDbType.Char, 11, ParameterDirection.Input, false, 0, 0, "empname", DataRowVersion.Current, null));
cmd.Parameters.Add(new OleDbParameter("line", OleDbType.Char, 11, ParameterDirection.Input, false, 0, 0, "line", DataRowVersion.Current, null));
da.InsertCommand = cmd;
//da.InsertCommand.UpdatedRowSource= UpdateRowSource.Both;
DataSet ds = new DataSet();
DataRow row = ds.Tables[0].NewRow();
row["empname"] = "222";
row["line"] = "FBd";
ds.Tables[0].Rows.Add(row);
da.Update(ds);

UpdatedRowSource

  • Both:输出参数和返回的结果集的第一行都可以映射到 DataSet 中已更改的行。
    FirstReturnedRecord:只有返回的结果集的第一行中的数据才可以映射到 DataSet 中已更改的行。
    None:忽略任何输出参数或返回的结果集中的行。
    OutputParameters:只有输出参数才可以映射到 DataSet 中已更改的行

五、DataAdapter事件

  • RowUpdating:在对数据源执行命令前的 Update(DataSet) 过程中发生。
  • RowUpdated:在对数据源执行命令后的 Update(DataSet) 过程中发生。

SqlRowUpdatedEventArgs 类属性

  • Command:获取或设置当调用 SqlCommand 时执行的 Update(DataSet)。
  • Errors:获取当 Command 执行时 .net Framework 数据提供程序生成的任何错误。 
  • RecordsAffected:通过执行 SQL 语句获取更改、插入或删除的行数。 
  • Row:获取通过 Update(DataSet) 发送的 DataRow。 
  • RowCount:获取在一批更新记录中处理的行数。 
  • StatementType:获取所执行的 SQL 语句的类型。 
  • Status:获取 Command 属性的 UpdateStatus。 
  • TableMapping:获取通过 Update(DataSet) 发送的 DataTableMapping。

到此这篇关于C#数据适配器DataAdapter的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: C#数据适配器DataAdapter

本文链接: https://www.lsjlt.com/news/148563.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C#数据适配器DataAdapter
    一、填充数据 DataSet ds = new DataSet(); SqlCommand cmd = new SqlCommand("select * from Cato...
    99+
    2022-11-13
  • C++ 容器适配器priority_queue怎么用
    这篇文章给大家分享的是有关C++ 容器适配器priority_queue怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。优先级队列(Priority Queue)队列是一种特征为FIFO的数据结构,每次从队列...
    99+
    2023-06-14
  • C#适配器模式的使用
    目录前言适配器模式前言 我昨天做了个梦,我梦见我在一条路走,走的时候经过一个房间,里面关着一条边牧和鸡和猪,后来我醒了,我知道那只边牧就是小叶子(哈仔十一的边牧),小叶子具备牧羊和牧...
    99+
    2022-11-13
  • C++ STL中的容器适配器实现
    1 stack 1.1 stack 介绍  stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。 ...
    99+
    2022-11-12
  • C++ STL容器适配器使用指南
    目录适配器stack容器适配器✒️stack的介绍✏️stack的使用✏️stack的模拟实现queue✒️queue的介绍✏️queue的使用✏️queue的模拟实现deque容器...
    99+
    2022-11-12
  • C++容器适配器的概念与示例
    目录一. 什么是适配器与容器适配器二. 理解容器适配器stack的模拟实现queue的模拟实现一. 什么是适配器与容器适配器 适配器是一种设计模式(设计模式是一套被反复使用的,多数人...
    99+
    2023-01-14
    C++容器适配器 C++适配器
  • C++ STL中容器适配器怎么实现
    这篇文章给大家分享的是有关C++ STL中容器适配器怎么实现的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1 stack1.1 stack 介绍 stack是一种容器适配器,专门用在具有后进先出操作的上...
    99+
    2023-06-14
  • 深入探究C++中的容器适配器与仿函数技术
    目录一、容器适配器二、仿函数一、容器适配器 容器适配器其实是一种设计模式。转换出我们想要的东西。 比方说我们实现栈的时候既可以用数组,也可以用链表,此时我们就可以用到容器适配器了。 ...
    99+
    2023-05-17
    C++容器适配器 C++仿函数
  • C#如何解析适配器设计模式
    这篇文章将为大家详细讲解有关C#如何解析适配器设计模式,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。今天看到一个园子里的朋友写了一篇ASP.NET的适配器设计模式的文章。其中提到了把输入的电...
    99+
    2023-06-17
  • C++:函数对象,STL提供的函数对象,函数适配器详解
    目录1 函数对象2 STL提供的函数对象3 函数适配器总结1 函数对象 1.函数对象是行为类似函数的对象。一个类对象,表现出一个函数的特征,即通过对象名+(参数列表)的方式使用一个类...
    99+
    2022-11-12
  • ccflow是如何适配数据库的
    ccflow是一个基于.NET平台开发的工作流引擎,它提供了一套灵活的API和类库,可以方便地与数据库进行适配。在ccflow中,流...
    99+
    2023-09-08
    ccflow
  • 【DM】达梦数据库与MySQL适配
    一、达梦入门技术文档 新手直接看达梦入门技术文档即可 二、达梦数据库 1、介绍 达梦数据库管理系统是达梦公司推出的具有完全自主知识产权的高性能数据库管理系统,简称DM,它具有如下特点:通用性、高性能、高可用、跨平台、高可扩展 2、与...
    99+
    2023-08-18
    数据库 mysql sql
  • C++ 容器适配器priority_queue的使用及实现代码
    优先级队列(Priority Queue) 队列是一种特征为FIFO的数据结构,每次从队列中取出的是最早加入队列中的元素。但是,许多应用需要另一种队列,每次从队列中取出的应是具有最...
    99+
    2022-11-12
  • C#适配器模式与装饰器模式如何实现
    本篇内容介绍了“C#适配器模式与装饰器模式如何实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!结构型设计模式创建型设计模式主要是为了解决创...
    99+
    2023-06-30
  • Android中 自定义数据绑定适配器BaseAdapter的方法
    代码如下:public class PersonAdapter extends BaseAdapter { private List persons;// 要绑定的...
    99+
    2022-06-06
    自定义 方法 数据绑定 数据 baseadapter Android
  • 亚马逊数据库服务器配置要求多少合适
    机房环境要求:需要考虑服务器所处的机房环境,比如是在国内还是国外,需要考虑网络连接、电源供应等方面的要求。 硬件配置:需要考虑服务器所使用的硬件配置,比如CPU、内存、存储、网络等,需要考虑服务器的硬件配置是否符合业务需求。 应用程序要求...
    99+
    2023-10-27
    亚马逊 服务器配置 合适
  • 使用C++实现适配器类要注意什么问题
    本文小编为大家详细介绍“使用C++实现适配器类要注意什么问题”,内容详细,步骤清晰,细节处理妥当,希望这篇“使用C++实现适配器类要注意什么问题”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。实现尽管Adapter...
    99+
    2023-06-19
  • Android自定义viewgroup 使用adapter适配数据(6)
    在自定义viewgroup(5)://www.jb51.net/article/100639.htm的基础上,添加使用adapter来适配数据,这样更加的方便,这里只是使用ad...
    99+
    2022-06-06
    数据 adapter Android
  • C#简单配置类及数据绑定
    目录1、简介2、配置基类3、派生配置类4、数据绑定4.1 Winform中的数据绑定4.2 WPF下的数据绑定1、简介 本文实现一个简单的配置类,原理比较简单,适用于一些小型项目。主...
    99+
    2022-11-12
  • 记录一次mysql项目适配达梦数据库
    前段时间做过mysql的项目适配达梦数据库,记录一下遇到的主要问题 一、配置修改 1.达梦数据库驱动 com.dameng DmJdbcDriver18 ...
    99+
    2023-08-17
    数据库 mysql mybatis
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作