最近自己学习ASP.NET,书中有段代码有点想不通,
代码段如下。不是说DataReader每次只能在内存中保留一行吗,那这里最后几行GridView1的数据源绑定SqlDataReader有用吗?什么作用?是不是书上错了。
PS:如果我想插入一条数据后能自动刷新GridView1的话应该怎么办?
SqlConnection con = new SqlConnection();
con.ConnectionString = "Data Source=localhost;Initial Catalog=yuangong;Integrated Security=True;";
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "insert into yuangong_info values(" + this.TextBox1.Text + ",'" + this.TextBox2.Text + "','" + this.TextBox3.Text + "','" + this.TextBox4.Text + "','" + this.TextBox7.Text + "','" + this.TextBox6.Text + "')";
cmd.Connection = con;
con.Open();
SqlDataReader sdr = cmd.ExecuteReader();
this.GridView1.DataSource = sdr;
this.GridView1.DataBind();
con.Close();
代码段如下。不是说DataReader每次只能在内存中保留一行吗,那这里最后几行GridView1的数据源绑定SqlDataReader有用吗?什么作用?是不是书上错了。
PS:如果我想插入一条数据后能自动刷新GridView1的话应该怎么办?
SqlConnection con = new SqlConnection();
con.ConnectionString = "Data Source=localhost;Initial Catalog=yuangong;Integrated Security=True;";
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "insert into yuangong_info values(" + this.TextBox1.Text + ",'" + this.TextBox2.Text + "','" + this.TextBox3.Text + "','" + this.TextBox4.Text + "','" + this.TextBox7.Text + "','" + this.TextBox6.Text + "')";
cmd.Connection = con;
con.Open();
SqlDataReader sdr = cmd.ExecuteReader();
this.GridView1.DataSource = sdr;
this.GridView1.DataBind();
con.Close();
SqlConnection con = new SqlConnection();
con.ConnectionString = "Data Source=localhost;Initial Catalog=yuangong;Integrated Security=True;";
con.Open();
string comText = "insert into yuangong_info values(" + this.TextBox1.Text + ",'" + this.TextBox2.Text + "','" + this.TextBox3.Text + "','" + this.TextBox4.Text + "','" + this.TextBox7.Text + "','" + this.TextBox6.Text + "')";
SqlCommand cmd = new SqlCommand(comText.con);
cmd.ExecuteNonQuery()//影响行
con.Close();
SqlDataReader sdr = cmd.ExecuteReader();
this.GridView1.DataSource = sdr;
this.GridView1.DataBind();
这段是干嘛的,有用么
把绑定数据放到你的load当中去,这样你Click之后页面会刷新load重新加载,这样就可以了
也可以用DataSet作为数据源,道理相近。
SqlDataAdapter da=new SqlDataAdapter();
DataSet ds=new DataSet();
da.Fill(ds);
this.GridView1.DataSource = ds;
this.GridView1.DataBind();
还有就是如果ExecuteReader()执行更新语句的话将不会返回任何结果集?所以
SqlDataReader sdr = cmd.ExecuteReader();
this.GridView1.DataSource = sdr;
this.GridView1.DataBind();
这段代码执行后其实是刷新了GridView1但是因为没结果所以GridView1什么显示都没我这么理解对不?
区别:绑定到DataSet可以实现GridView的分页及排序等各种功能,对数据的操作比较强;
绑定到DataReader可以实现其显示,但是不能分页及排序,原因是DataReader的特性。但从数据库中取值速度快!通过SqlDataSourse源控件可以简单实现无代码的绑定。虽然很强大,但是也有不足。GridView1.DataBind();——实现GridView控件绑定数据源,可以在数据源变化后再次调用,以重新绑定数据源,实现对GridView1的显示刷新。
public vid BindGridView()
{
SqlConnection con = new SqlConnection();
con.ConnectionString = "Data Source=localhost;Initial Catalog=yuangong;Integrated Security=True;";
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "insert into yuangong_info values(" + this.TextBox1.Text + ",'" + this.TextBox2.Text + "','" + this.TextBox3.Text + "','" + this.TextBox4.Text + "','" + this.TextBox7.Text + "','" + this.TextBox6.Text + "')";
cmd.Connection = con;
con.Open();
SqlDataReader sdr = cmd.ExecuteReader();
this.GridView1.DataSource = sdr;
this.GridView1.DataBind();
con.Close();
}
在执行插入命令后再调用该函数就可以了。。
BindGridView();