• 第二天 ado.net, asp.net ,三层笔记


    1. ado.net步骤:
         一:倒入命名空间
          using System.Data;
          using System.Data.sqlclient;
         二:第一个模型 int  ExecuteNonQuery();返回受影响的行数
          准备连接字符串
          准备sql语句
          创建连接对象(sqlconnection)
          创建执行对象 (sqlcommand)
          打开连接
          执行操作
          关闭
        整合:
          string connStr="server=.;database=机器名或ip或实例名;uid=撒;pwd=123(integrated security=true);";
          string sql="";
          int count;
          using(Sqlconnection con=new Sqlconnection(connStr))
         {
               using(SqlCommand cmd=new SQlcommand(sql,con))
              {

                con.open();
                 int count=cmd.ExecuteNonQuery();

              }

         }
    2.连接池
    3.第二个模型
       object ExecuteScalar()  返回查询的第一行第一列的结果。集体的语法和ExecuteNonQuery()基本一样
           string connStr="server=.;database=机器名或ip或实例名;uid=撒;pwd=123(integrated security=true);";
          string sql="";
          object o;
          using(Sqlconnection con=new Sqlconnection(connStr))
         {
               using(SqlCommand cmd=new SQlcommand(sql,con))
              {

                 con.open();
                 object o=cmd.ExecuteScalar();

              }

         }
         ExecuteScalar  一般与聚合函数一起使用
    4.编写三层的步骤:(用年龄自动增长的案例来说)
        1.确定需求
           点击按钮实现年龄自动增加
        2.根据需求确定sql语句
           update Teacher set age=age+1 where id=@id
        3. 编写数据访问层
           3.1 首先编写一个操作特定表的数据访问层的类xxxDAL
               因为有了sql语句,迟早都要执行,所以先编写执行该sql语句的代码。注意 执行sql语句的代码要放在“数据访问层”
               在数据访问层中将来可能要执行很多sql语句,不同的sql语句可能操作不同的表,所以我们要为不同的表建不同的类,在某个类中都是关于操作某张表的sql语句
               SqlHelper放到数据访问层,配置文件放到表现层(UI)
           3.2 编写具体的执行指定sql语句的方法:1->确定方法的参数(一般sql语句里有几个参数那么该方法就有几个参数,如果sql要返回多个值时就要建一个Model对象用来封装某个特定表里面的所有字段,Model不属于任何一层,每个层都可以调用。注意如果有参数就要写SqlParameter[])  2->确定方法的返回值(执行完毕sql语句,数据库返回了什么,那么该方法就原样返回该值,不做任何判断***)
        4.编写业务逻辑层
          4.1 首先编写一个操作特定表的业务逻辑层类xxxBLL
          4.2根据表现层的需求,确定业务访问层类的方法:1->确定方法的参数  2->确定方法的返回值

        5.表现层调用业务层实现功能
    5.        //当一个方法返回值是一个集合的时候,一开始首先New一个集合对象,即便集合里面没有东西也要返回长度为0的集合,不要返回null
             //当一个方法返回值是一个对象的时候,一开始可以声明这个对象,让这个对象等于null,如果查到了数据就给这个对象实例化,最后返回这个对象
    第二部分:ASP.NET
     
    第一块  WebForm(.ashx)
    1.此处的Write()方法里面的文本不会被发送到浏览器输出,因为在这里是用了Redirect(),
      Redirect的内部完全生成一个新的 已规定好的响应报文发给浏览器
      context.Response.Write("删除成功");
      context.Response.Redirect("C02.ashx");  
     2.上传文件是浏览器端:
         如果要上传,就必须设置表单method=post,而且enctype=multipart/form-data,
         一旦设置了enctype="multipart/form-data,那么浏览器生成请求报文的时候,就会生成分隔符
         并且更换请求报文的数据 组织格式(使用分隔符来分开不同HTML表单控件的内容
     2.1上传文件是服务器端:
            //接受文件
             HttpPostedFile file= context.Request.Files[0];
                //判断上传上来的图片还是文本文件
                if(file.ContentLength>0)
                {
                   string filename= System.IO.Path.GetFileName(file.FileName);
                   //保存
                   file.SaveAs(context.Server.MapPath("/upload/" + filename));
                }
                  
    第二块  WebForm(.aspx)
      1.WebForm中 程序员一般在Page_Load中编码(类似于一般处理程序的PR方法)
       2.webForm程序直接可以右键浏览器中查看,而且会自动读取模版
      3. <%--这里的=相当于Response.Write--%>
           <%=sbtrs.ToString() %>
      4.更重要是在WebForm中前台页面可以访问到后台页面类里面受保护的全局变量(***也就是说前台页面是后台页面的子类,因为只有子类才可以访问到父类中受保护的成员***)  
      5.在第一次访问前台页面时会把前台页面编译成一个前台页面类,该类继承与后台页面类,在整个程序加载时先执行PageLoad方法,然后再过五个方法后调用Render方法生成HTML代码,
       所以PageLoad方法里面的内容在页面的最上面  
    第三块
        如何选择ashx和aspx?
            如果要输出大量的 格式化 html代码,则最好选择 aspx。否则,最好选ashx。

           当后台业务出现问题,不想生成 前台页面代码时,可以使用Response.End
           强制当前页面执行结束:立即结束代码运行,也就不再生成前台页面的内容了,
           并 立即输出 已经Response.Write的内容
           Response.End();
      再次提醒:表单提交的是 表单内部 带 name属性的 表单元素(input select textarea)

    第三部分  Cookie

      1.cookie是什么?
       存储在客户端浏览器(客户端硬盘)中的一段数据
    2.cookie的作用:
       保存用户的状态信息。(会话跟踪)cookie的主要作用就是用来保存状态的。因为http协议是无状态的,所以要想保存用户的状态信息,就必须自己来实现,可以通过cookie来实现。

    3.会话跟踪技术:
      cookie
      session
      cookie和session可以实现跨页面保存用户状态。通过跨页面保存用户状态,就可以跟踪用户访问的页面。
    4.ViewState:
      在同一个页面中记录用户状态。(保存用户状态信息)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
    5.cookie的特点:
      1> 保存的数据量大小有限制。(根据浏览器而定)
      2〉cookie可以设置有效期。当把有效期设置为已经过期的日期,那么浏览器就会删除这个cookie
      3〉当cookie比较多的时候,浏览器可以自行决定删除某些cookie
      4〉用户可以直接通过浏览器清楚cookie,所以在程序员编程的时候不要太依赖cookie
      5〉因为cookie是存储在客户端的,所以有安全性问题(不要存储密码)
      6〉cookie是与域名相关的(***很重要***)。所以在下次访问相同域名的网站时,浏览器会自动携带该域名下的cookie一起访问。
      7〉cookie是与浏览器相关的
      8〉cookie中保存数据也是以键值对的方式来保存的。  
      9〉如果写入了两个相同的键的cookie,那么后写入的会覆盖先写入的内容。
      10〉一般情况 设置cookie都必须要设置有效期,否则当关闭浏览器时会立即消失
      11〉可以通过服务器端使用c#语言来写cookie,也可以通过客户端js来写cookie,但是无论使用哪种方式,最终都是通过浏览器来操作cookie   
    6.Cookie的位置有两种
        Cookie是存储在浏览器端缓存里面(无失效时间)或浏览器硬盘里面(有失效时间)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    

    人生的成功不在于拿到一副好牌,而是怎样将坏牌打好。
  • 相关阅读:
    MySQL与PostgreSQL对比
    Elastic Job3.0
    Nacos Config动态刷新值
    clickhouse数据类型
    字符串和整数之间的转换
    STL之优先队列 priority_queue
    c++智能指针
    springcloud gateway: discovery: locator: enabled: true 解释
    工具资源下载链接 webstorm
    技术链接汇总
  • 原文地址:https://www.cnblogs.com/bin521/p/5676833.html
Copyright © 2020-2023  润新知