SqlDataAdapter中Fill方法浅析

c# SqlDataAdapter中的Fill是怎么实现的 主要介绍了c# SqlDataAdapter中的Fill是怎么实现的,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下 立即下载

先来看看SqlDataAdapter中的所有成员
public sealed class SqlDataAdapter : DbDataAdapter, IDbDataAdapter, IDataAdapter, ICloneable
{
      // Events
      public event SqlRowUpdatedEventHandler RowUpdated;
      public event SqlRowUpdatingEventHandler RowUpdating;

      // Methods
      public SqlDataAdapter();
      public SqlDataAdapter(SqlCommand selectCommand);
      private SqlDataAdapter(SqlDataAdapter adapter);
      public SqlDataAdapter(string selectCommandText, SqlConnection selectConnection);
      public SqlDataAdapter(string selectCommandText, string selectConnectionString);
      protected override RowUpdatedEventArgs CreateRowUpdatedEvent(DataRow dataRow, IDbCommand command, StatementType statementType, DataTableMapping tableMapping);
      protected override RowUpdatingEventArgs CreateRowUpdatingEvent(DataRow dataRow, IDbCommand command, StatementType statementType, DataTableMapping tableMapping);
      protected override void Dispose(bool disposing);
      protected override void OnRowUpdated(RowUpdatedEventArgs value);
      protected override void OnRowUpdating(RowUpdatingEventArgs value);
      IDbCommand IDbDataAdapter.get_DeleteCommand();
      IDbCommand IDbDataAdapter.get_InsertCommand();
      IDbCommand IDbDataAdapter.get_SelectCommand();
      IDbCommand IDbDataAdapter.get_UpdateCommand();
      void IDbDataAdapter.set_DeleteCommand(IDbCommand value);
      void IDbDataAdapter.set_InsertCommand(IDbCommand value);
      void IDbDataAdapter.set_SelectCommand(IDbCommand value);
      void IDbDataAdapter.set_UpdateCommand(IDbCommand value);
      object ICloneable.Clone();

      // Properties
      public SqlCommand DeleteCommand { get; set; }
      public SqlCommand InsertCommand { get; set; }
      public SqlCommand SelectCommand { get; set; }
      public SqlCommand UpdateCommand { get; set; }

      // Fields
      private SqlCommand cmdDelete;
      private SqlCommand cmdInsert;
      private SqlCommand cmdSelect;
      private SqlCommand cmdUpdate;
      private SqlCommand internalCmdSelect;
}
其中并没有Fill方法,那么它从哪里来呢?想必是从它的父类DbDataAdapter中继承而来的那就
看看DbDataAdapter中的所有成员
public abstract class DbDataAdapter : DataAdapter, ICloneable
{
      // Events
      public event FillErrorEventHandler FillError;

