DataAdapter:更新无法找到 TableMapping['Table'] 或 DataTable 'Table'

2023-11-25

此代码片段引发错误:

更新无法在适配器上找到 TableMapping['Table'] 或 DataTable 'Table'。)。Update(ds);线

为什么它会抛出这种类型的错误?

SqlConnection con = new SqlConnection();
con.ConnectionString = connectionString();

DataSet ds = new DataSet();

string strQuery = "SELECT * FROM Cars";
SqlDataAdapter adapter = new SqlDataAdapter();

adapter.SelectCommand = new SqlCommand(strQuery, con);

SqlCommandBuilder builder = new SqlCommandBuilder(adapter);

adapter.Fill(ds, "Cars");

//Code to modify data in the DataSet
ds.Tables["Cars"].Rows[0]["Brand"] = "NewBrand";

adapter.UpdateCommand = builder.GetUpdateCommand();
adapter.Update(ds);

Use

adapter.Update(ds, "Cars");

instead.

我已经测试过了。我得到了同样的错误,如果我指定表名,它就会起作用。然而,我必须承认,我还不知道为什么DataAdapter需要知道表名,因为它具有所需的所有信息。如果我使用ds.GetChanges我得到一行具有正确的表名。

Update我没有找到任何关于MSDN但最终在源代码(ILSpy)中找到了它。这是执行DBDataAdapter.Update(DataSet):

public override int Update(DataSet dataSet)
{
    return this.Update(dataSet, "Table");
}

因此,如果您不指定表,则表名"Table"使用,如果您指定了除此之外的表名,您将收到此错误,这真的很奇怪!

我认为造成这种情况的原因是DataAdapter无法打电话GetChanges确定要更新的表有两个原因:

  1. 它的效率很低,因为它需要循环所有表及其所有行来查找具有RowState != Unchanged
  2. 可能需要更新多个表,因为它们包含更改的行。不支持通过DataAdapter. Hence DataAdapter.Update(DataSet)假定默认名称"Table"作为表名。

Edit: 不过,也许有人可以解释一下为什么DataAdapter不使用DataSet.Tables[0].TableName反而。

因此,一般来说,指定要更新的表的名称似乎是最佳实践。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DataAdapter:更新无法找到 TableMapping['Table'] 或 DataTable 'Table' 的相关文章

