C#知识点的总结,代码规范,json,ajax ,数据库,cookie,session等等

17 篇文章 0 订阅

1:属性和字段
属性 字段
相同点:都可以进行取值和赋值操作
不同点:1属性中可以封装业务,字段不可以
2属性更加安全
2:元指的是:操作数的个数
一元 ++ --;
二元 + - * / > < >= <= &&且 ||或
&&两者条件都要满足才为真 &&返回一个布尔类型的结果
||两者条件满足一个即为真 ||返回一个布尔类型的结果
!非:注意非运算符 只能作用于布尔类型变量
%模 模运算:两个数相除,得余数。不要整数部分,只要余数部分
三元 语法 X ? Y : Z X代表一个判断表达式 Y Z表示结果 Y表示真的结果 Z表示假的结果
作用三元运算符可以返回一个任意类型的值 值的类型取决于问号?后面的数据类型
优点:可以提高代码的阅读行,并且有效的减少if else逻辑判断 让代码更加简洁
3:分页语句:主要需要注意的问题就是ID不连续的问题(pagesize表示一页显示多少条
pageindex表示当前的页数)
《1》select top pagesize * from 表名where ID not in(select top (pageindex-1)pagesize ID from 表名)
《2》select * from (select ROW_NUMBER() over(order by id asc) as rowNumber, * from 表名)as t
where t.rowNumber between (pageindex-1)pagesize+1 and pageindexpagesize
4:sql语句;
《1》添加语句:insert into table values() insert into table() values()
《2》and且:select * from StudentInfo where Name=‘admin’ and Age=20 and ID=18
《3》or或:select * from StudentInfo where Name=‘admin’ or Age=20 or ID=4
《4》between and 进行区间查询:
select * from StudentInfo where createtime between ‘2019-10-31’ and ‘2019-12-01’
《5》排序 order by asc 升序,desc降序;
select * from dbo.StudentInfo where createtime between ‘2019-10-31’ and ‘2019-12-01’ order by age
《6》模糊查询:1)字段like ‘%张’ 查询最后一个字是张2)字段like ‘张%’ 查询第一个字为张 3)字段like ‘%张%’ 查询带张的,不管是开头的还是结尾的
select * from StudentInfo where Name like ‘%张’
select * from StudentInfo where Name like ‘张%’
select * from StudentInfo where Name like ‘%张%’
《7》–聚合函数count:select COUNT(DistrictID) from S_District
聚合函数查询的结果不在表中存在的,也就是说是数据库统计出来的。
–常用于财务统计中
Max:select max(age) as Num from StudentInfo
Min:select min(age) as Num from StudentInfo
Avg:select avg(age) as Num from StudentInfo
Sum:select sum(age) as Num from StudentInfo
《8》:top N 获取查询结果中的前N条记录
select top 5 * from dbo.StudentInfo
《9》内联合inner join …on… on表示关联的关系
select s.
,(p.ProvinceName+c.CityName+d.DistrictName) as Addr from StudentInfo as s
inner join S_District as d on d.DistrictID=s.DistrictID
inner join S_City as c on c.CityID=d.CityID
inner join S_Province as p on p.ProvinceID=c.ProvinceID

Eg:select s.,d.DistrictName from StudentInfo as s inner join S_District as d on d.DistrictID=s.DistrictID
《10》左联合
select s.
,d.DistrictName from StudentInfo as s left join S_District as d on d.DistrictID=s.DistrictID
《11》右联合(基本不用)
select s.*,d.DistrictName from S_District as d right join StudentInfo as s on d.DistrictID=s.DistrictID
《12》union:合并,重复的只显示一个;union all 合并,重复的会重复显示
–注意:该语句使用非常的苛刻,合并的列数据类型必须一样
-------合并后的列明以第一张表为列名
–union用于将两张表的字段值进行合并,把两个列的数据加在了一起
Eg:select name from StudentInfo union select provinceid from s_province
select provincename as newColunm from s_province union all select name from StudentInfo
5:session
特点:1)存储在服务器上   2)一个页面存入后,整个网站所有页面都可以访问    3状态是会保持
Session失效情况
1执行代码删除 Session.Remove();
2过期
3关闭浏览器 
作用:1保存用户的信息
    2存值
