oledbdataadapter1填充了一个dataset1,
 
DataTable dt = dataset.Table[0].Select("...");dt = dt.Select("...");多次select后,在又给dt.rows[][]赋值后最后可以用
 oledbdataadapter.Update(dt)讲dt写数据库吗?

解决方案 »

  1.   

    DataRow[] dr=dt.Select..
    oledbcommandbuilder更新数据库
      

  2.   

    DataRow[] dr=dt.Select..
    oledbcommandbuilder更新数据库
      

  3.   

    楼上的,我定义dr后,我对dr赋值,修改等,还能用oledbcommandbuilder更新数据库吗?
      

  4.   

    只要不是Clone()或者手动Copy() DataTable,修改引用的DataRow都会影响到原DataTable,就可以用DataTable.GetChanges()获得修改后的DataRow进行Update。说的自己都绕了汗,两个字:可以。
      

  5.   

    再接着一个问题:
    这样样写
     DataTable table = dt.Tables[0];
     bindingSource1.DataSource = table;
    dataGridView1.DataSource = bindingSource1;
    datagridview1的数据修改了,dt的数据会相应的更改吗?
      

  6.   

    lz, 何不再动手实验一下 dt.GetChanges() ?
      

  7.   

    无论经过几层怎么绑定,只要是引用。都是可以反映的。        private void Form1_Load(object sender, EventArgs e)
            {
                DataTable data = new DataTable();
                data.Columns.Add("name");
                data.Columns.Add("class");
                data.Rows.Add(new object[] { "csdn", "A" });
                data.Rows.Add(new object[] { "javaeye", "A" });
                data.AcceptChanges();            bindingSource1.DataSource = data;
                this.dataGridView1.DataSource = bindingSource1.DataSource;        }        private void button1_Click(object sender, EventArgs e)
            {
                DataTable data = (DataTable)bindingSource1.DataSource;
                DataTable changedData = data.GetChanges();
                if (changedData != null && changedData.Rows.Count > 0)
                    MessageBox.Show(changedData.Rows.Count.ToString());        }