TableAdapter 概述
Dim northwindDataSet As New NorthwindDataSet()
Dim customersTableAdapter As New NorthwindDataSetTableAdapters.CustomersTableAdapter()
C# 复制代码
NorthwindDataSet northwindDataSet = new NorthwindDataSet();
new NorthwindDataSetTableAdapters.CustomersTableAdapter();
J# 复制代码
NorthwindDataSet northwindDataSet = new NorthwindDataSet();
new NorthwindDataSetCustomersTableAdapter();
创建 TableAdapter 时,将使用初始查询或存储过程定义 TableAdapter 的关联 DataTable 的架构。通过调用 TableAdapter 的主 Fill 方法(此方法对 TableAdapter 的关联 DataTable 进行填充),可以执行此初始查询或存储过程。任何对 TableAdapter 的主查询的更改都会反映在关联数据表的架构中。例如,如果将一列从主查询中移除,该列也将从关联的数据表中移除。如果 TableAdapter 的任何附加查询使用的 SQL 语句将返回主查询中没有的列,设计器将尝试同步主查询和附加查询之间的列更改情况。有关更多信息,请参见如何:编辑 TableAdapter。
TableAdapter 的更新功能依赖于有多少信息可用(基于 TableAdapter 向导中提供的主查询)。例如,配置为从多个表(联接)、标量值、视图或聚合函数的结果中获取值的 TableAdapter 最初创建时不具有将更新发送回基础数据库的能力。不过,可以在“属性”窗口中手动配置 INSERT、UPDATE 及 DELETE 命令。
与标准数据适配器不同,TableAdapter 可以包含多个查询,以填充其关联数据表。只要每个查询所返回数据的架构与其关联数据表的架构相同,您就可以根据应用程序的需要定义任意多个 TableAdapter 查询。这样就能加载满足不同条件的数据。例如,如果应用程序包含一个 customers 表,您可以创建一个查询,使用名字以某个特定字母开头的所有客户填充表,而另一个查询则使用来自同一个州/省的所有客户填充该表。若要用处于给定州/省的客户填充 Customers 表,可以创建一个 FillByState 查询,该查询采用一个针对该州/省值的参数:SELECT * FROM Customers WHERE State = @State。可以通过调用 FillByState 方法并按照以下格式传递参数值来执行该查询:CustomerTableAdapter.FillByState("WA")。有关更多信息,请参见如何:创建 TableAdapter 查询。
TableAdapter 添加了一个 DataAdapter 基类所没有的属性。默认情况下,每次执行一个用来填充 TableAdapter 的数据表的查询时,数据会被清除,只将该查询的结果加载到表中。如果要将查询返回的数据添加或合并到数据表的现有数据中,请将 TableAdapter 的 ClearBeforeFill 属性设置为 false。无论是否清除数据,如果需要,都有必要显式地将更新发送回数据库。所以,在执行另一个填充表的查询前,请记住保存任何对表中数据所做的更改。有关更多信息,请参见如何:使用 TableAdapter 更新数据。
TableAdapter 通过封装经过配置的 DataAdapter,扩展了标准数据适配器的功能。默认情况下,TableAdapter 从 Component 继承,无法强制转换为 DataAdapter 类。将 TableAdapter 强制转换为 DataAdapter 将导致 InvalidCastException。若要更改 TableAdapter 的基类,可以在“数据集设计器”中的 TableAdapter 的 Base Class 属性中键入从 Component 派生的类。
TableAdapter 类不是 .NET Framework 的一部分,因此,不能在文档或“对象浏览器”中查找它。它是在设计时使用前面提到的向导之一创建的。创建 TableAdapter 时为其分配的名称基于正在使用的表的名称。例如,基于数据库中名为 Orders 的表创建 TableAdapter 时,此 TableAdapter 会被命名为 OrdersTableAdapter。可以在“数据集设计器”中使用 Name 属性更改 TableAdapter 的类名称。
TableAdapter.Fill
用 TableAdapter 的 SELECT 命令的结果填充 TableAdapter 的关联数据表。有关更多信息,请参见如何:使用数据填充数据集。
TableAdapter.Update
将更改发送回数据库。有关更多信息,请参见如何:使用 TableAdapter 更新数据。
TableAdapter.GetData
返回一个用数据填充了的新 DataTable。
TableAdapter.Insert
在数据表中创建新行。有关更多信息,请参见如何:向数据表中添加行。
TableAdapter.ClearBeforeFill
确定数据表在您调用一个 Fill 方法之前是否被清空。
TableAdapter 使用数据命令读取和写入数据库。TableAdapter 的初始 Fill(主)查询是创建关联数据表的架构的基础,也是与 TableAdapter.Update 方法关联的 InsertCommand、UpdateCommand 和 DeleteCommand 命令的基础。这意味着调用 TableAdapter 的 Update 方法将执行最初配置 TableAdapter 时创建的语句,而不是使用“TableAdapter 查询配置向导”添加的某个附加查询。
如果主查询中有足够的信息,生成 TableAdapter 时将默认创建 InsertCommand、UpdateCommand 和 DeleteCommand 命令。如果 TableAdapter 的主查询不只是一个表的 SELECT 语句,设计器可能无法生成 InsertCommand、UpdateCommand 和 DeleteCommand。如果没有生成这些命令,执行 TableAdapter.Update 方法时可能会收到一个错误。
除了 InsertCommand、UpdateCommand 和 DeleteCommand 之外,创建 TableAdapter 时还生成了一些可以直接在数据库上执行的方法。可以直接调用这些方法(TableAdapter.Insert、TableAdapter.Update 和 TableAdapter.Delete)对数据库中的数据进行操作。
TableAdapter 支持可为空的类型 Nullable(Of T) 和 T?。有关 Visual Basic 中的可空类型的更多信息,请参见可能没有已定义值的值类型。有关 C# 中的可空类型的更多信息,请参见使用可空类型(C# 编程指南)。
TableAdapter 概述相关推荐
- TableAdapter和DataAdapter有何区别
在使用DataAdapter时,需要将查出的数据起一个表名放到DATASET中,一个DATASET可以存放多个表,而TableAdapter的结果就是一个表,不能在继续添加表. DataAdapter ...
- Java 多线程概述
多线程技术概述 1.线程与进程 进程:内存中运行的应用程序,每个进程都拥有一个独立的内存空间. 线程:是进程中的一个执行路径,共享一个内存空间,线程之间可以自由切换.并发执行,一个进程最少有一个线程, ...
- 【SpringMVC】概述
概述: SpringMVC:是基于spring的一个框架, 实际上就是spring的一个模块, 专门是做web开发的. 理解是servlet的一个升级 Sp ...
- 梯度下降优化算法概述
本文原文是 An overview of gradient descent optimization algorithms,同时作者也在 arXiv 上发了一篇同样内容的 论文. 本文结合了两者来翻译 ...
- Redis概述和基础
Redis 1.NoSQL NoSQL = Not Only SQL(不仅仅是SQL) 泛指非关系型数据库的,随着web2.0互联网的诞生!传统的关系型数据库很难对付web2.0时代!尤其是超大规模的 ...
- OpenCL™(开放计算语言)概述
OpenCL™(开放计算语言)概述 异构系统并行编程的开准 OpenCL™(开放计算语言)是一种开放的.免版税的标准,用于对超级计算机.云服务器.个人计算机.移动设备和嵌入式平台中的,各种加速器进行跨 ...
- 自动驾驶QNX,Linux,Autosar概述
自动驾驶QNX,Linux,Autosar概述 QNX是一个分布式.嵌入式.可规模扩展的实时操作系统.遵循POSIX.1 (程序接口)和POSIX.2 (Shell和工具).部分遵循POSIX.1b( ...
- Tengine MLOps概述
Tengine MLOps概述 大幅提高产业应用从云向边缘迁移的效率 MLOps Cloud Native 聚焦于提升云端的运营过程效率 MLOps Edge Native 聚焦于解决边缘应用开发及异 ...
- Tengine Web服务器概述
Tengine Web服务器概述 Tengine是由淘宝网发起的Web服务器项目.在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性.目的是打造一个高效.安全的Web平台. 发展 ...
最新文章
- UA OPTI512R 傅立叶光学导论16 Nyquist-Shannon采样定理
- struts2教程--快速入门
- 【每周CV论文推荐】 掌握残差网络必读的10多篇文章
- 绿色经营:从优秀到卓越最显性准则
- CString类型的头文件、CString的输出、CString的常用用法
- springboot 集成redis_一文详解Spring Boot 集成 Redis
- Hadoop入门进阶步步高(六-Hadoop1.x与Hadoop2的区别
- mysql分表和分区的区别
- linux下udf光盘权限问题,linux - 关于mysql udf权限的问题?
- gitlab mysql 坑_gitlab迁移和踩坑
- ppapi,npapi
- Android LinearLayout实现下拉刷新
- Python统计字符串中的中英文字符、数字空格,特殊字符 , 空格的个数
- 主动学习,半监督学习,直推学习
- 2022蓝帽杯初赛部分wp
- 独立开发变现周刊(第44期):12岁的小男孩在9个小时内NFT卖了40万美元!
- python读取配置文件 分段_python分割文件的常用方法
- Instruments
- 【软件设计】细数软件开发的核心原则
- NeurIPS 2022 | ​NAS-Bench-Graph: 图神经网络架构搜索Benchmark
热门文章
- mysql-data-dumper
- Nginx学习之五:Nginx第三方模块
- 转: The Code Commandments: Best Practices for Objective-C Coding (updated for ARC)
- 在主线程中慎用WaitForSingleObject (WaitForMultipleObjects)
- Html5本地存储和本地数据库
- JS-String方法
- 主流报表制作工具之王者争夺战:功能大PK系列之“删除当前行”按钮制作
- 常用 Java Profiling 工具的分析与比较
- 数据库经典书籍--数据库系统概念
- 后台开发必读书籍--Linux 高性能服务器编程