问题描述:我用的是VS2008,我在窗体上添加了datagridview控件,用于显示数据表的信息,数据库的连接已成功,并且查询,修改已成功实现!    但是我在delete信息时出现问题[/color[color=#FF0000]](datagridview上的信息可以删除,但是数据库中数据表的信息却无法删除)代码如下:
                int row = dataGridView1.CurrentRow.Index;
                string  stt = ds.Tables[0].Rows[row]["图书编号"].ToString();
                ds.Tables[0].Rows[row].Delete();               command.CommandText = "delete from 图书表  where 图书编号='stt' ";   //command 是  SQLCOMMAND 对象。
                adapter.SelectCommand = command;  //adapter 是 SqlDataAdapter    对象   
               ds.AcceptChanges();     //   ds是  dataset对象
                adapter.Fill(ds)  ; 
                adapter.Update(ds); 
不知道问题出现在哪里请各位高手帮帮忙,急用,谢谢!!!(代码参考了工具书)

解决方案 »

  1.   

    写错了string stt = ds.Tables[0].Rows[row]["图书编号"].ToString().Trim();command.CommandText = "delete from 图书表 where 图书编号='"+stt+"'"; //command 是 SQLCOMMAND 对象。
      

  2.   

    你可以使用SqlCommandBuilderDataSet ds = new DataSet();
      SqlDataAdapter sda;
      private void btn1_Click(object sender, EventArgs e)
      {
      ds.Tables.Clear();
      sda = new SqlDataAdapter("select * from Tb", conn);
      sda.Fill(ds);
      this.dataGridView1.DataSource = ds.Tables[0];
      }  private void btn2_Click(object sender, EventArgs e)
      {
      SqlCommandBuilder scb = new SqlCommandBuilder(sda);
      sda.Update(ds);
      this.dataGridView1.DataSource = ds.Tables[0];
      }
      

  3.   

    command.CommandText = "delete from 图书表 where 图书编号='stt' "; //command 是 SQLCOMMAND 对象。
    改成
    command.CommandText = "delete from 图书表 where 图书编号='"+stt+"'"; //command 是 SQLCOMMAND 对象。
      

  4.   

    command.CommandText = "delete from 图书表 where 图书编号='"+stt+"' "; 
      

  5.   

     sql语句中加入变脸是‘“+变量+”’
      

  6.   

    ds.AcceptChanges(); // ds是 dataset对象
    adapter.Fill(ds) ;  
    adapter.Update(ds);  --------------
    哪本书参考来的?这3句真是无厘头ds是之前Fill得到的吧,Fill之后再一次Fill不就把Delete的RowState给抹掉了吗?
    改为如下:adapter.Fill(ds) ;
    adapter.Update(ds); 
    ds.AcceptChanges(); AcceptChanges应该在Update之后,这句的作用表示ds的数据更新DB完毕。
      

  7.   

    补充下,Update是根据DataRow.RowState来分别调用InsertCommand,UpdateCommand,DeleteCommand的,如果RowState不对,更新当然不会成功。
      

  8.   

    又看了遍lz的代码,lz在Fill之后要用CommandBuilder把其他的Command创建出来,这样就不用自己写delete sql语句了。