还是新建一个SqlCommand划算...,

解决方案 »

  1.   

    如果先用SqlCommand,在dataset中得到的表是个新表(数据库中没有),我想在dataset的表中插入一条记录,那可如何实现?
      

  2.   

    关于表间关系:去看一下DataSet.Relations(DataRelations)、DataTable.ChildRelations、DataTable.ParentRelations。关于数据更新:去看一下DataAdaptor。看完了回来继续问:)
      

  3.   

    1、添加一条记录是针对DataTable
    2、过滤用DataView
      

  4.   

    DataRow r=ds1.Tables[0].NewRow();
    r[0]="001";
    .
    ds1.Tables[0].Rows.Add(r);
      

  5.   

    你如果要实现多表查询有两种情况:1,你是要做一个视图一样的东西,把几个数据表的内容放到一个DataTable中,那么你就在适配器的SelectCommand语句中用你相应的sql语句写,然后填充相应的DataTable。不过这样一般情况下是不允许做记录修改的(包括添加),因为数据库中的视图也是不建议这样做的,因为这样做很可能导致数据不完整性。如果你真的要要这样做,那就得给适配器
    (OleDbDataAdapter)的另外三个命令对象(UpdateCommand,InsertCommand,DeleteCommand)
    手工配置了,因为向导配置是不会配的(多表时,不建议修改,并且向导不知道怎样配,太复杂了)
    如果用OleDbCommandBuilder更不会完成这项工作了,所以得自己配。
     情况 2 你是把这几个表放在相应的几个DataTable中,然后建立关联。不过你提到了left join
    就好象不是这种情况了。
      插入一行新行的操作如下:
     DataRow  dataRow = dataTable.NewRow();
     dataRow[0] = 1;
     dataRow[1] = "name1";
     dataTable.Rows.Add(dataRow);
      

  6.   

    同意 zhixuan(轩)兄,(OleDbDataAdapter)的另外三个命令对象(UpdateCommand,InsertCommand,DeleteCommand),其操作对象只能局限于一个表,如果是多表关联的话,就不能用这三个命令对象了。
      

  7.   

    如果dataset中datatable是通过简单的 select A,B,C.. from table1 where <condition>单表查寻得到的,那么datatable中的记录和数据库表中记录存在对应关系,因此,通UpdateCommand,InsertCommand,DeleteCommand可以对dataset进行操作,通过dataadapter的update对数据库数据进行更新。
    但是如果通过多表查寻得到的dataset,就不能用UpdateCommand,InsertCommand,DeleteCommand了,这样理解对吧?
    我如果想得到多表查寻的结果,并且还要对相关的记录进行删除、更新,插入操作,是不是先使用dataset中对多表查寻中的每个表建立datatable,然后还要建立一个datatable,用来存储多表查寻的结果?比如,数据库中有A,B2个表,我在dataset中就得有datatableA和datatableB,还得有datatableC,datatableC用来存储对A和B多表查寻的结果,是这样吗?如果A和B的数据多的话,有出来个C,岂不是耗资源?