      // Methods
      static DbDataAdapter();
      protected DbDataAdapter();
      protected DbDataAdapter(DbDataAdapter adapter);
      private static DataTable[] AddDataTableToArray(DataTable[] tables, DataTable newTable);
      private IDbCommand CloneCommand(IDbCommand command);
      protected abstract RowUpdatedEventArgs CreateRowUpdatedEvent(DataRow dataRow, IDbCommand command, StatementType statementType, DataTableMapping tableMapping);
      protected abstract RowUpdatingEventArgs CreateRowUpdatingEvent(DataRow dataRow, IDbCommand command, StatementType statementType, DataTableMapping tableMapping);
      protected override void Dispose(bool disposing);
      public override int Fill(DataSet dataSet);
      public int Fill(DataTable dataTable);
      public int Fill(DataSet dataSet, string srcTable);
      protected virtual int Fill(DataTable dataTable, IDataReader dataReader);
      protected virtual int Fill(DataTable dataTable, IDbCommand command, CommandBehavior behavior);
      public int Fill(DataSet dataSet, int startRecord, int maxRecords, string srcTable);
      protected virtual int Fill(DataSet dataSet, string srcTable, IDataReader dataReader, int startRecord, int maxRecords);
      protected virtual int Fill(DataSet dataSet, int startRecord, int maxRecords, string srcTable, IDbCommand command, CommandBehavior behavior);
      private void FillErrorHandler(Exception e, DataTable dataTable, object[] dataValues);
      private int FillFromCommand(object data, int startRecord, int maxRecords, string srcTable, IDbCommand command, CommandBehavior behavior);
      internal int FillFromReader(object data, string srcTable, IDataReader dataReader, int startRecord, int maxRecords, DataColumn parentChapterColumn, object parentChapterValue);
      private int FillLoadDataRow(SchemaMapping mapping);
      private int FillLoadDataRowChunk(SchemaMapping mapping, int startRecord, int maxRecords);
      private bool FillNextResult(IDataReader dataReader);
      public override DataTable[] FillSchema(DataSet dataSet, SchemaType schemaType);
      public DataTable FillSchema(DataTable dataTable, SchemaType schemaType);
      public DataTable[] FillSchema(DataSet dataSet, SchemaType schemaType, string srcTable);
      protected virtual DataTable FillSchema(DataTable dataTable, SchemaType schemaType, IDbCommand command, CommandBehavior behavior);
      protected virtual DataTable[] FillSchema(DataSet dataSet, SchemaType schemaType, IDbCommand command, string srcTable, CommandBehavior behavior);
      private DataTable[] FillSchemaFromCommand(object data, SchemaType schemaType, IDbCommand command, string srcTable, CommandBehavior behavior);
      private SchemaMapping FillSchemaMapping(object data, string srcTable, IDataReader dataReader, int schemaCount, DataColumn parentChapterColumn, object parentChapterValue);
      private SchemaMapping FillSchemaMappingTry(object data, string srcTable, IDataReader dataReader, int schemaCount, DataColumn parentChapterColumn, object parentChapterValue);
      private static IDbConnection GetConnection(IDbCommand command, string method);
      public override IDataParameter[] GetFillParameters();
      private static DataRowVersion GetParameterSourceVersion(StatementType typeIndex, IDataParameter parameter);
      internal static string GetSourceTableName(string srcTable, int index);
      protected virtual void OnFillError(FillErrorEventArgs value);
      protected abstract void OnRowUpdated(RowUpdatedEventArgs value);
      protected abstract void OnRowUpdating(RowUpdatingEventArgs value);
      private void ParameterInput(IDataParameterCollection parameters, StatementType typeIndex, DataRow row, DataTableMapping mappings);
      private void ParameterOutput(IDataParameterCollection parameters, StatementType typeIndex, DataRow row, DataTableMapping mappings);
      private static void QuietClose(IDbConnection connection, ConnectionState originalState);
      private static void QuietOpen(IDbConnection connection, out ConnectionState originalState);
      object ICloneable.Clone();
      public int Update(DataRow[] dataRows);
      public override int Update(DataSet dataSet);
      public int Update(DataTable dataTable);
      protected virtual int Update(DataRow[] dataRows, DataTableMapping tableMapping);
      public int Update(DataSet dataSet, string srcTable);
      private void UpdateRow(RowUpdatedEventArgs rowUpdatedEvent, string commandType);

      // Properties
      private IDbCommand DeleteCommand { get; }
      private IDbCommand InsertCommand { get; }
      private IDbCommand SelectCommand { get; }
      private IDbCommand UpdateCommand { get; }
      private MissingMappingAction UpdateMappingAction { get; }
      private MissingSchemaAction UpdateSchemaAction { get; }

      // Fields
      public const string DefaultSourceTableName = "Table";
      private static readonly object EventFillError;
      private bool hasFillErrorHandler;
}
 其中果然有Fill方法,并且还重载好多次
先看看 public override  int Fill(DataTable dataTable)方法
public override int Fill(DataSet dataSet)
{
      return this.Fill(dataSet, 0, 0, "Table", this.SelectCommand, CommandBehavior.Default);
}
 从override可以看出这个方法是重写了基类中的方法,而它的基类就是DataAdapter
