我有一个带有2个数据表的类型化数据集,TableX和TableY。在设计师创作。没有TableAdapters。
当我填充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针对正确的表执行吗? (TableX的)
答案 0 :(得分:0)
我找到了解决方案。 我在调用
之前在dataadapter中构建了CUD命令return cb.DataAdapter.Update(table);
然后CUD命令将生成正确的。