大大毛 的笔记

  DDM's Note

哪怕没有办法一定有说法,
就算没有鸽子一定有乌鸦,
固执无罪 梦想有价,
让他们惊讶.

posts - 14, comments - 23, trackbacks - 0, articles - 58
   :: 首页 ::  :: 联系 ::  :: 管理

ASP.NET学习笔记--01

Posted on 2006-08-07 17:51 大大毛 阅读(312) 评论(0)  编辑  收藏 所属分类: ASP.NET

   刚刚开始学习ASP.NET,环境:XP,VS2005,SQLServer2000,学习资料:北大青鸟的视频教程

   ASP.NET与ASP的区别
      asp.net 运行于 .net 框架之上,经过了伪编译,而 asp 则是直接运行在IIS上的,在调用时由DLL进行解释;
      asp.net 支持三种开发语言:vb.net,c#,j#,而 asp 仅支持 vbscript 的语法;
      asp.net 提供了控件支持,而 asp 则没有;
      asp.net 支持OOP,代码也是按类来组织的,asp 只能依靠精巧的代码实现;
      asp.net 在页面的处理上采用了VB的事件驱动,大大简化了开发难度,asp 依靠的是手工驱动;
      asp.net 提供的VIEWSTATE机制,使得页面元素可以保持原有的值,asp 必须依靠手工代码;
      asp.net 使用了代码分离,asp 则没有,现在老板就能看清楚你写的那堆垃圾在哪儿了;
      asp.net 的IDE功能上强大许多,不过在HTML元素的设计上成了一只鸡肋,许多地方俺还是习惯手工改写;

   ASP.NET提供的控件
      提供的常用控件都在VS工具箱的"标准"及"HTML"栏中,所谓标准控件就是指服务器控件,一拖出来就有个 runas="server" 的属性,当然HTML控件也可以加上这个属性变身为服务器控件,一旦拥有这个runas那么该控件就会成为类的一项属性,在类成员中使用this指针就可以直接引用,果然是方便快捷。不过界面元素的动作也相应着发生了变化,如果是普通的HTML元素,那么响应它事件的只能是本地 script 代码,而一旦成为服务器控件,那么所有针对它的事件响应都会在服务器端完成。

   常用的事件:
protected void Page_Load(object sender, EventArgs e) {
}
      这个事件最为常用,在设计器中双击页面就会切到该事件方法中来。该事件发生在页面每次被装载时,不过这里的Load跟本地App的Load不一样,由于HTTP的特性决定了客户/服务端的联接不可能是持续和双向的。因此客户端浏览器每发一次请求,服务端就会Load页面一次。
      这个事件通常配合 Page.IsPostBack 属性使用,该属性在Load完成之后才会被设为 true 值,因此只有第一次的Load,该属性值才为 false,看教程中的示例,需要初始化环境时,需要将初始化代码置入 if(!Page.IsPostBack) 块中。

protected void Page_Init(object sender, EventArgs e) {
}
      Page_Init 事件在 Load 事件之前发生,页面在加载时的顺序是 控件Init(),页面Init(),页面Load(),控件Load()


   ASP.NET从提交的数据中取值
1  string userName = Request["userName"].ToString();

2  string userName = Request.Form.Get("userName");

3  string userName = Request.QueryString["userName"];

      取值的方法与 asp 相同。
      第1行方法适用于 Post/Get 两种提交方式;第2行只能用于 Post 提交,这里使用了集合的Get方法;第3行只能用于 Get 提交,这里使用另外一种获取集合成员的方法。

   ASP.NET查询MsSQL数据库
      需要引用的命名空间(相当于JAVA中的包):System.Data.SqlClient;
      步骤:
         1.新建一个 SqlConnection 连接对象,并打开;
            new SqlConnection("server=服务的地址;database=数据库名;uid=sa;pwd=");
            con.Open();
         2.新建一个 SqlCommand 命令对象;
            new SqlCommand(SQL语句,con);
         3.通过调用 SqlCommand 对象的方法获得数据。
            例如:
            SqlDataReader sdr = cmd.ExecuteReader();   //获得一个只向前的游标
            while(sdr.Read()) {
               ...
            }
         4.释放资源
            使用 using 语句,属于 .net 的专有语法了,在块的结束将由 using 语法调用 IDisposable 接口定义的 Dispose()方法。因此包含在 using 语句内的对象都应该实现 IDisposable 接口。
            使用 finally ,这个方法还是比较容易接受一些,try/catch/finally组合除了可以释放资源外还可以捕获异常。
         查了一下资料,MS将连接池也傻瓜了一把(只有使用System.Data.SqlClient包时),除非在 SqlConnection 对象的连接字串中显式指定,否则自动配置连接池。因此在 SqlConnection 对象的使用上应该做到随手关闭的好习惯,呵。


只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问  
 

i am ddm