那就在看看DataAdapter类中的Fill方法
public abstract class DataAdapter : Component, IDataAdapter
{
      // Methods
      protected DataAdapter();
      protected DataAdapter(DataAdapter adapter);
      protected virtual DataAdapter CloneInternals();
      protected virtual DataTableMappingCollection CreateTableMappings();
      protected override void Dispose(bool disposing);
      public abstract int Fill(DataSet dataSet);//就在这里
      public abstract DataTable[] FillSchema(DataSet dataSet, SchemaType schemaType);
      public abstract IDataParameter[] GetFillParameters();
      internal DataTableMapping GetTableMappingBySchemaAction(string sourceTableName, string dataSetTableName, MissingMappingAction mappingAction);
      internal int IndexOfDataSetTable(string dataSetTable);
      protected virtual bool ShouldSerializeTableMappings();
      ITableMappingCollection IDataAdapter.get_TableMappings();
      public abstract int Update(DataSet dataSet);

      // Properties
      public bool AcceptChangesDuringFill { get; set; }
      public bool ContinueUpdateOnError { get; set; }
      public MissingMappingAction MissingMappingAction { get; set; }
      public MissingSchemaAction MissingSchemaAction { get; set; }
      public DataTableMappingCollection TableMappings { get; }

      // Fields
      private bool acceptChangesDuringFill;
      private bool continueUpdateOnError;
      private MissingMappingAction missingMappingAction;
      private MissingSchemaAction missingSchemaAction;
      private DataTableMappingCollection tableMappings;
}
在看看DataAdapter中其他Fill方法
public int Fill(DataTable dataTable)
{
      if (dataTable == null)
      {
            throw ADP.FillRequires("dataTable");
      }
      IDbCommand command1 = this.SelectCommand;
      if (command1 == null)
      {
            throw ADP.MissingSelectCommand("Fill");
      }
      string text1 = dataTable.TableName;
      int num1 = base.IndexOfDataSetTable(text1);
      if (-1 != num1)
      {
            text1 = base.TableMappings[num1].SourceTable;
      }
      return this.Fill(dataTable, command1, CommandBehavior.SingleResult);
}
public int Fill(DataSet dataSet, string srcTable)
{
      return this.Fill(dataSet, 0, 0, srcTable, this.SelectCommand, CommandBehavior.Default);
}
protected virtual int Fill(DataTable dataTable, IDataReader dataReader)
{
      if (dataTable == null)
      {
            throw ADP.FillRequires("dataTable");
      }
      if (dataReader == null)
      {
            throw ADP.FillRequires("dataReader");
      }
      if (!dataReader.IsClosed && (dataReader.FieldCount > 0))
      {
            return this.FillFromReader(dataTable, null, dataReader, 0, 0, null, null);
      }
      return 0;
}
protected virtual int Fill(DataTable dataTable, IDbCommand command, CommandBehavior behavior)
{
      if (dataTable == null)
      {
            throw ADP.FillRequires("dataTable");
      }
      if (command == null)
      {
            throw ADP.MissingSelectCommand("Fill");
      }
      return this.FillFromCommand(dataTable, 0, 0, null, command, behavior);
}
public int Fill(DataSet dataSet, int startRecord, int maxRecords, string srcTable)
{
      return this.Fill(dataSet, startRecord, maxRecords, srcTable, this.SelectCommand, CommandBehavior.Default);
}
protected virtual int Fill(DataSet dataSet, string srcTable, IDataReader dataReader, int startRecord, int maxRecords)
{
      if (dataSet == null)
      {
            throw ADP.FillRequires("dataSet");
      }
      if (ADP.IsEmpty(srcTable))
      {
            throw ADP.FillRequiresSourceTableName("srcTable");
      }
      if (dataReader == null)
      {
            throw ADP.FillRequires("dataReader");
      }
      if (startRecord < 0)
      {
            throw ADP.InvalidStartRecord("startRecord", startRecord);
      }
      if (maxRecords < 0)
      {
            throw ADP.InvalidMaxRecords("maxRecords", maxRecords);
      }
      if (dataReader.IsClosed)
      {
            return 0;
      }
      return this.FillFromReader(dataSet, srcTable, dataReader, startRecord, maxRecords, null, null);
}
protected virtual int Fill(DataSet dataSet, int startRecord, int maxRecords, string srcTable, IDbCommand command, CommandBehavior behavior)
{
      if (dataSet == null)
      {
            throw ADP.FillRequires("dataSet");
      }
      if (command == null)
      {
            throw ADP.MissingSelectCommand("Fill");
      }
      if (startRecord < 0)
      {
            throw ADP.InvalidStartRecord("startRecord", startRecord);
      }
      if (maxRecords < 0)
      {
            throw ADP.InvalidMaxRecords("maxRecords", maxRecords);
      }
      if (ADP.IsEmpty(srcTable))
      {
            throw ADP.FillRequiresSourceTableName("srcTable");
      }
      return this.FillFromCommand(dataSet, startRecord, maxRecords, srcTable, command, behavior);
}

