我在程序中添加删除表内容调试都可以通过,但是数据库中的内容都没变,是不是因为没添加数据源,可是添加就是不成功,调试时又能显示数据库内容,到底是怎么回事?
 private void Form1_Load(object sender, EventArgs e)
        {
           SqlConnection conn = new SqlConnection( "user id=hxh;password=20080712;initial catalog=hxh;server=XINAN0107\\SQLEXPRESS"); 
           conn.Open();
           string strCmd;
           strCmd="SELECT * FROM Student";
           SqlDataAdapter da = new SqlDataAdapter(strCmd,conn);
           DataTable dt = new DataTable(); 
           da.Fill(dt);
               dt.Rows[1]["age"] = "9";               DataRow row = dt.NewRow();
               row["name"] = "d";
               row["age"] = "21";
               row["course"] = "物理";
               dt.Rows.Add(row);               dt.Rows[0].Delete();               textBox1.Text = dt.Rows[3]["name"].ToString();
               textBox2.Text = dt.Rows[3]["age"].ToString();
               textBox3.Text = dt.Rows[3]["course"].ToString();
               
                          }

解决方案 »

  1.   

    用SqlDataAdapter.Update()的方法更新数据库
      

  2.   

    加了da.Update(dt);有异常:当传递具有已删除行的 DataRow 集合时,更新要求有效的 DeleteCommand
      

  3.   

    表也要AcceptChanges 下吧.而且好像不是updata吧
      

  4.   


    因为你缺少创建Delete的SQL语句,在Update之前加一名就行了:
    SqlDb.SqlDbCommandBuilder cbdt = new SqlDb.SqlDbCommandBuilder(da); 
    da.Update(dt); 
      

  5.   

    关于这个问题请参考这里,
    http://blog.csdn.net/zhzuo/archive/2004/08/06/67016.aspx
    http://blog.csdn.net/zhzuo/archive/2004/08/06/67037.aspxhttp://blog.csdn.net/zhzuo/archive/2005/01/03/238273.aspx
      

  6.   

     private void Form1_Load(object sender, EventArgs e)
            {
               SqlConnection conn = new SqlConnection( "user id=hxh;password=20080712;initial catalog=hxh;server=XINAN0107\\SQLEXPRESS"); 
               conn.Open();
               SqlCommand comm=new SqlCommand("SELECT * FROM Student",conn);
               SqlDataAdapter da = new SqlDataAdapter(comm);
               DataSet ds = new DataSet();
               da.Fill(ds, "Student");
               SqlCommandBuilder cb = new SqlCommandBuilder(da);
               DataTable dt = ds.Tables["Student"];
               
                   dt.Rows[1]["age"] = "9";                DataRow row = dt.NewRow();
                   row["name"] = "d";
                   row["age"] = "21";
                   row["course"] = "物理";
                   dt.Rows.Add(row);               dt.Rows[0].Delete();               textBox1.Text = dt.Rows[3]["name"].ToString();
                   textBox2.Text = dt.Rows[3]["age"].ToString();
                   textBox3.Text = dt.Rows[3]["course"].ToString();               da.Update(dt);         }
    加了SqlCommandBuilder cb = new SqlCommandBuilder(da);并吧DataTable放入DataSet中,调试出现异常:da.Update(dt);这句对于不返回任何键列信息的 SelectCommand,不支持 DeleteCommand 的动态 SQL 生成
      

  7.   

     private void Form1_Load(object sender, EventArgs e)
            {
               SqlConnection conn = new SqlConnection( "user id=hxh;password=20080712;initial catalog=hxh;server=XINAN0107\\SQLEXPRESS"); 
               conn.Open();
               SqlCommand comm=new SqlCommand("SELECT * FROM Student",conn);
               SqlDataAdapter da = new SqlDataAdapter(comm);
               DataSet ds = new DataSet();
               da.Fill(ds, "Student");
               SqlCommandBuilder cb = new SqlCommandBuilder(da);
               DataTable dt = ds.Tables["Student"];
               
                   dt.Rows[1]["age"] = "9";                DataRow row = dt.NewRow();
                   row["name"] = "d";
                   row["age"] = "21";
                   row["course"] = "物理";
                   dt.Rows.Add(row);               dt.Rows[0].Delete();               textBox1.Text = dt.Rows[3]["name"].ToString();
                   textBox2.Text = dt.Rows[3]["age"].ToString();
                   textBox3.Text = dt.Rows[3]["course"].ToString();               da.Update(dt);
            }
    添加了SqlCommandBuilder cb = new SqlCommandBuilder(da);把DataTable放入DataSet,调试出现异常: da.Update(dt);这句对于不返回任何键列信息的 SelectCommand,不支持 DeleteCommand 的动态 SQL 生成。