private void button4_Click(object sender, EventArgs e)
        {
            SqlConnection con = new SqlConnection("Data Source=localhost;Initial Catalog=s1;Integrated Security=SSPI");
            SqlDataAdapter adap = new SqlDataAdapter();
            //float c = float.Parse(textBox5.Text);
            InitSqlDataAdapter(adap, con);
            DataSet ds = new DataSet();
            adap.Fill(ds, "book");
            MessageBox.Show(ds.Tables["book"].Rows.Count.ToString());
            updateDataSource(adap, ds);
            con.Close();        }
        private void InitSqlDataAdapter(SqlDataAdapter adapter, SqlConnection conn)
        {
            SqlCommand cmSel = null;
            cmSel = new SqlCommand("select * from book", conn);
            adapter.SelectCommand = cmSel;            cmSel = new SqlCommand("insert into book(编号,书名,价格)values(@id,@sm,@jg)", conn);
            cmSel.Parameters.Add("@id", SqlDbType.VarChar, 15, "编号");
            cmSel.Parameters.Add("@sm", SqlDbType.VarChar, 15, "书名");
            cmSel.Parameters.Add("@jg", SqlDbType.Money, 15, "价格");
            adapter.InsertCommand = cmSel;            cmSel = new SqlCommand("Update book set 书名=@sm,价格=@jg where 编号=@id", conn);
            cmSel.Parameters.Add("@id", SqlDbType.VarChar, 15, "编号");
            cmSel.Parameters.Add("@sm", SqlDbType.VarChar, 15, "书名");
            cmSel.Parameters.Add("@jg", SqlDbType.Money, 15, "价格");
            adapter.UpdateCommand = cmSel;            cmSel = new SqlCommand("delete from book where 编号=@id", conn);
            cmSel.Parameters.Add("@id", SqlDbType.VarChar, 15, "编号");
            adapter.DeleteCommand= cmSel;
 
        }
        private void  updateDataSource(SqlDataAdapter customers,DataSet decust)
        {
            int de=0;
            for (int i = 0; i < decust.Tables["book"].Rows.Count; i++)
            {
                DataRow dr = decust.Tables["book"].Rows[i];
                if (dr["编号"].ToString() == "002")
                {
                    dr["书名"] = "003";
                    dr["价格"] = 8.9f;
                }                if (dr["编号"].ToString().Trim() =="002")
                {
                    de = i;                    decust.Tables["book"].Rows.RemoveAt(de);
                   
                }  
            }
            dataGridView1.DataSource = decust.Tables[0];
            DataRow ndr = decust.Tables["book"].NewRow();
            ndr["编号"] = textBox3.Text;
            ndr["书名"] = textBox4.Text;
            ndr["价格"] = decimal.Parse(textBox5.Text);
            decust.Tables["book"].Rows.Add(ndr);            customers.Update(decust.Tables["book"]);
        }

解决方案 »

  1.   

    cmSel = new SqlCommand("delete from book where 编号=@id", conn);
    断点,看sql是什么内容 ID有值吗
      

  2.   

    cmSel.Parameters.Add(new sqlParameters("@jg", SqlDbType.Money, 15, "价格"));
      

  3.   

      decust.Tables["book"].Rows.RemoveAt(de);
    不是删除了decust.Tables["book"].Rows然后customers.Update(decust.Tables["book"]);
      

  4.   


    try catch 一下。  跟踪ID的值
      

  5.   

    LZ是说dataGridView1中显示的数据没有删除,还是说物理数据库中的数据没有删除?若是前者,请将
    customers.Update(decust.Tables["book"]);
    这句放到dataGridView1.DataSource = decust.Tables[0];
    之前。
      

  6.   

    DataSet ds = new DataSet();
    SqlDataAdapter sda;SqlCommandBuilder scb = new SqlCommandBuilder(sda);
    sda.Update(ds);
    this.dataGridView1.DataSource = ds.Tables[0];
      

  7.   

    cmSel = new SqlCommand("delete from book where 编号=@id", conn);
      cmSel.Parameters.Add("@id", SqlDbType.VarChar, 15, "编号");
      adapter.DeleteCommand= cmSel;
    跟踪看一下有没有ID传进去,看看SQL语句是什么
      

  8.   

              跟踪调试、  看看执行的sql语句  ? 
      

  9.   

    跟踪调试、 看看执行的sql语句 ?在查询分析器中看是否可以执行
      

  10.   

    把 decust.Tables["book"].Rows.RemoveAt(de);
    换成  decust.Table["book"].Rows[de].Delete();试一下