Session的使用:
(1) //存 Session[“Title”] = “HelloWorld”;//声明一个Session名称叫做Title 将HelloWorld内容赋给Session
Session[“Student”] = 1;
(2)//取 string content = Session[“Title”].ToString();
(3)// 清除整个网站的Session Session.Clear();
//清除某一个Session根据名称 //Session.Remove(“Title”);
6:js
(1)js作用:提高浏览器的功能,为浏览器加入更多的特效,交互效果,方便的控制页面的DOM对象(2)Js判空; function checkEmpty()
{
var txt1 = document.getElementById(“txtName”);
if (txt1.value == “”)
{
alert(‘请输入账号’);
return false;//立即中断当前方法
}
}
7:程序的调试
一、C#/.NET调试
1确定哪里出错了?如果不知道哪里出错,就在业务代码的第一步点断点。
2必须使用F5或者点击运行按钮
3当程序执行到你的断点的时候 程序就会被卡死。黄色的条表示到了该行,但是该行代码还没有执行。
4F10逐(行)过程:表示按依次 代码就走一行

F11逐语句:适合调式,当一些方法或属性的背后,存在很多的实现代码的时候,如果你想看里面究竟发生了什么,那么就需要使用逐语句。

常见错误
未将对象引用设置到对象的实例
症状:程序去找了一个对象,但是通过你给的查找方式 没有找到这个对象。
在第0处没有任意行
症状:一般会在数组取值或者ds中取值的时候,DS中很可能是空的 所以取第一行的字段时候会报错。
XXX附近有语法错误
症状:10000%SQL语句

二、js调试
alert()
console.log()
1有一个靠谱的浏览器 谷歌/火狐
2按下F12 先看页面有没有错误
3最终解决方案 设置debugger;
F10逐过程
F11逐语句

VS调出行号
工具-选项-本文编辑器-C# 勾选行号
8:物理路径:E:\    D:\Image 真实保存在磁盘中的路径 \ 反斜杠     1表示路径的深度      2转义字符    \n是计算机中内置的一个命令  \n    作用:上传保存文件使用物理路径。
9:虚拟路径:http://www.baidu.com/img/logo.png   假的,表示是网页中的位置。文件不在访问者计算机中,如果想要,那么需要下载。/ 正斜杠     1表示网页中的路径深度 作用:看文件,看图片使用虚拟路径。
10:相对路径和绝对路径:
优缺点:相对路径路径深度比较少,效率比绝对路径要高。   需要开发者考虑文件的位置。比较简单,不需要知道调用者在哪,只需要关注需要的文件在哪。   效率比较低。

11://字符串
//C#类型 引用类型
string name = “zhangsan”;//字符串
//–字符串的常规操作方法:

        //1字符串可以相加,首位相连。
        string age = "20";
        string result = name + age;
        Response.Write(result+"<br/>");
        
        
        //2字符串的截取:substring()  需要两个参数  1起始位置索引   2长度(可选的,如果不写,那么默认截到尾)
        string picname = "abc.jpg";
        //希望获取picname变量图片扩展名
        string ename = picname.Substring(4);
        Response.Write(ename + "<br/>");
        string picname2 = "/Images/20191101008.jpg";
        //string num = picname2.Substring(16, 3);
        string num = picname2.Substring(picname2.LastIndexOf('.')-3, 3);
        Response.Write(num + "<br/>");
        
        
        //3indexof()获取某一个字符所在的位置第一个出现位置的索引
        ///lastindexof()获取最后一个字符在字符串中所出现的位置
        int index1 = picname2.LastIndexOf('.');
        Response.Write(index1 + "<br/>");
        
        
        //4字符串格式化
        string day = System.DateTime.Now.ToString();
        string dayFormat = System.DateTime.Now.ToString("yyyyMMdd");
        string dayTimeFormat = System.DateTime.Now.ToString("yyyyMMdd HH:mm:ss"); //year  Month day   hour  Minute Second
        Response.Write(day.Substring(0,10) + "<br/>");//千年虫病毒  2000年  194X   1999 12 31  2000  10001-01-01
        Response.Write(dayFormat+ "<br/>");
        Response.Write(dayTimeFormat + "<br/>");
        string number1 = "009";
        int number2 = Convert.ToInt32(number1) + 1;
        Response.Write(number2.ToString("D3") +"<br/>");



        //5验证字符包含方法
        string today = "1102";
        string day1 = "20191120";
        bool resul1=   day1.Contains(today);//把today字符串放入到day1中验证 day1是否包含today
        Response.Write(resul1 + "<br/>");
    

        //6字符串拆分方法Split('字符')
        string namelist = "张三,李四,王五";
        string[] list= namelist.Split(',');
        Response.Write(list[0]+list[1]+list[2]);


        //7字符串长度 
        Response.Write(namelist.Length);

