SqlDataAdapter daRegister=new SqlDataAdapter(strSql,cnnRegister);
daRegister.Fill(dsRegister);//删除一行
dsRegister.Tables[0].Rows[4].Delete();
dsRegister.Tables[0].AcceptChanges();daRegister.Update(dsRegister);执行后数据依然存在,为什么啊?谢谢!

解决方案 »

  1.   

    你那个只是删除了table对象中的行,而数据库中的行需要你自己写SQL语句去删除,
      

  2.   

    那这样的话,绑定到datagrid的时的删除也只是能反映到datagrid中,而不能反映到了数据库中了?
      

  3.   

    最好用Command对象来删除建议楼主先看看MSDN
      

  4.   

    刪除的只是table中的行而已,而實際數據中沒有刪除。
      

  5.   

    SqlCommand dc = new SqlCommand(sql, 数据库连接);
    dc.ExecuteNonQuery();
      

  6.   


    那绑定到datagrid的时候,取得用户所要删除的行,
    int intRow=grdData.CurrentCell.RowNumber;而这时我想删除这一行,并且在数据库中删除,
    这样的话就不能通过
    dsRegister.Tables[0].Rows[intRow].Delete();
    dsRegister.Tables[0].AcceptChanges();这种方式来删除了?必须要用SQL语句吗?本人初学,望大家多多指教。
      

  7.   

    SqlDataAdapter daRegister=new SqlDataAdapter(strSql,cnnRegister);
    SqlCommandBuilder cb = new SqlCommandBuilder(daRegister);
    daRegister.Fill(dsRegister);
    dsRegister.Tables[0].Rows[4].Delete();
    dsRegister.Tables[0].AcceptChanges();daRegister.Update(dsRegister);
    应该可以了
    daRegister.Update(dsRegister);,有return value,你应该加判断
    也可能有exception,你也要处理的
      

  8.   

    没有产生错误,并且datagrid控件中的行是减少了,但数据库中没变。
    SqlCommandBuilder cb = new SqlCommandBuilder(daRegister);声明了这个对象,但没有使用,对数据库不会产生影响啊
      

  9.   

    qlDataAdapter daRegister=new SqlDataAdapter(strSql,cnnRegister);
    daRegister.Fill(dsRegister);//删除一行
    dsRegister.Tables[0].Rows[4].Delete();
    //dsRegister.Tables[0].AcceptChanges();daRegister.Update(dsRegister);楼主,不要写这句话:dsRegister.Tables[0].AcceptChanges();
    更新就可以了
      

  10.   

    楼上说得不错
    不过还是要加
    SqlCommandBuilder cb = new SqlCommandBuilder(daRegister);
    不然系统出错,没有update/delete command不过为什么AcceptChanges以后就不能update了?
      

  11.   

    又试了一下,有点明白了
    DataAdapter.Update应该至是update changed rows
    如果已经AcceptChanges
    DataAdapter.GetChanges() return 0 row
    不能再upate
    SqlCommandBuilder cb = new SqlCommandBuilder(daRegister);
    daRegister.Fill(dsRegister);dsRegister.Tables[0].Rows[0].Delete();
    if (daRegister.Update(dsRegister.GetChanges()) >0)
    dsRegister.Tables[0].AcceptChanges();
      

  12.   

    又试了一下,有点明白了
    DataAdapter.Update应该至是update changed rows
    如果已经AcceptChanges
    DataAdapter.GetChanges() return 0 row
    不能再upate
    SqlCommandBuilder cb = new SqlCommandBuilder(daRegister);
    daRegister.Fill(dsRegister);dsRegister.Tables[0].Rows[0].Delete();
    if (daRegister.Update(dsRegister.GetChanges()) >0)
    dsRegister.Tables[0].AcceptChanges();