其实我们可以看到Fill方法调用了FillFromCommand或FillFromReader方法。这两个方法在下篇文章中在讨论。

Element-UI全面入门与实战技巧 Element-UI 是一套基于 Vue 2.0 的桌面端组件库,由饿了么前端团队开发并维护。它提供了一系列丰富的 UI 组件,旨在帮助开发者快速构建高效、美观的 Vue 应用程序。Element-UI 是一款遵循 Ant Design 设计规范的 Vue UI 库,它涵盖了从按钮、输入框、选择器到表格、标签、进度条等众多常用的界面元素。Element-UI 的组件不仅功能全面,而且易于定制,使得开发者可以快速实现个性化的页面设计。Element-UI 的特点包括:在使用 Element-UI 之前,需要确 阅读详情

相关推荐

微信小程序云开发订单微信支付与小票和标签打印的完整高效流程

本片文章全文12000字,细致讲述从申请账户到小程序注册到打印机的选型最后到实现微信小程序云开发订单支付更新与小票,标签打印完整的高效流程。客户A在我们的点餐平台上点了一杯咖啡,所以客户要在选好后付款,在付款完成后商家的小票打印机和标签打印机打印出本订单的相关信息。

weixin_52312427的博客 3649

DataAdapter的Fill方法

使用DataAdapter填充DataSet(1) 在选择了DataAdapter的类型(SqlDataAdapter或OleDbDataAdapter)并配置了DataAdapter来执行所需的任务之后,可以用创建的DataAdapter来填充DataSet。1.使用DataA

枫 3799

SpringBoot项目实战:5分钟搞定豆包大模型API接入(附完整代码)

本文详细介绍了如何在SpringBoot项目中快速集成豆包大模型API,仅需5分钟即可完成。从环境准备、依赖配置到核心服务封装和控制器层实现,提供了完整的代码示例和实战技巧,帮助开发者高效接入大模型能力,提升智能客服等应用的开发效率。

weixin_30566063的博客 439

SqlDataAdapter中的Fill方法(2)

