1.close和dispose都是对资源的调整
close:关闭资源,但没有真正的释放资源
dispose:彻底的释放资源
SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=NewSystem;User ID=sa;Password=123456");
con.Open();
con.Close();
con.Open();
con.Dispose();
con.Open();
close里的connection可以重新open,dispose的不行,虽然sqlconnection对象还在,但是因为connectionstring清空了,提示错误,找不到NewSystem,这时如果在dispose后给connectionString重新赋值,就不会报错。
从百科里找的理解是:close()方法可以回滚任何挂起的事务,然后她将连接释放到连接池,或者在连接池被禁用的情况下关闭连接,应用程序可以多次调用close,不会产生任何异常
dispose()方法就相当于清空了值,值为null;
2.session
session是一次浏览器和服务器的交互会话,就像两个人之间打招呼,Hello,hi!这就是一次会话。session就是对这次会话进行存储,在牛腩里登录界面里用到session就是来判断用户是否登陆的。
为什么要来存储判断呢,因当我们打开的网页都用到了http协议,而这个协议是无状态的,每一次请求都和上次没有关系。这个时候,如果我在http://localhost:28414/Login.aspx中登陆,而我在http://localhost:28414/list.aspx中也可以登陆,但list表是login里的一部分,当我list登陆并不能读取login是否登陆,只能去数据库中查询登录状态,这时候就会造成数据库压力。而session,就解决了list和login两次对http的请求关联,让他们产生联系,这两个页面都能读取到我的登陆信息。
3.Ispostback
这个对牛腩老师简单到不想讲的问题,还是理解一下。
Page.IspostBack表示当前请求是否第一次打开,在第一次打开的时候为false,其他时候都是true;
而我们见到的都是if(!Ispostback)用非表示页面首次加载,而if(Ispostback)表示每次都要加载的代码
下面的代码表示只需要加载一次:
if (!Page.IsPostBack)
{
string caid = Request.QueryString["caid"];
DataTable dt = new NewsManager().SelectByCaId(caid);
//设置类别名称
lbl.Text = dt.Rows[0]["name"].ToString();
//绑定新闻列表
gvNews.DataSource = new NewsManager().SelectByCaId(caid);
gvNews.DataBind();
}