第二天 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是存储在浏览器端缓存里面(无失效时间)或浏览器硬盘里面(有失效时间)
第二天 ado.net, asp.net ,三层笔记的更多相关文章
- [.NET 4.5] ADO.NET / ASP.NET 使用 Async 和 Await 异步 存取数据库
此为文章备份,原文出处(我的网站) [.NET 4.5] ADO.NET / ASP.NET 使用 Async 和 Await 异步 存取数据库 http://www.dotblogs.com.tw ...
- Asp.Net 三层架构之泛型应用
一说到三层架构,我想大家都了解,这里就简单说下,Asp.Net三层架构一般包含:UI层.DAL层.BLL层,其中每层由Model实体类来传递,所以Model也算是三层架构之一了,例外为了数据库的迁移或 ...
- ADO.NET Entity Framework学习笔记(3)ObjectContext
ADO.NET Entity Framework学习笔记(3)ObjectContext对象[转] 说明 ObjectContext提供了管理数据的功能 Context操作数据 AddObject ...
- 2强类型DataSet (2011-12-30 23:16:59)转载▼ 标签: 杂谈 分类: Asp.Net练习笔记 http://blog.sina.com.cn/s/blog_9d90c4140101214w.html
强类型DataSet (2011-12-30 23:16:59) 转载▼ 标签: 杂谈 分类: Asp.Net练习笔记 using System; using System.Collections.G ...
- 强类型DataSet (2011-12-30 23:16:59)转载▼ 标签: 杂谈 分类: Asp.Net练习笔记 http://blog.sina.com.cn/s/blog_9d90c4140101214w.html
强类型DataSet (2011-12-30 23:16:59) 转载▼ 标签: 杂谈 分类: Asp.Net练习笔记 using System; using System.Collections.G ...
- ASP.NET学习笔记(3)——用户增删改查(三层)
说明(2017-10-6 11:21:58): 1. 十一放假在家也没写几行代码,本来还想着利用假期把asp.net看完,结果天天喝酒睡觉,回去的票也没买到,惨.. 2. 断断续续的把用户信息的页面写 ...
- ASP.NET三层架构的分析
BLL 是业务逻辑层 Business Logic Layer DAL 是数据访问层 Data Access Layer ASP.NET的三层架构(DAL,BLL,UI ...
- 新闻公布系统 (Asp.net 三层架构 )
2012年度课程设计---新闻公布系统(小结) ...
- asp.netmvc 三层搭建一个完整的项目
接下来用 asp.net mvc 三层搭建一个完整的项目: 架构图: 使用的数据库: 一张公司的员工信息表,测试数据 解决方案项目设计: 1.新建一个空白解决方案名称为Company 2.在该解决方案 ...
随机推荐
- react学习小结(生命周期- 实例化时期 - 存在期- 销毁时期)
react学习小结 本文是我学习react的阶段性小结,如果看官你是react资深玩家,那么还请就此打住移步他处,如果你想给一些建议和指导,那么还请轻拍~ 目前团队内对react的使用非常普遍,之 ...
- 初学者对于MVC架构模式学习与理解
理解MVC的工作原理,明白一个网页是如何显示出来的 之前一直盲目的在慕课上看视频,脑袋里想着要理解mvc,看了mvc相关的视频,看完之后就觉得空白白的,M,V,C各代表什么我知道,但是这个究竟有啥意思 ...
- hud 5876 2016 ACM/ICPC Asia Regional Dalian Online
题意:给一个图 给定一个点s 求补图中s点到达各个点的最短路 思路:从s点开始bfs 在图中与s点有连接的都是在补图中不能直接到达的点 反之在补图中都是可以直接到达的点 由此bfs ((( 诡异的写法 ...
- js模版引擎handlebars.js实用教程——为什么选择Handlebars.js
返回目录 据小菜了解,对于java开发,涉及到页面展示时,比较主流的有两种解决方案: 1. struts2+vo+el表达式. 这种方式,重点不在于struts2,而是vo和el表达式,其基本思想是: ...
- 错误信息:attempt to create saveOrUpdate event with null entity
错误信息:attempt to create saveOrUpdate event with null entity; 这个错误网上答案比较多,我也不多说了. 我遇到的问题是在前台传过来的参数是nul ...
- ps 文字处理篇
ps文字处理篇 1.对文字镂空处理并且移除到新图像上: 首先创建图层-文字编辑-横排编辑 其次 魔棒工具选择通过颜色来选择选区 右击图层-栅格化图层 删除键将选择的颜色删除留下选区- 复制粘贴到另一个 ...
- Go语言配置与开发环境配置
1.首先下载go的运行时 http://golang.org/dl/ 下载windows 的zip版本,解压到硬盘上的一个位置 2.设置环境变量如下 GOBIN %GOROOT%\bin //go的 ...
- 读取bmp图片数据
public void getBMPImage(String source) throws Exception { clearNData(); //清除数据保存区 FileInputStream fs ...
- 使用 PHP 过滤器(Filter)进行严格表单验证
PHP 过滤器(Filter)用于验证和过滤来自非安全来源的数据,比如用户的输入,使用过滤器扩展可以使数据过滤更轻松快捷.要求的 PHP 版本是 PHP 5 >= 5.2.0,PHP 7 和 F ...
- 关于java建立的的包import的问题
之前修改classpath后,import自己写的包,用IDEA运行一直不通过,现在还没解决.... 是classpath修改不对,还是IDEA的问题? 哎,没有解决,只是在同一目录下才能用 不再纠结 ...