上一篇中我们可以看出Fill方法最后都调用FillFromCommand和FillFromReader方法。那我们接着探讨FillFromCommand方法private int FillFromCommand(object data, int startRecord, int maxRecords, string srcTable, IDbCommand command, CommandBeha

thinkingforever的专栏 4994

cadence capture CIS 之添加数据库

2021-08-20 cadence capture CIS 之添加数据库准备一、添加数据源 准备 1、数据库文件(*.mdb) 2、电脑上安装好 cadence 软件 一、添加数据源 打开“ ODBC数据源管理器” ( 路径:C:\Windows\SysWOW64\odbcad32.exe ) ...

weixin_42256550的博客 6054

鸿蒙5.0进阶开发:UI开发-不依赖UI组件的全局自定义弹出框 (openCustomDialog)(推荐)

本文介绍通过入参形式为ComponentContent创建自定义弹出框............

AyomQAQ的博客 1850

使用SqlDataAdapter填充数据

使用SqlDataAdapter填充数据,获取数据库中表内容数据

qq_43733614的博客 572

Python+OpenCV实战:雨天车牌识别准确率提升300%的5个关键技巧

本文针对雨天车牌识别准确率骤降的难题,分享了五个基于Python和OpenCV的实战技巧。通过暗通道先验去雾、雨纹抑制、光照不变量颜色空间转换、多尺度自适应阈值分割以及融合传统特征与轻量级深度学习的混合识别策略,系统性地提升了算法在恶劣天气下的鲁棒性。这些方法能有效解决图像模糊、对比度低、字符断裂粘连等问题,为智能交通等实际应用提供可靠解决方案。

k8l9m0n的博客 716

c# SqlDataAdapter的Fill方法

DataSet ds = new DataSet(); sda.Fill(ds, "table"); table虚表名,将查询到的数据放入ds中,这张表叫table可以通过ds["usertable"]访问到 一个dataset中可有多张表。 sda.Fill(DataSet ds,String datatable) 返回值是成功添加或更新的行的数量。...

qq_41642615的博客 6699

OmniDrive(2):环境搭建

项目中使用的是全量的数据集(full dataset v1.0), 数据量比较大,训练验证(trainval) + test 总计200多G的数据,单独一个个下载会比较慢。参数,否则安装的时候会自动卸载已安装好的torch,重新安装最新版本的torch,这是不允许的。在cuDNN官网下载,默认下载的是最新版本的cuDNN,我们这里点击。,== 博文中详细介绍了完整的cuda和cudnn的安装过程==分析: 这是因为yapf 安装的版本不对,需要安装特定的版本。出现训练的loss变化,就说明可以正常训练了。

@bangbang的博客 623

STEP 7-Micro/WIN SMART 编程软件:从入门到精通的使用指南

通过不断实践,熟悉软件的各项功能和操作技巧,工程师可更好地应对工业自动化控制中的各种挑战,开发出高效、稳定的控制程序。项目的基本组件是构成程序的核心元素,包括:程序块(主程序 OB1、子程序和中断程序)、数据块(给 V 存储器赋初值)、系统块(硬件组态和参数设置)、符号表(用符号代替存储器地址,使程序更易理解)以及状态图表(监视、修改和强制变量状态)。下载程序时,单击工具栏上的 “下载” 按钮,在弹出的下载对话框中选择要下载的块(程序块、数据块、系统块),单击 “下载” 即可。

电工 5573

数据库开发020 SqlDataAdapter之Fill方法

SqlDataAdapter 类 https://docs.microsoft.com/zh-cn/dotnet/api/system.data.sqlclient.sqldataadapter?view=dotnet-plat-ext-3.1 构造函数 SqlDataAdapter() 初始化SqlDataAdapter类的新实例。 SqlDataAda...

复行数十步 778

华为OD机试真题 新系统2026-04-08 Python&JS 实现【配置操作失败数量统计】

模拟一个系统的命令行配置,包含添加、修改、删除三项操作,详情如下: 添加操作命令:add_rulerule_id=1rule_index = 18 修改操作命令: mod_rule rule_id= 1rule_index = 100 删除操作命令:del_rulerule_id=1

MISAYAONE的博客 586

一个有趣的问题, 你知道SqlDataAdapter中的Fill是怎么实现的吗

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

chinaherolts2008的博客 570

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

SqlDataAdapter中Fill方法的分析

作者:山东人在成都    今天在测试一个数据库连接时,发现当使用SqlCommand的ExecuteReader方法打开一个DataReader后,如果没有关闭,再使用SqlDataAdapter类的Fill方法填充一个DataSet,这时就会发生一个错误,产生一个InvalidOperationException异常,表明已有打开的与此相关联的DataReader,必须首先将它关闭.   

山东人在成都的专栏 4132

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

记录 DataAdapter.Fill 方法 (DataSet) SqlDataAdapter();SqlCommand SqlConnection 类

 【转自】http://hi.baidu.com/yandavid/blog/item/72006031eddb9418eac4af30.html DataAdapter.Fill 方法 (DataSet)  在 DataSet 中添加或刷新行以匹配使用 DataSet 名称的数据源中的行,并创建一个 DataTable。SqlConnection con = new SqlConne

gxj022的专栏 1584

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

SqlDataAdapter的用法

SqlDataAdapter是DataSet和 数据库的连接(桥接器),用于检索和保存数据,SqlDataAdaoter通过对数据源使用适当的Transact-SQL语句映射File(他作为填充DataSet的数据源中的数据)和Update(更改DataSet中的数据源)提供一种桥接方式,当SqlDataAdapter填充DataSet时,他为返回的数据创建必须的表和列 第一种方式(字符串查询) string strCon =“uid=sa;pwd=123456;database=test;server=1

caiweijiancsdn的博客 4250

SqlDataAdapter Fill方法的重载

[code="java"] public int Fill ( DataSet dataSet, int startRecord, int maxRecords, string srcTable ) [/code] 参数: dataSet 要用记录和架构(如果必要)填充的 DataSet。 startRecord 从其开始的从零...

shirlly 359

SqlDataAdapter以及属性 SelectCommand InsertCommand UpdateCommand DeleteCommand

SqlDataAdapter 比DataAdapter更进一步,专门用来操作SQL Server 数据库。 一、 方法   SqlDataAdapter有两个有用的方法,分别为 fill 和 update。下面分别来介绍这两方法。 1. fill 方法   fill 方法是用来填充 DataSet 的。也就是,把数据库中的运送到C#空间。fill 有13个重载的方法,在使用时可以根据情况选...

zq爱生活爱代码的博客 2198

vs中预览datatable_你知道SqlDataAdapter中的Fill是怎么实现的吗?

(给DotNet加星标,提升.Net技能)一、背景1、讲故事最近因为各方面原因换了一份工作,去了一家主营物联柜的公司,有意思的是物联柜上的终端是用 wpf 写的,代码也算是年久失修,感觉技术债还是蛮重的,前几天在调试一个bug的时候,看到了一段类似这样的代码:var dt = new DataTable();SqlDataAdapter adapter = new SqlDataAdap...

weixin_39679061的博客 201

SqlDataAdapter对象的Fill(dataset,datatable)方法中的dataTable

今天看到有人问了个问题,和我的想法差不多,贴出来大家共享。 ado.net中SqlDataAdapter对象的Fill()方法()中的2个参数是什么意思? [ 标签:sqldataadapter,fill,参数 ] ado.net中SqlDataAdapter对象的Fill()方法()中的2个参数是什么意思? 第一个参数是DataSet对象 第2个呢? 第2个参数是什么意

lllljz的专栏 8941

SqlDataAdapter简单介绍

一SqlDataAdapte特点介绍1、表示用于填充 DataSet 和更新 SQL Server 数据库的一组数据命令和一个数据库连接。2、在SqlDataAdapter和DataSet之间没有直接连接。当完成SqlDataAdpater.Fill(DataSet)调用后,两个对象之间就没有连接了。SqlDataAdapter有三种构造函数 public SqlDataAdapter(S

WINCOL的专栏 2121

怎么将两个datatable 合并_一个有趣的问题, 你知道SqlDataAdapter中的Fill是怎么实现的吗

一:背景 1. 讲故事 最近因为各方面原因换了一份工作,去了一家主营物联柜的公司,有意思的是物联柜上的终端是用 wpf 写的,代码也算是年久失修,感觉技术债还是蛮重的,前几天在调试一个bug的时候,看到了一段类似这样的代码: var dt = new DataTable(); SqlDataAdapter adapter = new SqlDataAdapter(new SqlCo...

weixin_40006133的博客 295

SqlDataAdapter对象

一、特点介绍    1、表示用于填充 DataSet 和更新 SQL Server 数据库的一组数据命令和一个数据库连接。    2、在SqlDataAdapter和DataSet之间没有直接连接。当完成SqlDataAdpater.Fill(DataSet)调用后,两个对象之间就没有连接了。    二、使用介绍    1、创建SqlDataAdapter    ……    string strS

dwzsq的专栏 1006

SqlDataAdapter知识

SqlDataAdapter是 DataSet和 SQL Server之间的桥接器。SqlDataAdapter通过对数据源使用适当的Transact-SQL语句映射 Fill(它可填充DataSet中的数据以匹配数据源中的数据)和 Update(它可更改数据源中的数据以匹配 DataSet中的数据)来提供这一桥接。当SqlDataAdapter填充 DataSet时,它为返回的数据创建必需的表和列(如果这些表和列尚不存在)。 简介 但是,除非 MissingSchemaAction,否则这个隐式创建的架构

极客神殿 760
下一篇: SqlDataAdapter中的Fill方法(2)
thinkingforever
博客等级 码龄24年 29粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值