<%@ Page Language="C#" %>
<%@Import Namespace="System.Data"%>
<%@Import Namespace="System.Data.OleDb"%>
<Script runat="server">
void Page_Load(Object Src, EventArgs E) { 
OleDbConnection Conn=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;"+
                    "Data Source="+Server.MapPath("person.mdb"));
Conn.Open();
string strSQL="select * from grade;";
OleDbDataAdapter da=new OleDbDataAdapter(strSQL, Conn);
DataSet ds = new DataSet();
da.Fill(ds,"grade");
DataTable dt = ds.Tables["grade"];
DataRow row = dt.NewRow();
row["学号"] = "199";
row["姓名"] = "小布什";
row["数学"] = 58;
dt.Rows.Add(row);
OleDbCommandBuilder cb = new OleDbCommandBuilder(da);
da.Update(ds,"grade");
dg.DataSource = ds.Tables["grade"].DefaultView;
dg.DataBind();
Conn.Close();
}
</script>
<ASP:DataGrid id="dg" runat="server"/>
在这里,OleDbCommandBuilder cb = new OleDbCommandBuilder(da);
是干嘛用的,为什么cb定义了以后都没有用过?dt是更新了以后的表,但da.Update(ds,"grade")这个更新"grade"表过程中为什么没有出现dt?而是ds

解决方案 »

  1.   

    1.在这里,OleDbCommandBuilder cb = new OleDbCommandBuilder(da);是干嘛用的
    这是将cb绑定到da,da调用Update方法的时候,会自动从cb获取UpdateCommand/InsertCommand2.da.Update(ds,"grade")这个更新"grade"表过程中为什么没有出现dt?而是ds
    在这里,这两个都是引用到ds的grade表,因此是等效的
      

  2.   

    可以跟我讲一下问什么dataset更新时要用到CommandBuilder,假如以上程序中没有OleDbCommandBuilder cb = new OleDbCommandBuilder(da);这一行代码会怎样?