【发布时间】: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