使用dataset修改数据可以这样://取得修改记录的id 
int id =Convert.ToInt16(textBoxID.Text);
  //使用选择方法取得需要修改的记录,注意返回的是数组。这里我们只需要第一条记录,使用后面要跟[0]
 DataSetStu.stuRow sturow = (DataSetStu.stuRow)dataSetStu.stu.Select("Id=" + id + "")[0];
 sturow.Name = textBoxName.Text;//修改字段值
 sturow.Rark = textBoxRark.Text;
 stuTableAdapter.Update(dataSetStu.stu);//写回数据库这样逐个字段修改没有问题。但是如果使用对象的方式,就无法执行修改啦。代码如下://取得修改记录的id 
int id =Convert.ToInt16(textBoxID.Text);
  //使用选择方法取得需要修改的记录,注意返回的是数组。这里我们只需要第一条记录,使用后面要跟[0]
 DataSetStu.stuRow sturow = (DataSetStu.stuRow)dataSetStu.stu.Select("Id=" + id + "")[0];
 sturow.Name = textBoxName.Text;//修改字段值
 sturow = Dss;//DSS是,用于取得文本框值,返回DataSetStu.stuRow sturow的get方法 
 stuTableAdapter.Update(dataSetStu.stu);//写回数据库
Dss属性的声明
    DataSetStu.stuRow dss;//说明数据集的行对象。
    public DataSetStu.stuRow Dss
        {
            get
            {           
                //用数据集创建新的行对象,并给行对象赋值,注意需要强制转换
                  dss = (DataSetStu.stuRow)dataSetStu.stu.NewRow();
                dss.Id =Convert.ToInt16( textBoxID.Text);
                dss.Name = textBoxName.Text;//给行对象中的字段赋值。
                  dss.Age = Convert.ToInt16(textBoxAge.Text);
                dss.ClassID = Convert.ToInt16(comboBoxClass.SelectedValue);
                dss.Sex = textBoxSex.Text;
                dss.Rark = textBoxRark.Text;           
                return dss; 
            }          }我使用跟踪调试,发现sturow 可以取得修改的值,但是就是无法修改数据,而且也不报错。郁闷中。请教各位啦,有没有什么好的方法解决,除啦这个方法,大家修改数据还有什么其他的好办法吗?

解决方案 »

  1.   

    我印象中dataset修改后要调用acceptchanges,这样才会更新到数据库中
      

  2.   

    调用Adapter.Update()就可以写回数据库。
    问题在与它只能逐个赋值才能更新。
    sturow.Name   =   textBoxName.Text;//修改字段值 
    sturow.Rark   =   textBoxRark.Text; 
    stuTableAdapter.Update(dataSetStu.stu);//写回数据库 如果是通过对象写入就不能更新
    sturow   =   Dss;//DSS是,用于取得所有文本框值,返回DataSetStu.stuRow数据集行对象的get方法   
    stuTableAdapter.Update(dataSetStu.stu);//写回数据库 
      

  3.   

    这个我明白啦, DataSetStu.stuRow   sturow   =   (DataSetStu.stuRow)dataSetStu.stu.Select( "Id= "   +   id   +   " ")[0]; 
    是获得dataset当中的一条记录的引用。而sturow  = Dss 实际上是传递了一个新对象的引用。所以它不能对dataset修改。update也就不会写入数据库了。所以只有通过sturow.Rark = textBoxRark.Text; 赋值才能修改。