<%@ 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
<%@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
这是将cb绑定到da,da调用Update方法的时候,会自动从cb获取UpdateCommand/InsertCommand2.da.Update(ds,"grade")这个更新"grade"表过程中为什么没有出现dt?而是ds
在这里,这两个都是引用到ds的grade表,因此是等效的