随机推荐

  • 从 QValidator 获取视觉反馈

    我正在尝试使用QValidator后代 实际上在 PyQt5 中 但这并不重要 来验证一系列行编辑 一小段摘录是 class IPv4 QWidget def init self super IPv4 self init uic loadU
  • 相机预览仍然是黑色

    我正在 Android 应用程序上尝试相机预览 当我在真实设备上尝试时 它给我黑屏 这是我的代码 它不会引发任何错误 但屏幕仍然是黑色的 有任何想法吗 import android app Activity import android c
  • 在第一个编译\链接错误上停止解决方案构建 - msbuild

    我正在使用 VS2013 的 MSBuild 编译一个包含许多项目的解决方案 我希望如果其中一个项目无法编译并且 msbuild 的错误代码将不为零以指示某些内容失败 则构建停止 能做到吗 我正在运行此命令来开始编译 MS BUILD PA
  • 更新 Woocommerce 中可变产品的所有变体价格

    我需要循环获取所有变体 ID 并更新价格 简单的查询和循环如下所示 params array posts per page gt 1 post type gt product variation post parent gt product
  • Spring Boot @WebIntegrationTest 和 TestRestTemplate - 是否可以回滚测试事务?

    我有一个带有 Spring Data Rest 的 Spring Boot 应用程序 我使用 WebIntegrationTest随着TestRestTemplate在我的集成测试中 测试的基类看起来像这样 RunWith SpringJU
  • iText 7.0.4.0 - 将 PdfDocument 转换为字节数组

    我正在尝试逐页拆分 PDF 文件 并获取每个页面文件的字节数组 但是 我在 C 的 iText 版本 7 0 4 中将每个页面转换为字节数组时遇到问题 其他解决方案中引用的方法依赖于 PdfWriter GetInstance 或 PdfC
  • 使用java从服务器端检测浏览器版本

    我看到很多与浏览器检测 用户代理检测等相关的帖子 我想从服务器端检测版本并基于此发送适当的数据 我知道浏览器可以使用工具模仿版本 但这对我来说并不重要 我需要 java 解决方案来进行准确的版本检测 这是解释如何使用的代码用户代理实用程序
  • exc 错误访问代码 2

    过去三天我一直在与这个错误作斗争 但没有运气 我正在开发一个组合应用程序uiviewcontrollers and uitableviewcontrollers在表视图中 我单击 添加 按钮 它崩溃了 尚未添加核心数据编码 我什至已经启用N
  • 文件选择器在 Windows 上不接受 mimetype 'text/csv'

    我正在使用 filepicker 并设置 text csv 上传的 mimetype 它在 Mac chrome 上运行得很好 但在 Windows 上则不然 知道如何解决这个问题吗 谢谢 Ace 也尝试替代的模仿类型 text comma
  • 使用 BinData 进行 MongoDump 查询

    Mongodump 文档指定您可以使用特定查询进行转储 i e mongodump host localhost db mydb collection testCollection query SomeKey some value 我将 i
  • 将 UIImage 剪成圆形

    我想剪一个UIImage成一个圆圈 以便我可以将其用作注释 我在这个网站上找到的每个答案都描述了创建一个UIImageView 然后修改它并显示它 但你不能将注释的图像设置为UIImageView 只有一个UIImage 我该怎么办 Xco
  • Asp.Net MVC 生命周期[重复]

    这个问题在这里已经有答案了 可能的重复 与 ASP NET WebForms 相比 ASP NET MVC 页面的 页面生命周期 是怎样的 如果专家能够向我指出 ASP Net MVC 生命周期 我将不胜感激 我有兴趣知道一旦请求到来并发送
  • toSet 和类型推断

    有人可以解释为什么以下不起作用 当我这样做时 不知怎的会丢失编译类型推断的一些信息toSet 但我不明白为什么 scala gt case class Foo id Int name String defined class Foo sca
  • 如何在 Java 中填充数组?

    我知道如何正常执行此操作 但我可以发誓您可以填写如下 a 0 0 0 0 0 你是怎么做到的 我确实尝试过谷歌 但没有得到任何有用的信息 查看数组 fill方法 int array new int 4 Arrays fill array 1
  • 如何更改R中的矩阵列类型

    我有一个矩阵 我想将第五列类型从字符更改为数字 但我不能 我已经尝试过这个 test1 5 lt as numeric test1 5 但同样 列类是字符而不是数字 我应该怎么办 谢谢 就像 Marius所说 矩阵只能保存一种数据类型 您可
  • 在一个函数调用中向 R data.table 添加多列?

    我有一个返回列表中两个值的函数 这两个值都需要添加到 data table 的两个新列中 函数的评估成本很高 因此我想避免计算函数两次 这是例子 library data table example data table DT x y v
  • 如何使用 Xpath 1.0 比较字符串?

    我遇到了一个问题
  • 使用 SQL 查询进行 XML 解析

    我正在尝试解析 sql server 中的以下 xml 以获取所有 3 个 Id
  • 停止重复使用自定义单元 Swift

    我有一个uitableview使用从数组获取数据的自定义单元格 定制单元有一个uilabel and an uibutton 直到uilabel文本或为文本加载的数组对象 为零 启动时一切都很好 当我按下uibutton正在追加数组 新单元
  • DataAdapter:更新无法找到 TableMapping['Table'] 或 DataTable 'Table'

    此代码片段引发错误 更新无法在适配器上找到 TableMapping Table 或 DataTable Table Update ds 线 为什么它会抛出这种类型的错误 SqlConnection con new SqlConnectio