解决方案 »

  1.   

    你的adapter没有设置SelectCommand,也就是没有查询过,要查询过才能生成delete语句,
      

  2.   


    是不是再加一句SeIectCommand(adapter);
    那在数据表中还需不需要设置主键?
      

  3.   

    为什么要设置SeIectCommand语句,它跟其他两句有什么区别?
      

  4.   

    设置如下语句:
    SqlCommandBuilder cb = new SqlCommandBuilder(sda);//自动生成相应的命令,这句很重要
      

  5.   


    SqlConnection conn = null;
                string sql = "select *From Course";            DataTable dt = null;
                DataSet ds = new DataSet();            try
                {   
                    conn = new SqlConnection(connectionString);
                    SqlDataAdapter sda = new SqlDataAdapter();
                    sda.SelectCommand = new SqlCommand(sql, conn);
                    SqlCommandBuilder cb = new SqlCommandBuilder(sda);//自动生成相应的命令,这句很重要                conn.Open();                sda.Fill(ds);
                    dt = ds.Tables[0];
                    dt.PrimaryKey = new DataColumn[] { dt.Columns["ID"] };                dt.Rows[5].Delete();
                    DataRow[] drs = dt.Select(null, null, DataViewRowState.Deleted);//或者搜索之后再更新
                    sda.Update(drs);                dt.AcceptChanges();
                }
                catch (SqlException ex)
                { }
                finally
                {
                    conn.Close();
                }