【问题标题】:.net dataadapter update executes on wrong table.net 数据适配器更新在错误的表上执行
【发布时间】:2011-08-19 05:59:34
【问题描述】:

我有一个包含 2 个数据表 TableX 和 TableY 的类型化数据集。在设计师中创建。没有 TableAdapter。

当我填充 TableX 时,我运行 SQL 并从另一个表 TableZ 中获取数据。 该表填满了记录,并且 TableX.tableName 是“TableX”。

但是当我使用 datadapter 和 commandbuilder 为 TableX 生成 updatecommand 时,它会尝试更新 TableZ。我该如何更改?

Oracle.DataAccess.Client.OracleDataAdapter da = new OracleDataAdapter("select * from " + table.TableName, this.Connection);
Oracle.DataAccess.Client.OracleCommandBuilder cb = new OracleCommandBuilder(da);
return cb.DataAdapter.Update(table);

更新会生成一条以“update TableZ...”开头的 SQL 语句。应该是“更新 TableX...”。

我猜这是因为填充数据表的方法运行了一条 sql 语句,该语句从另一个表“select ....... from TableZ”中获取数据,并在数据表模式中读取:

<?xml version="1.0" standalone="true"?>
<dsConsignmentReport xmlns="http://tempuri.org/dsConsignmentReport.xsd">
    <xs:schema xmlns="http://tempuri.org/dsConsignmentReport.xsd" elementFormDefault="qualified" ...."> 
        <xs:element msdata:EnforceConstraints="False" msdata:Locale="nb-NO" ...> 
        <xs:complexType> 
        <xs:choice maxOccurs="unbounded" minOccurs="0"> -<xs:element name="TABLEX" msprop:BaseTable.0="TABLEZ">

表示“baseTable”的值为“TableZ”。 我怎样才能解决这个问题?我无法更改我的 SQL 语句来填充表格。我能做些什么来让 DataAdapter 对正确的表执行吗? (表 X)

【问题讨论】:

    标签: .net dataset dataadapter sqlcommandbuilder


    【解决方案1】:

    我找到了解决方案。 在调用

    之前,我在 dataadapter 中构建了 CUD 命令
    return cb.DataAdapter.Update(table);
    

    然后CUD命令将生成正确。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-22
      • 1970-01-01
      • 1970-01-01
      • 2014-09-18
      • 2021-07-14
      相关资源
      最近更新 更多