最近自己学习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();

解决方案 »

  1.   


    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();
            
      

  2.   

    数据源一般是DataTable之类的吧插入一条数据后得到的SqlDataReader会是什么样的哦??感觉有点毛病~~
      

  3.   

    书上写的就是我发的那段代码啊。作用是向数据库中插入一行数据,我想问的是其中
            SqlDataReader sdr = cmd.ExecuteReader();
            this.GridView1.DataSource = sdr;
            this.GridView1.DataBind();

    这段是干嘛的,有用么
      

  4.   

    这段是把数据库里的数据绑定到你的GridView1中
    把绑定数据放到你的load当中去,这样你Click之后页面会刷新load重新加载,这样就可以了
      

  5.   

    DataReader可以认为是个数据读取器,把数据读出来让控件显示。就是这样。
    也可以用DataSet作为数据源,道理相近。
     SqlDataAdapter da=new SqlDataAdapter();
      DataSet ds=new DataSet();
      da.Fill(ds);
      this.GridView1.DataSource = ds; 
      this.GridView1.DataBind(); 
      

  6.   

    好像明白了,就是说DataReader也可以做数据源是吧?
    还有就是如果ExecuteReader()执行更新语句的话将不会返回任何结果集?所以
    SqlDataReader sdr = cmd.ExecuteReader();
            this.GridView1.DataSource = sdr;
            this.GridView1.DataBind(); 
    这段代码执行后其实是刷新了GridView1但是因为没结果所以GridView1什么显示都没我这么理解对不?
      

  7.   

    GridView可以绑定到DataSet,DataReader集合中
    区别:绑定到DataSet可以实现GridView的分页及排序等各种功能,对数据的操作比较强;
          绑定到DataReader可以实现其显示,但是不能分页及排序,原因是DataReader的特性。但从数据库中取值速度快!通过SqlDataSourse源控件可以简单实现无代码的绑定。虽然很强大,但是也有不足。GridView1.DataBind();——实现GridView控件绑定数据源,可以在数据源变化后再次调用,以重新绑定数据源,实现对GridView1的显示刷新。
      

  8.   

    把绑定GridView写成一个函数,例如:
    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();
      

  9.   

    这样写很不好,真的哪有直接用datareader,还是放dataset或者实体类里再绑定比较好。