01  DataAdapter 对象概述

DataAdapter 对象是一个数据适配器对象,是DataSet 与数据源之间的桥梁。DataAdapter 对像提供了 4 个属性,用于实现与数据源之间的互通。

   SelectCommand 属性:向数据库发送查询 SQL 语句。

   DeleteCommand 属性:向数据库发送删除 SQL语句。

   InsertCommand 属性:向数据库发送插入 SQL 语句。

   UpdateCommand 属性:向数据库发送更新 SQL 语句。

在对数据库进行操作时,只要将这 4 个属性设置成相应的 SQL语向即可。DataAdapter 对象中还有几个主要的方法,具体如下。

(1) Fill 方法用数据填充 DataSet。

语法如下:

public int Fil(DataSet dataSet,string sreTable)

   dataSet:要用记录和架构(如果必要)填充的 DataSet。

   srcTable:用于表映射的源表的名称。

   返回值:已在 DataSet 中成功添加或刷新的行数,这不包括受不返回行的语句影响的行。

   说明

当创建 DataAdapter 的实例时,将其读/写属性设置为初始值、MissingMappingAction 属性设置为 MissingMappingAction.Passthrough,MissingSchemaActicn 属性设置为 MissingSchemaAction.Add。

(2)Update 方法更新数据库时,DataAdapter 将调用 DeleteCommand、InsertCommand 以及 UpdateCommand 属性。

语法如下:

public int Update(DataTable dataTable)

   dataTable:用于更新数据源的 DataTable。

   返回值:DataSet 中成功更新的行数。

例如,如果使用 DataAdapter 对象的 Fill 方法从数据源中提取数据并填充到 DataSet 时,就会用到 SelectCommand 属性中设置的命令对象。

02  填充 DataSet 数据集

通过 DataAdapter 对象的 Fill 方法填充 DataSet 数据集,Fill 方法使用 Select 语句从数据源中检索数据。与 Select 命令关联的 Connection 对象必须有效,但不需要将其打开。

注意

DataSet 和 DataTable 对象从 MarshalByValueComponent(实现 IComponent 并提供可选程控制的组件的基实现)继承而来,并支持用于远程处理 ISerializable 接口。

例1

创建一个 Windows 应用程序,向窗体中添加一个 Button 控件和一个 DataGridView 控件,分别用于执行数据绑定以及显示数据表中的数据。当单击 Button 控件后,程序首先连接数据库,然后创建一个 SqIDataAdapter 对象,使用该对象的 Fill 方法填充 DataSet 数据集,最后设置 DataGridView 控件的数据源,显示查询的数据。

代码如下:

SqlConnection conn;
private void button1_Click(object sender, EventArgs e)
{//实例化 SqlConnection 变量 connconn = new SqlConnection("server=.;database=db_15;uid=sa;pwd=");//创建一个 SqlCommand 对象SqlCommand cmd=new SqICommand("select * from tb_command",conn);//创建一个 SqlDataAdapter 对象SqlDataAdapter sda = new SqlDataAdapter();//设置 SqlDataAdapter 对象的 SelectCommand 属性为 cmd sda.SelectCommand = cmd;//创建一个 DataSet 对象DataSet ds = new DataSet();//使用 SqlDataAdapter 对象的 Fill 方法填充 DataSet 数据集 sda.Fill(ds,"cs");//设置 dataGridView1 控件的数据源dataGridView1.DataSource = ds.Tables[0];
}

程序的运行结果如图1  所示。

图1 使用 Fill 方法填充 DataSet 数据集

03  更新数据源

使用 DataAdapter 对象的 Update 方法,可以将 DataSet 中修改过的数据及时地更新到数据库中,在调用 Update 方法之前,要实例化一个 CommandBuilder  类,它能自动根据 DataAdapter 的 SelectCommand 的 SQL 语句判断其他的 InsertCommand、UpdateCommand和 DeleteCommand。这样,就不用设置 DataAdapter 的 InsertCommand、UpdateCommand 和 DeleteCommand 属性,直接使用 DataAdapter 的 Update 方法来更新 DataSet、DataTable 或 DataRow 数组即可。

