多个基本表不支持动态SQL生成

Spo*_*ina 2 c# sql-server ado.net

我试图在SQL DB的表中添加新行,但是遇到了一个问题:

多个基本表不支持动态SQL生成

这是我尝试的代码:

private MyClass myClass = new MyClass();
private SqlDataAdapter adapter;
private SqlDataAdapter adapter2;

private void GestionCollections_Load(object sender, EventArgs e)
{
     adapter = new SqlDataAdapter("select Id_Collection ID, Libelle_Collection Collection,Libelle_Editeur Editeur from Collection_ left join Editeur on Id_Editeur = Collection_.Id_Editeur_Editeur", myClass.cnx);
     adapter.Fill(myClass.ds, "Collection_");

     adapter2 = new SqlDataAdapter("Select Id_Editeur ID,Libelle_Editeur Editeur from Editeur", myClass.cnx);
     adapter2.Fill(myClass.ds, "Editeur");
}

private void AjouterBarButton_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
    String newKeyWordCollectionName = ajoutCollection.KeyWordCollectionName;
    String newKeyWordAEditeurName = ajoutCollection.KeyWordEditeurName;        
    DataRow row = myClass.ds.Tables["Collection_"].NewRow();
    row[1] = newKeyWordCollectionName;

    foreach(var myRow in myClass.ds.Tables["Editeur"].AsEnumerable())
    {
         if (newKeyWordAEditeurName == myRow[1] as String)
              row[2] = (int)myRow[0];
    }
     myClass.ds.Tables["Collection_"].Rows.Add(row);
     SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
     adapter.Update(myClass.ds, "Collection_");

}
Run Code Online (Sandbox Code Playgroud)

Dam*_*ver 5

你不能SqlCommandBuilder在这里使用:

自动生成单表命令,用于协调对数据集所做的更改...

这里的关键词是“单表”。它无法从SELECT如何应用特定更新的语句中进行逆向工程(例如,如果您NULL从左连接右侧删除所有列,是否应该删除该行,或将每列设置为空。

您需要在 SqlDataAdapter 上编写适当的插入、更新和删除命令。


Saa*_*ary 5

更改您的选择查询并使用内部联接添加不同的查询 例如,有两个查询可让您了解我想告诉您的内容

查询错误

从inv_product_open_balc中按顺序选择iop.pob_id,iop.pob_product_id,iop.pob_qty,iop.pob_unit_id,iop.pob_rate,iop.pob_value,iop.pob_fiscalyear_id,p.product_desc作为顺序。 p.product_desc,例如“空气清新剂%”和iop.pob_fiscalyear_id = 3

正确查询

选择不同的iop.pob_id,iop.pob_product_id,iop.pob_qty,iop.pob_unit_id,iop.pob_rate,iop.pob_value,iop.pob_fiscalyear_id,(从 inv_product p中选择Product_desc,其中p.product_id = Iop.pob_product_open from在iop.pob_product_id = p.product_id上进行内部联接inv_product p,其中p.product_desc如“空气清新剂%”和iop.pob_fiscalyear_id = 3