12:ajax
onblur:失去焦点事件
onfocus:获取焦点事件
//ASYNC javascript and xml
function setData() {
//业务思路:
//1当输入结束 失去焦点触发该事件
//2希望发起一个ajax请求 将用户输入的账号发送给服务端
//3希望服务端告诉我这个账号数据库中是否存在
//41)如果存在 那么span显示 2)如果不存在 那么就不显示
//获取用户输入的内容
var name = document.getElementById(“txtAccout”).value;
//如果要做AJAX需要干点啥?
//1创建一个xmlhttprequest对象
//2让对象去进行访问 .open() .send()
//3判断对象的状态和访问的服务器状态
//知识点:XMLHttpRequest对象 异步请求对象
//创建核心对象变量
var xmlhttp = null;
//创建xmlhttprequest对象,这个对象的作用就是通过它来进行ajax访问的。
if (window.XMLHttpRequest) {// code for Firefox, Opera, IE7, etc.
xmlhttp = new XMLHttpRequest();//创建一个对象
} else if (window.ActiveXObject) {// code for IE6, IE5
xmlhttp = new ActiveXObject(“Microsoft.XMLHTTP”); //创建对象
}
//xmlhttprequest对象存在5种状态
//0 1 2 3 4 除了4意外都是出错了。
xmlhttp.onreadystatechange = function () {
//xmlhttp.readyState == 4确保对象能够正常执行任务
//xmlhttp.status == 200 http状态码
//如果对象创建成功 并且要访问的后台也是正常的 那么异步访问到此就结束,等待后台给我的结果
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
//…回调函数
//responseText用来获取服务端返回的结果 即我们要的true和false
var result = xmlhttp.responseText;
if (result == “true”) {
document.getElementById(“sp1”).style.display = “none”;
}
else {
//账号不能用
document.getElementById(“sp1”).style.display = “block”;

                }
            }
        }
        //open设置请求方式和请求路径
        xmlhttp.open("get", "AjaxChildDemo.aspx?name=" + name + "");
        //send发送
        xmlhttp.send();
        //总结:
        //1用户输入结束后,触发一个JS事件
        //2创建一个xmlhttprequest对象,携带验证信息访问服务端(.NET程序)
        //3等待服务端返回结果
        //4根据结果进行业务逻辑判断
    }