例2

创建一个 Windows 应用程序,查询 tb_command 表中的所有数据并将其显示在 DataGridView 控件中,单击某条数据,会显示其详细信息。当对某条数据进行修改后,单击“修改”按钮,使用 DataAdapter 对象的 Update 方法更新数据源。

代码如下:

SqlConnection conn;                                //声明一个 SqlConnection 变量
DataSet ds;                                        //声明一个 DataSet 变量
SqlDataAdapter sda;                                //声明一个 SqlDataAdapter 变量
private void Form1_Load(object sender, EventArgs e)
{//实例化 SqlConnection 变量 conn,连接数据库conn = new SqlConnection("server=.;database=db_15;uid=sa; pwd=");//创建一个 SqlCommand 对象SqlCommand cmd = new SqlCommand("select * from tb_command",conn);//实例化 SqlDataAdapter 对象 sda = new SqlDataAdapter();//设置 SqlDataAdapter 对象的 SelectCommand 属性为 cmd sda.SelectCommand = cmd; //实例化 DataSet ds = new DataSet();//使用 SqlDataAdapter 对象的 Fill 方法填充 DataSet sda.Fill(ds,"cs");//设置 dataGridView1 控件的数据源dataGridView1.DataSource = ds.Tables[0];
}
private void button1_Click(object sender, EventArgs e)
{DataTable dt = ds.Tables["cs"];               //创建一个 DataTablesda.FillSchema(dt, SchemaType.Mapped);        //把表结构加载到 tb_command 表中DataRow dr = dt.Rows.Find(txtNo.Text);        //创建一个 DataRow//设置 DetaRow 中的值dr["姓名"] = txtName.Text.Trim();dr["性别"] = this.txtSex.Text.Trim();dr["年龄"] = this.txtAge.Text.Trim();dr["奖金"] = this.txtJJ.Text.Trim();  //实例化一个 SqLCommandBuilderSqlCommandBuilder cmdbuilder = new SqlCommandBuilder(sda);//调用其 Update 方法将 DataTable 更新到数据库中sda.Update(dt);
}
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{//在 dataGridView1 控件的 CellClick 事件中实现单击某条数据显示详细信息txtNo.Text= dataGridView1.SelectedCells[0].Value.ToString();txtName.Text = dateGridView1.SelectedCells[1].Value.ToString(); txtSex.Text = dataGridView1.SelectedCells[2].Value.ToString();txtAge.Text = dataGridView1.SelectedCells[3].Value.ToString(); txtJJ.Text = dataGridView1.SelectedCells[4].Value.ToString();
}

程序的运行结果如图2 所示 。

图2  更新数据源

注意

在 DataTable 对象上可以多次使用 Fill 方法,如果主键存在,则传入行会与已有的匹配行合并;如果主键不存在,则传入行会追加到 DataTable 中。

往期推荐

  • C#  分部类

  • C#  类型转换

  • C#  迭代器

  • C#  线程的基本操作(一)

  • C#  线程的基本操作(二)

  • C#  线程的基本操作(三)

Love life,love yourself

关注小编不迷路呦~

代码如下:

C# 数据适配器之 DataAdapter 对象相关推荐

  1. 断开式数据连接 DataSet与DataAdapter对象 1204

    实例化一个仓库 DataSet对象 需要有命名空间 System.Data DataSet da = new DataSet(); 实例化一个小货车 DataAdapter对象 需要有命名空间 usi ...

  2. DataAdapter对象

    DataAdapter对象在物理数据库表和内存数据表(结果集)之间起着桥梁的作用.它通常与DataTable对象或DataSet对象配合来实现对数据库的操作. DataAdapter对象是一个双向通道 ...

  3. NR 5G SDAP业务数据适配协议

    SDAP业务数据适配协议 Service Data Adaptation Protocol 功能 传输用户数据: 为上下行数据进行QoS流到数据无线承载的映射,一个或者多个QoS流可以映射到同一个DR ...

  4. vuex数据管理-数据适配

    由于接口在上线前,不可避免的会出现变动,小则属性名变,大则结构变化.如果处理不当,结构变化时,视图的代码也需要做相应的更改,然后就是容错方法的变动,接着重新自测等,这样,变化成本随着结构的复杂度大大加 ...

  5. Java 反射将配置文件数据加载到对象属性中

    Java 反射将配置文件数据加载到对象属性中 Java 反射 可以根据类名找到相应的类,也可以将配置文件中的值加载到对应属性中. 需要用到的包:spring-core-3.1.2.Release.ja ...

  6. 【Android】Android适配器之ArrayAdapter、SimpleAdapter和BaseAdapter的简单用法

    Android适配器之ArrayAdapter.SimpleAdapter和BaseAdapter的简单用法与有用代码片段 ArrayAdapter.SimpleAdapter和BaseAdapter ...

  7. java怎么把数据封进对象里_(Java)想把数组中一条一条的数据全部放入对象中去..要怎么做呢...

    展开全部 Java把数组中一条一条的数据全部放入对象中去操作如下: 1.先获取到数组中的数据dataArray数据. 2.接32313133353236313431303231363533e58685 ...

  8. Python读取dat文件数据并构成Dataframe对象

    实际应用中,对数据进行处理时,到手的数据文件往往五花八门,data.txt.csv.json等等.Python为我们提供了强大的数据分析处理工具,如果文件符合某种格式要求,可以使用pandas模块中的 ...

  9. 小货车DataAdapter对象 1129

    小货车DataAdapter对象 1129 得到小货车对象 方式一 来一个智能小车,告诉他往哪走,做什么 SqlDataAdapter 货车对象 = new SqlDataAdapter(sql语句, ...

最新文章

  1. MPB:西农郑伟-土壤水稳性团聚体微生物组样品制备方法
  2. flink启动命令参数_[Flink]Flink1.3 指南四 命令行接口-阿里云开发者社区
  3. 操作系统 哈工大 李治军
  4. python版本切换_Ubuntu18.04下python版本完美切换的解决方法
  5. Leetcode--279. 完全平方数
  6. java面试-Java并发编程(六)——线程间的通信
  7. xuperchain 查看源码代码版本号
  8. IE 浏览器旧版本下载
  9. C语言 使用DFT得到信号幅度谱
  10. bugzilla mysql 配置_Bugzilla环境安装和配置手册
  11. 华硕服务器 u盘安装系统,华硕电脑u盘安装系统教程
  12. 常用的绩效管理系统应该具备哪些功能呢?
  13. 二十、哈希表的基础知识
  14. android主流视频直播sdk,Android视频直播SDK集成指引
  15. 微型计算机原理与接口技术 董洁,基于DSP和ARM的谐波检测
  16. matlab读mp4截图或转gif
  17. Linux - 解密迅雷下载链接
  18. 基于Matlab绘制方向强度数据风玫瑰图表
  19. 分布式服务架构的设计方案上—分布式基础理论知识
  20. java英语自我介绍_英文自我介绍

热门文章

  1. QAction添加事件响应
  2. CIO们对数据中心虚拟化心存的六大疑虑
  3. 电大免考英语计算机,关于电大本科课程中英语免修免考的条件
  4. mysql 导致iis 假死_解决IIS无响应假死状态
  5. python 多个列表_Python同时迭代多个列表
  6. 编译安装PHP出现configure: error: MySQL configure failed. Please check config.log的解决方法
  7. error记录 | 不能将参数 1 从“const char [5]”转换为“LPCTSTR
  8. Android 4.X 系统加载 so 失败的原因分析
  9. Cannot resolve the collation conflict between SQL_Latin1_General_CP1_CI_AS and Latin1_General_100...
  10. 纪实:对CSDN博客系统的一些质疑