grideview 绑定问题
我想知道:后台运行时,什么时候打开的数据库,下面这段代码 bind()
前台:
<asp:GridView ID="GridView1" runat="server" CellPadding="4" ForeColor="#333333"
GridLines="None">
</asp:GridView>
后台:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
namespace Grideview
{
public partial class Griedview : System.Web.UI.Page
{
private SqlConnection conn;
private SqlCommand comm;
private string connstring = ConfigurationManager.ConnectionStrings[1].ConnectionString;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
bind();
}
}
/// <summary>
/// 数据绑定
/// </summary>
public void bind()
{
string sql = "select * from teacher";
this.conn = new SqlConnection(connstring);
SqlDataAdapter adapter = new SqlDataAdapter(sql, conn);
DataSet ds = new DataSet();
adapter.Fill(ds, "teacher");
this.GridView1.DataSource = ds;
GridView1.DataKeyNames = new string[] { "t_id" };//主键
this.GridView1.DataBind();
conn.Close();
}
}
------解决方案--------------------using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
namespace Grideview
{
public partial class Griedview : System.Web.UI.Page
{
private SqlConnection conn;
private SqlCommand comm;
private string connstring = ConfigurationManager.ConnectionStrings[1].ConnectionString;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
bind();
}
}
/// <summary>
/// 数据绑定
/// </summary>
public void bind()
{
string sql = "select * from teacher";
this.conn = new SqlConnection(connstring);
SqlDataAdapter adapter = new SqlDataAdapter(sql, conn);
DataSet ds = new DataSet();
adapter.Fill(ds, "teacher");//适配器自动判断打开的
this.GridView1.DataSource = ds;
GridView1.DataKeyNames = new string[] { "t_id" };//主键
this.GridView1.DataBind();
conn.Close();
}
}
------解决方案--------------------从这句开始打开的,Fill代码里面应该执行了打开、读取数据过程
------解决方案--------------------SqlDataAdapter 读取数据时不需要 sqlconnection 的状态为 open() 它在fill(ds)读取数据时会自动打开和关闭
------解决方案--------------------adapter.Fill(ds, "teacher");这行代码打开的数据库。
在ADO.NET当中,适配器对象如果调用Fill()方法之前与数据库的连接已经关闭,则自动打开它以便检索数据,执行完毕后再自动将其关闭。
通俗一点来说,Fill方法能够自动打开、自动关闭!