这篇文章介绍了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的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持得得之家。
沃梦达教程
本文标题为:C#数据适配器DataAdapter
基础教程推荐
猜你喜欢
- C# 调用WebService的方法 2023-03-09
- C# List实现行转列的通用方案 2022-11-02
- 一个读写csv文件的C#类 2022-11-06
- winform把Office转成PDF文件 2023-06-14
- C#类和结构详解 2023-05-30
- C#控制台实现飞行棋小游戏 2023-04-22
- C# windows语音识别与朗读实例 2023-04-27
- unity实现动态排行榜 2023-04-27
- linux – 如何在Debian Jessie中安装dotnet core sdk 2023-09-26
- ZooKeeper的安装及部署教程 2023-01-22