C#数据适配器DataAdapter

一、填充数据

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的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • C#使用SqlDataAdapter对象获取数据的方法

    本文实例讲述了C#使用SqlDataAdapter对象获取数据的方法.分享给大家供大家参考,具体如下: 一.SqlDataAdapter对象 1. SqlDataAdapter特性 SqlDataAdapter类用作ADO.NET对象模型中和数据连接部分和未连接部分之间的桥梁.SqlDataAdapter从数据库中获取数据,并将其存储在DataSet中.SqlDataAdapter也可能取得DataSet中的更新,并将它们提交给数据库. SqlDataAdapter是为处理脱机数据而设计的,调用

  • C#使用SQL DataAdapter数据适配代码实例

    数据适配 DataAdapter 对象是DataSet 和数据源之间的桥梁,可以建立并初始化数据表(即DataTable),对数据源执行SQL指令.与DataSet 对象结合,提供DataSet对象存取数据源执行SQL指令,与Dataset对象结合,提供Dataset对象存取数据,可视为Data对象操作核心. 在使用DataAdapter对象是,只需要设置SQL命令和数据库连接两个参数,就可以铜火锅Fill方法把查询结果放置在一个DataSet对象中: 实例 : 填充DataSet数据集:利用D

  • c# SqlDataAdapter中的Fill是怎么实现的

    1. 讲故事 最近因为各方面原因换了一份工作,去了一家主营物联柜的公司,有意思的是物联柜上的终端是用 wpf 写的,代码也算是年久失修,感觉技术债还是蛮重的,前几天在调试一个bug的时候,看到了一段类似这样的代码: var dt = new DataTable(); SqlDataAdapter adapter = new SqlDataAdapter(new SqlCommand()); adapter.Fill(dt); 是不是很眼熟哈,或许你也已经多年不见了,犹记得那时候为了能从数据库获取

  • C#数据适配器DataAdapter

    一.填充数据 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.TableMapp

  • Android ListView和Adapter数据适配器的简单介绍

    ListView 显示大量相同格式数据 常用属性: listSelector listView每项在选中.按下等不同状态时的Drawable divider ListView每项间的间隔Drawable dividerHeight ListView每项间间隔的间隔高度 常用方法: setAdapter() 设置数据适配器 setOnItemClickListener() 设置每项点击事件监听 addHeaderView() 添加头视图 addFooterView() 添加脚视图 setEmpty

  • 使用DataAdapter填充多个表(利用DataRelation)的实例代码

    Default.aspx 复制代码 代码如下: View Code <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &q

  • 将Access数据库中数据导入到SQL Server中的详细方法实例

    Default.aspx 复制代码 代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="AccessToSQL.aspx.cs" Inherits="AccessToSQL" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "

  • 如何将数据绑到gridview然后导成excel

    复制代码 代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data .SqlClient ; using System.Data ; public partial class _Default : System.Web.UI.Pag

  • 使用.NET存储XML数据的方法

    SQL Server 2000和XML for SQL Server 2000 Web版本(SQLXML)提供了三种存储XML数据的途径:XML Bulk Load和Updategrams,这两种客户端技术使用带有注解的大纲指定XML文档内容和数据库的表之间的映射:OpenXML是一种服务器端技术,它允许你在XML文档上定义关系视图,有了OpenXML的关系视图,你就能使用T-SQL代码查询XML文档中的数据并把结果存储在你的SQL Server数据库中.  这三种技术中的每一种都是为特定的目的

  • ASP.NET连接数据库并获取数据方法总结

    本文实例讲述了ASP.NET连接数据库并获取数据方法.分享给大家供大家参考,具体如下: *连接对象的用法SqlConnection,SqlCommand,SqlDataAdapter *数据访问方式的写法 1.获取数据: //引用这两个命名空间 using System.Data.SqlClient; using System.Data; // 初始化连接对象 SqlConnection conn = new SqlConnection(); conn.ConnectionString = "U

  • 合并两个DataSet的数据内容的方法

    Default.aspx 复制代码 代码如下: <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:/

  • Android使用RecyclerView实现列表数据选择操作

    这些时间做安卓盒子项目,因为安卓电视的显示器比较大,所以一个界面显示 很多数据 ,最多的时候,一个Actvity中用到了好几个RecyclerView. 在RecyclerView中实现Item选中处理时,发现用CheckBox的OnCheckedChangeListener监听事件时,会达不到预期,所以用了OnClickListener来实现. 主界面代码: public class CheckRecyclerViewActivity extends AppCompatActivity imp

随机推荐