13:
public void ProcessRequest(HttpContext context)//请求上下文对象:所有页面的请求部分都在context对象下
{
//通过分页的sql语句,将数据查询到。
//接收当前页数
int pageindex = Convert.ToInt32(context.Request[“pageindex”]);
DataSet ds = SqlDbHelper.Query(@“select * from (select ROW_NUMBER() over(order by ProvinceID asc) as rowNumber, * from S_Province)as t
where t.rowNumber between (” + pageindex + “-1)10+1 and " + pageindex + “10");
if (ds.Tables[0].Rows.Count > 0)
{
//字符串 table tr td
//string str = “

”;
StringBuilder str = new StringBuilder();//创建一个可变长的字符串类
str.Append(“”);
str.Append(“”);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
//取出当前遍历行的ID列和省份名列的值
//拼成一个tr
str.Append(“”);
}
str.Append(“
主键省份名称
” + ds.Tables[0].Rows[i][“ProvinceID”] + “” + ds.Tables[0].Rows[i][“ProvinceName”] + “
”);//table
//计算一下总页数是几?
//总条数/pagesize(10)
DataSet dsCount = SqlDbHelper.Query(“select * from s_province”);
var count = 0;
//30/10=3 34/10=3
if (dsCount.Tables[0].Rows.Count % 10 == 0)
{
//如果没有余数 页数=总条数/pagesize
count = dsCount.Tables[0].Rows.Count / 10;
}
//如果有余数 页数=总条数/pagesize+1;
else
{
count = dsCount.Tables[0].Rows.Count / 10 + 1;
}
str.Append("”);//table
str.Append(count);//table count
str.Append("
”);
//分页的页脚
str.Append(“此页” + ds.Tables[0].Rows.Count + “条 当前在” + pageindex + “/” + count + “页 共” + count + “页”);//table countfooter
context.Response.Write(str.ToString());
}
14:JSON
轻量级:约束性低,简单。
数据传输:作用是用来进行数据交换的。
格式:格式约定。
JSON的格式:
JSON的常见格式一:
{“key”:“value”}最简单的json格式 花括号包裹表示这是一个JSON对象 通过键值对进行组合 key:value 键和值必须用双引号包裹
{“key1”:“value1”,“key2”:“value2”…}这是具有多个键值的对象
常见格式二:
[{“Name”:“张三”,“Age”:“18”,“Address”:“河南”},{“Name”:“李四”,“Age”:“20”,“Address”:“河北”}] 一个JSON中包含多个对象,对象和对象之间用逗号隔开
常见格式三:
在对象中,某一个属性所对应的值是一个列表/集合/数组
{“Name”:“张三”,“Age”:“18”,“Address”:“河南”,“BookList”:[{“BookName”:“js”},{“BookName”:“c#”}]}
15:序列化,反序列化;
序列化:将对象转化为可供传输的数据格式。
反序列化:将可供传输的数据格式转化为对象。
常用的数据传输格式有两种:JSON和XML

17:

// 页面传值:
QueryString(URL传值)
Session:存储再服务器上,一个页面存入 整个网站所有页面都可以获取。 用户会话存入。
Cookie:用来在客户端进行数据保存的。客户端指的是我们的浏览器。
作用:
1编程人员用来存值
2浏览器缓存

    缺点:既然是存储在客户端的,那么安全问题就是由客户端解决,所以就导致安全度较低。
    建议:不要将特别重要的数据存入到cookie中

18:protected void Button1_Click(object sender, EventArgs e)
{
//.NET对cookie操作进行了封装
HttpCookie cookie = new HttpCookie(“DotnetCookie”);//创建一个cookie名字叫dotnet
//赋值
cookie.Value = “123”;
cookie.Expires = System.DateTime.Now.AddHours(24);//设置有效期
Response.Cookies.Add(cookie);//response服务器要求客户端干事 request服务器接收客户端的东西
//Request.Cookies
}
protected void Button2_Click(object sender, EventArgs e)
{
//因为此时取值,值在客户端上,服务器要是想要客户端的东西需要使用request
HttpCookie cookie = Request.Cookies[“DotnetCookie”];//取cookie
if (cookie != null)
{
Response.Write(cookie.Name + “/” + cookie.Value);
}
}
protected void Button3_Click(object sender, EventArgs e)
{
//先拿到客户端上的cookie 然后改一下有效期,命令客户端重新存一个cookie把原来的覆盖掉
//拿客户端的cookie
HttpCookie cookie = Request.Cookies[“DotnetCookie”];
//重新设置有效期
cookie.Expires = System.DateTime.Now.AddMilliseconds(-1);
//重新保存cookie覆盖原有cookie
Response.Cookies.Add(cookie);
}
19:代码规范是非常非常重要的。
两套标准
1驼峰命名法 name nameAndStudent
首个单词首字母小写,其他的单词首字母大写
2帕斯卡 Name NameAndStudent
所有单词的首字母都大写

.NET代码规范(系统内置的对象都是遵循帕斯卡)
变量命名:要有意义,短
Int age
String name
String studentname studentName StudentName

String SelectQueryLanguageConnectionStringAddress=”XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX”;
String sqlconn=”XXXXXXXXXXXXXXXXXXXXXXXXXX”

类、方法、属性命名:要有意义,短 帕斯卡命名

控件命名:
ASP.NET WEBFORM框架下的所有控件 微软都有统一的命名规则
Button btn-* btnLogin btnExit btnInsert
CheckBox cbx-* cbxAll cbxChild
DropDownList ddl-* ddlcity ddlPro
LinkButton lbtn-*
TextBox txt–*
Label lb-*
RadioButton rbtn-*
Repeater rpt-*
GridView gv-*
Image img-*
Hiddenfield hf-*

内置类的对象名
SqlConnection conn
SqlDataAdapter sda
SqlCommand cmd
DataSet ds

前端js
命名规范,驼峰命名

数据库命名规范
不要使用数据库关键词
库的命名 student studentinfo 有意义
表命名
有意义
m_user
m_user
student
字段命名 有意义 短, userinfo rname age address email
主键在生产模式下全都是叫id

sql语句:所有关键词大写 其他的非关键词根据用户定义的大小写
SELECT * FROM StudentInfo 1
select * from studentinfo 2
存储过程
触发器
事务
游标
视图
索引

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值