DataTable dt=this.GetTable();//这是我自己写的一个涵数,返回一个DATATABLE
SqlConnection sqlcon=new SqlConnection(sqlconstr);
sqlcon.Open(); String sqlstr="select part_no,part_owner,part_nationality,part_id,shared,transaction_no from part_owner where transaction_no=" + "'" + "-448145" + "'";
DataTable dt2 = new DataTable();
SqlDataAdapter da=new SqlDataAdapter(sqlstr,sqlcon);
DataSet ds=new DataSet();
SqlCommandBuilder cb;
cb=new SqlCommandBuilder(da); //使用关联的 SqlDataAdapter 对象初始化 SqlCommandBuilder 类的新实例
da.Fill(dt2);
dt2.Clear();
dt2 =dt;
da.Update(dt2);
SqlConnection sqlcon=new SqlConnection(sqlconstr);
sqlcon.Open(); String sqlstr="select part_no,part_owner,part_nationality,part_id,shared,transaction_no from part_owner where transaction_no=" + "'" + "-448145" + "'";
DataTable dt2 = new DataTable();
SqlDataAdapter da=new SqlDataAdapter(sqlstr,sqlcon);
DataSet ds=new DataSet();
SqlCommandBuilder cb;
cb=new SqlCommandBuilder(da); //使用关联的 SqlDataAdapter 对象初始化 SqlCommandBuilder 类的新实例
da.Fill(dt2);
dt2.Clear();
dt2 =dt;
da.Update(dt2);
1只能在单个表中进行操作
2制定给DataAdapter对象的SelectCommand属性的SQL语句必须要返回一个包含唯一识别返回记录的值的列
3如果selectcommand属性变化了,必须调用DataAdapter对象的RefreshSchema()方法来更新数据
当调用DataTable.Rows.Add, DataTable.Rows.Insert , Delete 等方法或者更改DataRow里面的字段的值的时候自动的记录行的状态(只读属性RowState),update的时候就是遍历这些发生更改的行,自动生成sql命令运行;dt2.Clear() 清空了DataTable 对象,不是上面的操作,所以无效;
换成for(int i=0;i<dt2.Rows.Count;i++)
dt2.Rows[i].Delete();